- Notifications
You must be signed in to change notification settings - Fork 10.5k
/
Copy pathast-dump-json-macros.swift
54 lines (47 loc) · 3.09 KB
/
ast-dump-json-macros.swift
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
// Checks that macro-expanded members are dumped and that their source ranges
// contain the appropriate buffer ID.
// REQUIRES: swift_swift_parser
// RUN: %empty-directory(%t)
// RUN: %host-build-swift -swift-version 5 -emit-library -o %t/%target-library-name(MacroDefinition) -module-name=MacroDefinition %S/Inputs/json_ast_macro_definitions.swift -g -no-toolchain-stdlib-rpath
// RUN: %target-swift-frontend -swift-version 5 -emit-module -o %t/json_ast_macro_library.swiftmodule %S/Inputs/json_ast_macro_library.swift -module-name json_ast_macro_library -load-plugin-library %t/%target-library-name(MacroDefinition)
// RUN: %target-swift-frontend -target %target-swift-5.9-abi-triple -I %t -load-plugin-library %t/%target-library-name(MacroDefinition) -parse-as-library -dump-ast -dump-ast-format json %s -module-name main -o - | %FileCheck %s
import json_ast_macro_library
@InjectMember
structX{
vary:Int
}
// CHECK: "_kind":"struct_decl",
// CHECK-SAME: "usr":"s:4main1XV",
// CHECK-SAME: "_kind":"custom_attr",
// CHECK-SAME: "macro":{"_kind":"decl_ref","base_name":"InjectMember","decl_usr":"s:22json_ast_macro_library12InjectMemberyycfm","type_usr":"$syycD"}
// CHECK-SAME: "_kind":"pattern_binding_decl"
// CHECK-SAME: "buffer_id":"@__swiftmacro_4main1X12InjectMemberfMm_.swift"
// CHECK-SAME: "name":"_macroInjectedMember"
structZ{
#injectFreestanding
}
// NOTE: For freestanding members (as opposed to top-level), we get the expanded
// decl before we see the MacroExpansionDecl.
// CHECK-SAME: "_kind":"struct_decl",
// CHECK-SAME: "usr":"s:4main1ZV20FixedNameFreestanderV",
// CHECK-SAME: "buffer_id":"@__swiftmacro_4main0033astdumpjsonmacrosswift_GwAFheaeGafMX{{[0-9]+}}_{{[0-9]+}}_33_{{[0-9A-F]+}}Ll18injectFreestandingfMf_.swift"
// CHECK-SAME: "_kind":"macro_expansion_decl",
// CHECK-SAME: "auxiliary_decl_usrs":["s:4main1ZV20FixedNameFreestanderV"]
// CHECK-SAME: "macro":{"_kind":"decl_ref","base_name":"injectFreestanding","decl_usr":"s:22json_ast_macro_library18injectFreestandingyycfm","type_usr":"$syycD"}
@InjectPeer
structThisWillBePeered{}
// CHECK-SAME: "_kind":"struct_decl",
// CHECK-SAME: "usr":"s:4main16ThisWillBePeeredV",
// CHECK-SAME: "auxiliary_decl_usrs":["s:4main13FixedNamePeerV"],
// CHECK-SAME: "_kind":"custom_attr",
// CHECK-SAME: "macro":{"_kind":"decl_ref","base_name":"InjectPeer","decl_usr":"s:22json_ast_macro_library10InjectPeeryycfm","type_usr":"$syycD"}
// CHECK-SAME: "_kind":"struct_decl",
// CHECK-SAME: "usr":"s:4main13FixedNamePeerV",
// CHECK-SAME: "buffer_id":"@__swiftmacro_4main16ThisWillBePeered10InjectPeerfMp_.swift"
#injectFreestanding
// CHECK-SAME: "_kind":"macro_expansion_decl",
// CHECK-SAME: "auxiliary_decl_usrs":["s:4main20FixedNameFreestanderV"],
// CHECK-SAME: "macro":{"_kind":"decl_ref","base_name":"injectFreestanding","decl_usr":"s:22json_ast_macro_library18injectFreestandingyycfm","type_usr":"$syycD"}
// CHECK-SAME: "_kind":"struct_decl",
// CHECK-SAME: "usr":"s:4main20FixedNameFreestanderV",
// CHECK-SAME: "buffer_id":"@__swiftmacro_4main0033astdumpjsonmacrosswift_GwAFheaeGafMX{{[0-9]+}}_{{[0-9]+}}_33_{{[0-9A-F]+}}Ll18injectFreestandingfMf_.swift"