Skip to content

Commit a15fddc

Browse files
committed
Fix the macro test to use its own macro instead of relying on DebugDescription.
1 parent 415fe04 commit a15fddc

File tree

3 files changed

+31
-7
lines changed

3 files changed

+31
-7
lines changed
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
import SwiftSyntax
2+
import SwiftSyntaxBuilder
3+
import SwiftSyntaxMacros
4+
5+
struct MemberInjectingMacro: MemberMacro {
6+
public static func expansion(
7+
of node: AttributeSyntax,
8+
providingMembersOf decl: some DeclGroupSyntax,
9+
conformingTo protocols: [TypeSyntax],
10+
in context: some MacroExpansionContext
11+
) throws -> [DeclSyntax] {
12+
let member: DeclSyntax =
13+
"""
14+
private var _macroInjectedMember: String = ""
15+
"""
16+
17+
return [member]
18+
}
19+
}
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
@attached(member, names: named(_macroInjectedMember))
2+
public macro InjectMember() = #externalMacro(module: "MacroDefinition", type: "MemberInjectingMacro")

test/Frontend/ast-dump-json-macros.swift

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3,15 +3,18 @@
33

44
// REQUIRES: swift_swift_parser
55

6-
// RUN: %target-swift-frontend -target %target-swift-5.9-abi-triple -disable-availability-checking -plugin-path %swift-plugin-dir -parse-as-library -dump-ast -dump-ast-format json %s -module-name main -o - | %FileCheck %s
6+
// RUN: %empty-directory(%t)
7+
// 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
8+
// 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)
9+
// 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
710

8-
@DebugDescription
11+
import json_ast_macro_library
12+
13+
@InjectMember
914
struct X {
1015
var y: Int
11-
12-
var debugDescription: String {
13-
"y is \(y)"
14-
}
1516
}
1617

17-
// CHECK: "buffer_id":"@__swiftmacro_
18+
// CHECK: "_kind":"pattern_binding_decl"
19+
// CHECK-SAME: "buffer_id":"@__swiftmacro_4main1X12InjectMemberfMm_.swift"
20+
// CHECK-SAME: "name":"_macroInjectedMember"

0 commit comments

Comments
 (0)