blob: 62505f0a20c4717be3a2b387e030b6559c5721c9 [file] [log] [blame]
// Tests lookup and mangling of local types
// RUN: rm -rf %t && mkdir %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)
}
}