Skip to content

Commit b740af4

Browse files
authored
Merge pull request #64114 from DougGregor/macro-add-to-enum-test
2 parents ce823b2 + ba3504a commit b740af4

File tree

2 files changed

+25
-0
lines changed

2 files changed

+25
-0
lines changed

test/Macros/Inputs/syntax_macro_definitions.swift

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1082,3 +1082,17 @@ public struct DelegatedConformanceMacro: ConformanceMacro, MemberMacro {
10821082
return [requirement]
10831083
}
10841084
}
1085+
1086+
public struct ExtendableEnum: MemberMacro {
1087+
public static func expansion(
1088+
of node: AttributeSyntax,
1089+
providingMembersOf declaration: some DeclGroupSyntax,
1090+
in context: some MacroExpansionContext
1091+
) throws -> [DeclSyntax] {
1092+
let unknownDecl: DeclSyntax =
1093+
"""
1094+
func unknown() -> Int { 34 } // or something like: `case unknown`
1095+
"""
1096+
return [unknownDecl]
1097+
}
1098+
}

test/Macros/macro_expand.swift

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -171,6 +171,17 @@ func testNestedDeclInExpr() {
171171
@freestanding(declaration, names: named(A), named(B), named(foo), named(addOne))
172172
macro defineDeclsWithKnownNames() = #externalMacro(module: "MacroDefinition", type: "DefineDeclsWithKnownNamesMacro")
173173

174+
// Macros adding to an enum
175+
@attached(member, names: named(unknown), arbitrary)
176+
public macro ExtendableEnum() = #externalMacro(module: "MacroDefinition", type: "ExtendableEnum")
177+
178+
@ExtendableEnum
179+
enum ElementType {
180+
case paper
181+
}
182+
183+
print(ElementType.paper.unknown())
184+
174185
// FIXME: Declaration macro expansions in BraceStmt don't work yet.
175186
//#bitwidthNumberedStructs("MyIntGlobal")
176187

0 commit comments

Comments
 (0)