| // Tests lookup and mangling of local types |
| |
| // RUN: rm -rf %t && mkdir -p %t |
| // RUN: %target-swiftc_driver -v -emit-module -module-name LocalTypes -o %t/LocalTypes.swiftmodule %s |
| // RUN: %target-swift-ide-test -print-local-types -I %t -module-to-print LocalTypes -source-filename %s | %FileCheck %s |
| |
| public func singleFunc() { |
| // CHECK-DAG: VF10LocalTypes10singleFuncFT_T_L_16SingleFuncStruct |
| struct SingleFuncStruct { |
| let sfsi: Int |
| } |
| // CHECK-DAG: CF10LocalTypes10singleFuncFT_T_L_15SingleFuncClass |
| class SingleFuncClass { |
| let sfcs: String |
| init(s: String) { |
| self.sfcs = s |
| } |
| } |
| // CHECK-DAG: OF10LocalTypes10singleFuncFT_T_L_14SingleFuncEnum |
| enum SingleFuncEnum { |
| case SFEI(Int) |
| } |
| } |
| |
| public func singleFuncWithDuplicates(_ fake: Bool) { |
| if fake { |
| // CHECK-DAG: VF10LocalTypes24singleFuncWithDuplicatesFSbT_L_16SingleFuncStruct |
| struct SingleFuncStruct { |
| let sfsi: Int |
| } |
| // CHECK-DAG: CF10LocalTypes24singleFuncWithDuplicatesFSbT_L_15SingleFuncClass |
| class SingleFuncClass { |
| let sfcs: String |
| init(s: String) { |
| self.sfcs = s |
| } |
| } |
| // CHECK-DAG: OF10LocalTypes24singleFuncWithDuplicatesFSbT_L_14SingleFuncEnum |
| enum SingleFuncEnum { |
| case SFEI(Int) |
| } |
| } else { |
| // CHECK-DAG: VF10LocalTypes24singleFuncWithDuplicatesFSbT_L0_16SingleFuncStruct |
| struct SingleFuncStruct { |
| let sfsi: Int |
| } |
| // CHECK-DAG: CF10LocalTypes24singleFuncWithDuplicatesFSbT_L0_15SingleFuncClass |
| class SingleFuncClass { |
| let sfcs: String |
| init(s: String) { |
| self.sfcs = s |
| } |
| } |
| // CHECK-DAG: OF10LocalTypes24singleFuncWithDuplicatesFSbT_L0_14SingleFuncEnum |
| enum SingleFuncEnum { |
| case SFEI(Int) |
| } |
| } |
| } |
| |
| public let singleClosure: () -> () = { |
| // CHECK-DAG: VF10LocalTypesU_FT_T_L_19SingleClosureStruct |
| struct SingleClosureStruct { |
| let scsi: Int |
| } |
| // CHECK-DAG: CF10LocalTypesU_FT_T_L_18SingleClosureClass |
| class SingleClosureClass { |
| let sccs: String |
| init(s: String) { |
| self.sccs = s |
| } |
| } |
| // CHECK-DAG: OF10LocalTypesU_FT_T_L_17SingleClosureEnum |
| enum SingleClosureEnum { |
| case SCEI(Int) |
| } |
| } |
| |
| public var singlePattern: Int { |
| // CHECK-DAG: VF10LocalTypesg13singlePatternSiL_19SinglePatternStruct |
| struct SinglePatternStruct { |
| let spsi: Int |
| } |
| // CHECK-DAG: CF10LocalTypesg13singlePatternSiL_18SinglePatternClass |
| class SinglePatternClass { |
| let spcs: String |
| init(s: String) { |
| self.spcs = s |
| } |
| } |
| // CHECK-DAG: OF10LocalTypesg13singlePatternSiL_17SinglePatternEnum |
| enum SinglePatternEnum { |
| case SPEI(Int) |
| } |
| return 2 |
| } |
| |
| public func singleDefaultArgument(i i: Int = { |
| //CHECK-DAG: VFIF10LocalTypes21singleDefaultArgumentFT1iSi_T_A_U_FT_SiL_27SingleDefaultArgumentStruct |
| struct SingleDefaultArgumentStruct { |
| let sdasi: Int |
| } |
| // CHECK-DAG: CFIF10LocalTypes21singleDefaultArgumentFT1iSi_T_A_U_FT_SiL_26SingleDefaultArgumentClass |
| class SingleDefaultArgumentClass { |
| let sdacs: String |
| init(s: String) { |
| self.sdacs = s |
| } |
| } |
| // CHECK-DAG: OFIF10LocalTypes21singleDefaultArgumentFT1iSi_T_A_U_FT_SiL_25SingleDefaultArgumentEnum |
| enum SingleDefaultArgumentEnum { |
| case SDAEI(Int) |
| } |
| |
| return 2 |
| |
| }()){ |
| print(i) |
| } |
| |
| public func doubleFunc() { |
| func innerFunc() { |
| // CHECK-DAG: VFF10LocalTypes10doubleFuncFT_T_L_9innerFuncFT_T_L_16DoubleFuncStruct |
| struct DoubleFuncStruct { |
| let dfsi: Int |
| } |
| // CHECK-DAG: CFF10LocalTypes10doubleFuncFT_T_L_9innerFuncFT_T_L_15DoubleFuncClass |
| class DoubleFuncClass { |
| let dfcs: String |
| init(s: String) { |
| self.dfcs = s |
| } |
| } |
| // CHECK-DAG: OFF10LocalTypes10doubleFuncFT_T_L_9innerFuncFT_T_L_14DoubleFuncEnum |
| enum DoubleFuncEnum { |
| case DFEI(Int) |
| } |
| } |
| innerFunc() |
| } |
| |
| public let doubleClosure: () -> () = { |
| let singleClosure: () -> () = { |
| // CHECK-DAG: VFF10LocalTypesU0_FT_T_U_FT_T_L_19DoubleClosureStruct |
| struct DoubleClosureStruct { |
| let dcsi: Int |
| } |
| // CHECK-DAG: CFF10LocalTypesU0_FT_T_U_FT_T_L_18DoubleClosureClass |
| class DoubleClosureClass { |
| let dccs: String |
| init(s: String) { |
| self.dccs = s |
| } |
| } |
| // CHECK-DAG: OFF10LocalTypesU0_FT_T_U_FT_T_L_17DoubleClosureEnum |
| enum DoubleClosureEnum { |
| case DCEI(Int) |
| } |
| } |
| singleClosure() |
| } |
| |
| @_transparent |
| public func transparentFunc() { |
| // CHECK-DAG: VF10LocalTypes15transparentFuncFT_T_L_21TransparentFuncStruct |
| struct TransparentFuncStruct { |
| let tfsi: Int |
| } |
| // CHECK-DAG: CF10LocalTypes15transparentFuncFT_T_L_20TransparentFuncClass |
| class TransparentFuncClass { |
| let tfcs: String |
| init(s: String) { |
| self.tfcs = s |
| } |
| } |
| // CHECK-DAG: OF10LocalTypes15transparentFuncFT_T_L_19TransparentFuncEnum |
| enum TransparentFuncEnum { |
| case TFEI(Int) |
| } |
| } |