File tree Expand file tree Collapse file tree 2 files changed +24
-1
lines changed
lib/ASTGen/Sources/ASTGen Expand file tree Collapse file tree 2 files changed +24
-1
lines changed Original file line number Diff line number Diff line change @@ -128,9 +128,17 @@ struct ASTGenVisitor {
128128 case . generated( let generated) :
129129 return generated
130130 case . ignored:
131- // Let regular 'self.generate(expr:)' generate the macro expansions.
132131 break
133132 }
133+
134+ // In non-script files, macro expansion at top-level must be a decl.
135+ if !declContext. parentSourceFile. isScriptMode {
136+ return withDeclContext ( parentDC) {
137+ return . decl( self . generateMacroExpansionDecl ( macroExpansionExpr: node) . asDecl)
138+ }
139+ }
140+
141+ // Otherwise, let regular 'self.generate(expr:)' generate the macro expansions.
134142 }
135143 return . expr( self . generate ( expr: node) )
136144 }
Original file line number Diff line number Diff line change @@ -855,6 +855,21 @@ extension ASTGenVisitor {
855855
856856 return decl
857857 }
858+
859+ func generateMacroExpansionDecl( macroExpansionExpr node: MacroExpansionExprSyntax ) -> BridgedMacroExpansionDecl {
860+ let info = self . generate ( freestandingMacroExpansion: node)
861+ return . createParsed(
862+ self . declContext,
863+ poundLoc: info. poundLoc,
864+ macroNameRef: info. macroNameRef,
865+ macroNameLoc: info. macroNameLoc,
866+ leftAngleLoc: info. leftAngleLoc,
867+ genericArgs: info. genericArgs,
868+ rightAngleLoc: info. rightAngleLoc,
869+ args: info. arguments
870+ )
871+ }
872+
858873}
859874
860875// MARK: - OperatorDecl
You can’t perform that action at this time.
0 commit comments