| // RUN: %target-sil-opt %s -module-name WitnessTableWithGP | %FileCheck %s |
| |
| // REQUIRES: disabled |
| // FIXME: <rdar://problem/20592011> |
| // test/SIL/Parser/witness_with_inherited_gp.sil depends on stdlib |
| // implementation details and was XFAIL'ed |
| |
| import Swift |
| |
| public struct mmEnumerateGenerator< |
| Base: GeneratorType |
| > : GeneratorType, Sequence { |
| public typealias Element = (index: Int, element: Base.Element) |
| var base: Base |
| var count: Int |
| |
| public init(_ base: Base) |
| public mutating func next() -> Element? |
| public typealias Generator = mmEnumerateGenerator<Base> |
| public func makeIterator() -> Generator |
| } |
| |
| public struct mmEnumerateSequence< |
| Base: Sequence |
| > : Sequence { |
| var base: Base |
| public init(_ base: Base) |
| public func makeIterator() -> mmEnumerateGenerator<Base.Generator> |
| } |
| |
| // CHECK: sil_witness_table <Base where Base : Sequence, Base.Generator : GeneratorType> mmEnumerateSequence<Base>: _Sequence_Type module WitnessTableWithGP { |
| // CHECK: base_protocol _SequenceType: <Base where Base : Sequence, Base.Generator : GeneratorType> mmEnumerateSequence<Base>: _SequenceType module WitnessTableWithGP |
| // CHECK: associated_type Generator: mmEnumerateGenerator<Base.Generator> |
| // CHECK: associated_type_protocol (Generator: GeneratorType): mmEnumerateGenerator<Base.Generator>: specialize <Base = Base.Generator, Base.Element = Base.Generator.Element> (<Base where Base : GeneratorType> mmEnumerateGenerator<Base>: GeneratorType module WitnessTableWithGP) |
| sil_witness_table <Base : Sequence> mmEnumerateSequence<Base>: _Sequence_Type module WitnessTableWithGP { |
| base_protocol _SequenceType: <Base : Sequence> mmEnumerateSequence<Base>: _SequenceType module WitnessTableWithGP |
| associated_type Generator: mmEnumerateGenerator<Base.Generator> |
| associated_type_protocol (Generator: GeneratorType): mmEnumerateGenerator<Base.Generator>: specialize <Base = Base.Generator, Base.Element = Base.Generator.Element> (<Base : GeneratorType> mmEnumerateGenerator<Base>: GeneratorType module WitnessTableWithGP) |
| } |
| |
| public struct _mmArrayBuffer<T> : Collection { |
| public typealias Element = T |
| public var startIndex: Int { get } |
| public var endIndex: Int { get } |
| public subscript(i: Int) -> T { get } |
| public func makeIterator() -> IndexingIterator<_mmArrayBuffer> |
| } |
| |
| sil_witness_table <T> _mmArrayBuffer<T>: _Sequence_Type module WitnessTableWithGP { |
| base_protocol _SequenceType: <T> _mmArrayBuffer<T>: _SequenceType module WitnessTableWithGP |
| associated_type Generator: IndexingIterator<_mmArrayBuffer<T>> |
| associated_type_protocol (Generator: GeneratorType): IndexingIterator<_mmArrayBuffer<T>>: specialize <C = _mmArrayBuffer<T>, C.Index = Int, C.Index.Distance = Int, C.Index.Distance.IntegerLiteralType = Int, C.Index._DisabledRangeIndex = Int, C._Element = T> (<C : _CollectionType> IndexingIterator<C>: GeneratorType module Swift) |
| } |
| |
| // CHECK: sil_witness_table <T> _mmArrayBuffer<T>: _Sequence_Type module WitnessTableWithGP { |
| // CHECK: base_protocol _SequenceType: <T> _mmArrayBuffer<T>: _SequenceType module WitnessTableWithGP |
| // CHECK: associated_type Generator: IndexingIterator<_mmArrayBuffer<T>> |
| // CHECK: associated_type_protocol (Generator: GeneratorType): |
| // IndexingIterator<_mmArrayBuffer<T>>: specialize <C = _mmArrayBuffer<T>, |
| // C.Index = Int, C.Index.Distance = Int, C.Index.Distance.IntegerLiteralType |
| // = Int, C.Index._DisabledRangeIndex = Int, C._Element = T> (<C where |
| // C : _CollectionType, C.Index : ForwardIndex, C.Index.Distance : _SignedInteger, C.Index.Distance.IntegerLiteralType : _ExpressibleByBuiltinIntegerLiteral> IndexingIterator<C>: GeneratorType module Swift) |