|
6 | 6 | // RUN: %target-swift-frontend -load-plugin-library %t/%target-library-name(MacroDefinition) %s -module-name Macros -emit-module -emit-module-path %t/Macros.swiftmodule -emit-symbol-graph -emit-symbol-graph-dir %t/
|
7 | 7 | // RUN: %{python} -m json.tool %t/Macros.symbols.json %t/Macros.formatted.symbols.json
|
8 | 8 |
|
9 |
| -// Make sure that the `= #externalMacro(...)` doesn't show up in declaration fragments and in names fragments. |
| 9 | +// Make sure that the `= #externalMacro(...)` doesn't show up in declaration fragments and in names |
| 10 | +// fragments, and also that macros with no parameters get the `()` in their name. |
10 | 11 |
|
11 | 12 | // RUN: %FileCheck %s --input-file %t/Macros.formatted.symbols.json
|
12 | 13 | // RUN: %FileCheck %s --input-file %t/Macros.formatted.symbols.json --check-prefix NAMES
|
| 14 | +// RUN: %FileCheck %s --input-file %t/Macros.formatted.symbols.json --check-prefix TITLE |
13 | 15 |
|
| 16 | +// Now do the same thing with a `swift-symbolgraph-extract`-processed symbol graph. |
| 17 | + |
| 18 | +// RUN: %empty-directory(%t) |
| 19 | +// RUN: %host-build-swift -swift-version 5 -emit-library -o %t/%target-library-name(MacroDefinition) -module-name=MacroDefinition %S/Inputs/stringify_macro.swift -g -no-toolchain-stdlib-rpath -swift-version 5 |
| 20 | +// RUN: %target-swift-frontend -load-plugin-library %t/%target-library-name(MacroDefinition) %s -module-name Macros -emit-module -emit-module-path %t/Macros.swiftmodule |
| 21 | +// RUN: %target-swift-symbolgraph-extract -module-name Macros -I %t -pretty-print -output-dir %t |
| 22 | + |
| 23 | +// RUN: %FileCheck %s --input-file %t/Macros.symbols.json |
| 24 | +// RUN: %FileCheck %s --input-file %t/Macros.symbols.json --check-prefix NAMES |
| 25 | +// RUN: %FileCheck %s --input-file %t/Macros.symbols.json --check-prefix TITLE |
14 | 26 |
|
15 | 27 | @freestanding(expression) public macro stringify<T>(_ value: T) -> (T, String) = #externalMacro(module: "MacroDefinition", type: "StringifyMacro")
|
16 | 28 |
|
| 29 | +@freestanding(expression) public macro stringifySeven() -> (Int, String) = #stringify(7) |
| 30 | + |
| 31 | +// Note that type parameters don't have reference USRs when loading from serialized AST, so the |
| 32 | +// following declaration/names dumps are edited to handle both situations. |
| 33 | + |
| 34 | +// CHECK-LABEL: "precise": "s:6Macros9stringifyyx_SStxclufm", |
17 | 35 | // CHECK: "declarationFragments": [
|
18 | 36 | // CHECK-NEXT: {
|
19 | 37 | // CHECK-NEXT: "kind": "attribute",
|
|
65 | 83 | // CHECK-NEXT: },
|
66 | 84 | // CHECK-NEXT: {
|
67 | 85 | // CHECK-NEXT: "kind": "typeIdentifier",
|
68 |
| -// CHECK-NEXT: "spelling": "T", |
69 |
| -// CHECK-NEXT: "preciseIdentifier": "s:6Macros1TL_xmfp" |
70 |
| -// CHECK-NEXT: }, |
| 86 | +// CHECK-NEXT: "spelling": "T" |
| 87 | +// CHECK: }, |
71 | 88 | // CHECK-NEXT: {
|
72 | 89 | // CHECK-NEXT: "kind": "text",
|
73 | 90 | // CHECK-NEXT: "spelling": ") -> ("
|
74 | 91 | // CHECK-NEXT: },
|
75 | 92 | // CHECK-NEXT: {
|
76 | 93 | // CHECK-NEXT: "kind": "typeIdentifier",
|
77 |
| -// CHECK-NEXT: "spelling": "T", |
78 |
| -// CHECK-NEXT: "preciseIdentifier": "s:6Macros1TL_xmfp" |
79 |
| -// CHECK-NEXT: }, |
| 94 | +// CHECK-NEXT: "spelling": "T" |
| 95 | +// CHECK: }, |
80 | 96 | // CHECK-NEXT: {
|
81 | 97 | // CHECK-NEXT: "kind": "text",
|
82 | 98 | // CHECK-NEXT: "spelling": ", "
|
|
92 | 108 | // CHECK-NEXT: }
|
93 | 109 | // CHECK-NEXT: ],
|
94 | 110 |
|
| 111 | +// NAMES-LABEL: "precise": "s:6Macros9stringifyyx_SStxclufm", |
95 | 112 | // NAMES: "names": {
|
96 | 113 | // NAMES-NEXT: "title": "stringify(_:)",
|
97 | 114 | // NAMES-NEXT: "subHeading": [
|
|
121 | 138 | // NAMES-NEXT: },
|
122 | 139 | // NAMES-NEXT: {
|
123 | 140 | // NAMES-NEXT: "kind": "typeIdentifier",
|
124 |
| -// NAMES-NEXT: "spelling": "T", |
125 |
| -// NAMES-NEXT: "preciseIdentifier": "s:6Macros1TL_xmfp" |
126 |
| -// NAMES-NEXT: }, |
| 141 | +// NAMES-NEXT: "spelling": "T" |
| 142 | +// NAMES: }, |
127 | 143 | // NAMES-NEXT: {
|
128 | 144 | // NAMES-NEXT: "kind": "text",
|
129 | 145 | // NAMES-NEXT: "spelling": ") -> ("
|
130 | 146 | // NAMES-NEXT: },
|
131 | 147 | // NAMES-NEXT: {
|
132 | 148 | // NAMES-NEXT: "kind": "typeIdentifier",
|
133 |
| -// NAMES-NEXT: "spelling": "T", |
134 |
| -// NAMES-NEXT: "preciseIdentifier": "s:6Macros1TL_xmfp" |
135 |
| -// NAMES-NEXT: }, |
| 149 | +// NAMES-NEXT: "spelling": "T" |
| 150 | +// NAMES: }, |
136 | 151 | // NAMES-NEXT: {
|
137 | 152 | // NAMES-NEXT: "kind": "text",
|
138 | 153 | // NAMES-NEXT: "spelling": ", "
|
|
148 | 163 | // NAMES-NEXT: }
|
149 | 164 | // NAMES-NEXT: ]
|
150 | 165 | // NAMES-NEXT: },
|
| 166 | + |
| 167 | +// TITLE-LABEL: "precise": "s:6Macros14stringifySevenSi_SStycfm", |
| 168 | +// TITLE: "title": "stringifySeven()", |
0 commit comments