// RUN: %target-swift-ide-test -print-module -module-to-print=MemberTemplates -I %S/Inputs -source-filename=x -enable-experimental-cxx-interop | %FileCheck %s // CHECK: struct HasMemberTemplates { // CHECK: mutating func addSameTypeParams(_ a: T, _ b: T) -> T // CHECK: mutating func addMixedTypeParams(_ a: T, _ b: U) -> T // CHECK: mutating func addAll(_ a: Int32, _ b: T, _ c: U) -> Int32 // CHECK: mutating func passThrough(_ val: T) -> T // CHECK: mutating func passThroughConst(_ val: T) -> T // CHECK: func passThroughOnConst(_ val: T) -> T // CHECK: func passThroughConstOnConst(_ val: T) -> T // CHECK: mutating func doNothingConstRef(_ val: T) // CHECK: mutating func make42Ref(_ val: inout T) // CHECK: } // CHECK: struct TemplateClassWithMemberTemplates { // CHECK: init(_ val: Int32) // CHECK: var value: Int32 // CHECK: mutating func setValue(_ val: U) // CHECK: } // CHECK: typealias IntWrapper = TemplateClassWithMemberTemplates // CHECK: struct HasStaticMemberTemplates { // CHECK: init() // CHECK: static func add(_ a: T, _ b: T) -> T // CHECK: static func addTwoTemplates(_ a: T, _ b: U) -> T // CHECK: static func removeReference(_ a: inout T) -> T // CHECK: } // CHECK: struct MyTemplatedStruct { // CHECK: init() // CHECK: } // CHECK: struct HasTemplatedField { // CHECK: init(x: MyTemplatedStruct) // CHECK: var x: MyTemplatedStruct // CHECK: } // CHECK: struct HasNestedInstantiation { // CHECK: struct MyNestedTemplatedStruct { // CHECK: } // CHECK: typealias NestedInst = MyTemplatedStruct> // CHECK: } // CHECK: enum NS { // CHECK: struct HasNestedInstantiation { // CHECK: struct MyNestedTemplatedStruct { // CHECK: } // CHECK: typealias NestedInst = MyTemplatedStruct> // CHECK: } // CHECK: } // CHECK: struct HasUninstantiatableTemplateMember> { // CHECK: init(pointer: OpaquePointer!) // CHECK: var pointer: OpaquePointer! // CHECK: } // CHECK: struct HasTemplateInstantiationWithForwardDecl { // CHECK: init(noDefMember: HasUninstantiatableTemplateMember>) // CHECK: var noDefMember: HasUninstantiatableTemplateMember> // CHECK: }