Files
swift-mirror/test/SourceKit/DocSupport/Inputs/cake.swift
Huon Wilson cb60dbeee2 [IDE] Teach type checker about conditional conformance extensions.
Before conditional conformances, the archetypes in conformance
extensions (i.e. extension Foo: SomeProtocol) were equivalent to those
in the type decl, with the same protocol bounds and so on. The code for
printing "synthesized" members relied on this fact. This commit teaches
that code to deal with archetypes in the conditional conformance
extension when required.

Fixes rdar://problem/36553066 and SR-6930.
2018-02-13 17:37:15 +11:00

100 lines
1.6 KiB
Swift

public protocol Prot {
associatedtype Element
var p : Int { get }
func foo()
func foo1()
}
public class C1 : Prot {
public typealias Element = Int
public var p : Int = 0
public func foo() {}
public subscript(index: Int) -> Int { return 0 }
public subscript(index i: Float) -> Int { return 0 }
}
public func genfoo<T1 : Prot, T2 : C1>(x ix: T1, y iy: T2) where T1.Element == Int, T2.Element == T1.Element {}
public extension Prot where Self.Element == Int {
func extfoo() {}
}
public enum MyEnum : Int {
case Blah
}
protocol Prot1 {}
typealias C1Alias = C1
extension C1Alias : Prot1 {}
public extension Prot {
public func foo1() {}
}
public struct S1 {
public enum SE {
case a
case b
case c
}
}
public extension S1 {
public func foo1() {}
public struct S2 {
public let b = 1
}
}
@objc
public protocol P2 {
@objc optional func foo1()
}
public protocol P3 {
associatedtype T
}
public struct S2 : P3 {
public typealias T = S2
}
public extension C1 {
public enum C1Cases : Int {
case case1
}
}
public class C2 : C1 {
public func C2foo() {}
}
public extension Prot {
subscript(index: Int) -> Int { return 0 }
}
public protocol P4 {}
extension C1 : P4 {
public func C1foo() {}
public struct C1S1{
public func C1S1foo(a : P4) {}
}
}
// rdar://problem/36553066
public protocol P5 {
associatedtype Element
}
public protocol P6: P5 {}
extension P6 {
public var null: Element? { return nil }
}
public struct S3<Wrapped: P5>: P5 {
public typealias Element = Wrapped.Element
}
extension S3: P6 where Wrapped: P6 {}