blob: 551a8533a9e69403362e260e5f4044c225d294e9 [file] [log] [blame]
// RUN: %target-swift-frontend %s -emit-ir
public protocol ObservableType {
associatedtype E
}
public protocol SubjectType : ObservableType {
associatedtype SubjectObserverType : ObserverType
}
extension ObservableType {
public func multicast<S: SubjectType>(_ subject: S) -> Observable<S.E> {
while true {}
}
}
extension ObservableType {
public func publish() -> Observable<E> {
return self.multicast(PublishSubject())
}
}
public class Observable<Element> : ObservableType {
public typealias E = Element
}
public protocol ObserverType {
associatedtype E
}
public final class PublishSubject<Element> : Observable<Element>, SubjectType, ObserverType
{
public typealias SubjectObserverType = PublishSubject<Element>
}