mirror of
https://github.com/apple/swift.git
synced 2025-12-21 12:14:44 +01:00
Modify IRGen to emit “anonymous” string constants with names of the form `@.str.<len>.<contents>` (with a special mangling for internal `\0` characters). This makes it much easier to write IRGen tests that check for the contents of strings, because matching the constant name also implies that the constant has the expected content.
42 lines
1.5 KiB
Plaintext
42 lines
1.5 KiB
Plaintext
// RUN: %target-swift-frontend -emit-ir %s > %t.ir
|
|
// %FileCheck --input-file %t.ir %s
|
|
// RUN: %target-swift-frontend -emit-ir -enable-anonymous-context-mangled-names %s > %t.anon.ir
|
|
// RUN: %FileCheck --input-file %t.anon.ir %s -check-prefix CHECK-MANGLED
|
|
|
|
import Builtin
|
|
import Swift
|
|
|
|
protocol P { }
|
|
|
|
class Blah<T: P> {
|
|
private struct Inner<U: P> { }
|
|
}
|
|
|
|
// Mangled name of the anonymous descriptor
|
|
// CHECK-NOT: private constant [84 x i8] c"$s29anonymous_context_descriptors4BlahC5Inner33_4F495173994818481DD703D65EB08308LLV\00"
|
|
// CHECK-MANGLED: @".str.83.$s29anonymous_context_descriptors4BlahC5Inner33_4F495173994818481DD703D65EB08308LLV" = private constant [84 x i8] c"$s29anonymous_context_descriptors4BlahC5Inner33_4F495173994818481DD703D65EB08308LLV\00"
|
|
|
|
// Anonymous descriptor
|
|
// CHECK: @"$s29anonymous_context_descriptors4BlahC5Inner33{{.*}}MXX" =
|
|
// CHECK-MANGLED: @"$s29anonymous_context_descriptors4BlahC5Inner33{{.*}}MXX" =
|
|
|
|
// Flags: anonymous (2) + generic (0x80) + unique (0x40)
|
|
// CHECK-SAME: i32 194
|
|
|
|
// Flags: anonymous (2) + generic (0x80) + unique (0x40) + has mangled name (0x10000)
|
|
// CHECK-MANGLED-SAME: i32 65730
|
|
|
|
// Parent
|
|
// CHECK-SAME: $s29anonymous_context_descriptors4BlahCMn
|
|
// CHECK-MANGLED-SAME: $s29anonymous_context_descriptors4BlahCMn
|
|
|
|
// # generic header
|
|
// CHECK-SAME: i16 2, i16 2
|
|
// CHECK-SAME: i16 4, i16 0
|
|
|
|
// CHECK-MANGLED-SAME: i16 2, i16 2
|
|
// CHECK-MANGLED-SAME: i16 4, i16 0
|
|
|
|
// # mangled name
|
|
// CHECK-MANGLED-SAME: @".str.83.$s29anonymous_context_descriptors4BlahC5Inner33_4F495173994818481DD703D65EB08308LLV"
|