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 {
128
128
case . generated( let generated) :
129
129
return generated
130
130
case . ignored:
131
- // Let regular 'self.generate(expr:)' generate the macro expansions.
132
131
break
133
132
}
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.
134
142
}
135
143
return . expr( self . generate ( expr: node) )
136
144
}
Original file line number Diff line number Diff line change @@ -855,6 +855,21 @@ extension ASTGenVisitor {
855
855
856
856
return decl
857
857
}
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
+
858
873
}
859
874
860
875
// MARK: - OperatorDecl
You can’t perform that action at this time.
0 commit comments