mirror of
https://github.com/apple/swift.git
synced 2025-12-14 20:36:38 +01:00
148 lines
6.2 KiB
Swift
148 lines
6.2 KiB
Swift
// RUN: %empty-directory(%t)
|
|
// RUN: echo "[MyProto]" > %t/protocols.json
|
|
|
|
// RUN: %target-swift-frontend -typecheck -emit-const-values-path %t/ExtractInterpolatedStringLiterals.swiftconstvalues -const-gather-protocols-file %t/protocols.json -primary-file %s
|
|
// RUN: cat %t/ExtractInterpolatedStringLiterals.swiftconstvalues 2>&1 | %FileCheck %s
|
|
|
|
protocol MyProto {}
|
|
|
|
func generateString(input: String) -> String {
|
|
return "function" + input
|
|
}
|
|
|
|
public struct Internal: MyProto {
|
|
static var internalTitle: String = "Inner title"
|
|
}
|
|
|
|
public struct MyType {
|
|
var nested: NestedOne
|
|
|
|
struct NestedOne {
|
|
var foo: String
|
|
}
|
|
}
|
|
|
|
public struct External: MyProto {
|
|
var interpolatedTitle = "Start Interpolation with Member Reference: \(Internal.internalTitle). Followed By Function Call: \(generateString(input: "test")). End with KeyPath: \(\MyType.nested.foo)."
|
|
}
|
|
|
|
// CHECK: [
|
|
// CHECK-NEXT: {
|
|
// CHECK-NEXT: "typeName": "ExtractInterpolatedStringLiterals.Internal",
|
|
// CHECK-NEXT: "mangledTypeName": "33ExtractInterpolatedStringLiterals8InternalV",
|
|
// CHECK-NEXT: "kind": "struct",
|
|
// CHECK-NEXT: "file": "{{.*}}test{{/|\\\\}}ConstExtraction{{/|\\\\}}ExtractInterpolatedStringLiterals.swift",
|
|
// CHECK-NEXT: "line": 13,
|
|
// CHECK-NEXT: "conformances": [
|
|
// CHECK-NEXT: "ExtractInterpolatedStringLiterals.MyProto"
|
|
// CHECK-NEXT: ],
|
|
// CHECK-NEXT: "allConformances": [
|
|
// CHECK-NEXT: {
|
|
// CHECK-NEXT: "protocolName": "ExtractInterpolatedStringLiterals.MyProto"
|
|
// CHECK-NEXT: "conformanceDefiningModule": "ExtractInterpolatedStringLiterals"
|
|
// CHECK-NEXT: }
|
|
// CHECK-NEXT: ],
|
|
// CHECK-NEXT: "associatedTypeAliases": [],
|
|
// CHECK-NEXT: "properties": [
|
|
// CHECK-NEXT: {
|
|
// CHECK-NEXT: "label": "internalTitle",
|
|
// CHECK-NEXT: "type": "Swift.String",
|
|
// CHECK-NEXT: "mangledTypeName": "n/a - deprecated",
|
|
// CHECK-NEXT: "isStatic": "true",
|
|
// CHECK-NEXT: "isComputed": "false",
|
|
// CHECK-NEXT: "file": "{{.*}}test{{/|\\\\}}ConstExtraction{{/|\\\\}}ExtractInterpolatedStringLiterals.swift",
|
|
// CHECK-NEXT: "line": 14,
|
|
// CHECK-NEXT: "valueKind": "RawLiteral",
|
|
// CHECK-NEXT: "value": "Inner title"
|
|
// CHECK-NEXT: }
|
|
// CHECK-NEXT: ]
|
|
// CHECK-NEXT: },
|
|
// CHECK-NEXT: {
|
|
// CHECK-NEXT: "typeName": "ExtractInterpolatedStringLiterals.External",
|
|
// CHECK-NEXT: "mangledTypeName": "33ExtractInterpolatedStringLiterals8ExternalV",
|
|
// CHECK-NEXT: "kind": "struct",
|
|
// CHECK-NEXT: "file": "{{.*}}test{{/|\\\\}}ConstExtraction{{/|\\\\}}ExtractInterpolatedStringLiterals.swift",
|
|
// CHECK-NEXT: "line": 25,
|
|
// CHECK-NEXT: "conformances": [
|
|
// CHECK-NEXT: "ExtractInterpolatedStringLiterals.MyProto"
|
|
// CHECK-NEXT: ],
|
|
// CHECK-NEXT: "allConformances": [
|
|
// CHECK-NEXT: {
|
|
// CHECK-NEXT: "protocolName": "ExtractInterpolatedStringLiterals.MyProto"
|
|
// CHECK-NEXT: "conformanceDefiningModule": "ExtractInterpolatedStringLiterals"
|
|
// CHECK-NEXT: }
|
|
// CHECK-NEXT: ],
|
|
// CHECK-NEXT: "associatedTypeAliases": [],
|
|
// CHECK-NEXT: "properties": [
|
|
// CHECK-NEXT: {
|
|
// CHECK-NEXT: "label": "interpolatedTitle",
|
|
// CHECK-NEXT: "type": "Swift.String",
|
|
// CHECK-NEXT: "mangledTypeName": "n/a - deprecated",
|
|
// CHECK-NEXT: "isStatic": "false",
|
|
// CHECK-NEXT: "isComputed": "false",
|
|
// CHECK-NEXT: "file": "{{.*}}test{{/|\\\\}}ConstExtraction{{/|\\\\}}ExtractInterpolatedStringLiterals.swift",
|
|
// CHECK-NEXT: "line": 26,
|
|
// CHECK-NEXT: "valueKind": "InterpolatedStringLiteral",
|
|
// CHECK-NEXT: "value": {
|
|
// CHECK-NEXT: "segments": [
|
|
// CHECK-NEXT: {
|
|
// CHECK-NEXT: "valueKind": "RawLiteral",
|
|
// CHECK-NEXT: "value": "Start Interpolation with Member Reference: "
|
|
// CHECK-NEXT: },
|
|
// CHECK-NEXT: {
|
|
// CHECK-NEXT: "valueKind": "MemberReference",
|
|
// CHECK-NEXT: "value": {
|
|
// CHECK-NEXT: "baseType": "ExtractInterpolatedStringLiterals.Internal",
|
|
// CHECK-NEXT: "memberLabel": "internalTitle"
|
|
// CHECK-NEXT: }
|
|
// CHECK-NEXT: },
|
|
// CHECK-NEXT: {
|
|
// CHECK-NEXT: "valueKind": "RawLiteral",
|
|
// CHECK-NEXT: "value": ". Followed By Function Call: "
|
|
// CHECK-NEXT: },
|
|
// CHECK-NEXT: {
|
|
// CHECK-NEXT: "valueKind": "FunctionCall",
|
|
// CHECK-NEXT: "value": {
|
|
// CHECK-NEXT: "name": "generateString",
|
|
// CHECK-NEXT: "arguments": [
|
|
// CHECK-NEXT: {
|
|
// CHECK-NEXT: "label": "input",
|
|
// CHECK-NEXT: "type": "Swift.String",
|
|
// CHECK-NEXT: "valueKind": "RawLiteral",
|
|
// CHECK-NEXT: "value": "test"
|
|
// CHECK-NEXT: }
|
|
// CHECK-NEXT: ]
|
|
// CHECK-NEXT: }
|
|
// CHECK-NEXT: },
|
|
// CHECK-NEXT: {
|
|
// CHECK-NEXT: "valueKind": "RawLiteral",
|
|
// CHECK-NEXT: "value": ". End with KeyPath: "
|
|
// CHECK-NEXT: },
|
|
// CHECK-NEXT: {
|
|
// CHECK-NEXT: "valueKind": "KeyPath",
|
|
// CHECK-NEXT: "value": {
|
|
// CHECK-NEXT: "path": "nested.foo",
|
|
// CHECK-NEXT: "rootType": "ExtractInterpolatedStringLiterals.MyType",
|
|
// CHECK-NEXT: "components": [
|
|
// CHECK-NEXT: {
|
|
// CHECK-NEXT: "label": "nested",
|
|
// CHECK-NEXT: "type": "ExtractInterpolatedStringLiterals.MyType.NestedOne"
|
|
// CHECK-NEXT: },
|
|
// CHECK-NEXT: {
|
|
// CHECK-NEXT: "label": "foo",
|
|
// CHECK-NEXT: "type": "Swift.String"
|
|
// CHECK-NEXT: }
|
|
// CHECK-NEXT: ]
|
|
// CHECK-NEXT: }
|
|
// CHECK-NEXT: },
|
|
// CHECK-NEXT: {
|
|
// CHECK-NEXT: "valueKind": "RawLiteral",
|
|
// CHECK-NEXT: "value": "."
|
|
// CHECK-NEXT: }
|
|
// CHECK-NEXT: ]
|
|
// CHECK-NEXT: }
|
|
// CHECK-NEXT: }
|
|
// CHECK-NEXT: ]
|
|
// CHECK-NEXT: }
|
|
// CHECK-NEXT: ]
|