Files
swift-mirror/test/SILGen/mangling_private.swift
Joe Groff 63463f54ac SIL: Mangle the static-ness of declarations.
This lets us disambiguate the symbols for static and instance properties, and enables us to eventually leave the useless "self" type mangling out of method symbols. Fixes rdar://19012022 and dupes thereof, including crasher #1341.

Swift SVN r25111
2015-02-10 02:37:35 +00:00

67 lines
2.7 KiB
Swift

// RUN: rm -rf %t && mkdir %t
// RUN: %target-swift-frontend -emit-module -o %t %S/Inputs/mangling_private_helper.swift
// RUN: %target-swift-frontend -emit-silgen %S/Inputs/mangling_private_helper.swift | FileCheck %s -check-prefix=CHECK-BASE
// RUN: %target-swift-frontend %s -I %t -emit-silgen | FileCheck %s
// RUN: cp %s %t
// RUN: %target-swift-frontend %t/mangling_private.swift -I %t -emit-silgen | FileCheck %s
// RUN: cp %s %t/other_name.swift
// RUN: %target-swift-frontend %t/other_name.swift -I %t -emit-silgen -module-name mangling_private | FileCheck %s -check-prefix=OTHER-NAME
import mangling_private_helper
// CHECK-LABEL: sil private @_TF16mangling_privateP33_A3CCBB841DB59E79A4AD4EE45865506811privateFuncFT_Si
// OTHER-NAME-LABEL: sil private @_TF16mangling_privateP33_CF726049E48876D30EA29D63CF139F1D11privateFuncFT_Si
private func privateFunc() -> Int {
return 0
}
public struct PublicStruct {
// CHECK-LABEL: sil private @_TZFV16mangling_private12PublicStructP33_A3CCBB841DB59E79A4AD4EE45865506813privateMethodfMS0_FT_T_
private static func privateMethod() {}
}
public struct InternalStruct {
// CHECK-LABEL: sil private @_TZFV16mangling_private14InternalStructP33_A3CCBB841DB59E79A4AD4EE45865506813privateMethodfMS0_FT_T_
private static func privateMethod() {}
}
private struct PrivateStruct {
// CHECK-LABEL: sil private @_TZFV16mangling_privateP33_A3CCBB841DB59E79A4AD4EE45865506813PrivateStruct13privateMethodfMS0_FT_T_
private static func privateMethod() {}
struct Inner {
// CHECK-LABEL: sil private @_TZFVV16mangling_privateP33_A3CCBB841DB59E79A4AD4EE45865506813PrivateStruct5Inner13privateMethodfMS1_FT_T_
private static func privateMethod() {}
}
}
func localTypes() {
struct LocalStruct {
// CHECK-LABEL: sil shared @_TZFVF16mangling_private10localTypesFT_T_L_11LocalStruct13privateMethodfMS0_FT_T_
private static func privateMethod() {}
}
}
extension PublicStruct {
// CHECK-LABEL: sil private @_TFV16mangling_private12PublicStructP33_A3CCBB841DB59E79A4AD4EE45865506816extPrivateMethodfS0_FT_T_
private func extPrivateMethod() {}
}
extension PrivateStruct {
// CHECK-LABEL: sil private @_TFV16mangling_privateP33_A3CCBB841DB59E79A4AD4EE45865506813PrivateStruct16extPrivateMethodfS0_FT_T_
private func extPrivateMethod() {}
}
// CHECK-LABEL: sil_vtable Sub {
class Sub : Base {
// CHECK-BASE: #Base.privateMethod!1: _TFC23mangling_private_helper4BaseP33_0E108371B0D5773E608A345AC52C767413privateMethodfS0_FT_T_
// CHECK-DAG: #Base.privateMethod!1: _TFC23mangling_private_helper4BaseP33_0E108371B0D5773E608A345AC52C767413privateMethodfS0_FT_T_
// CHECK-DAG: #Sub.subMethod!1: _TFC16mangling_private3SubP33_A3CCBB841DB59E79A4AD4EE4586550689subMethodfS0_FT_T_
private func subMethod() {}
} // CHECK: {{^[}]$}}