@@ -535,15 +535,26 @@ extension ASTGenVisitor {
535
535
)
536
536
}
537
537
538
- func generate( macroExpansionExpr node: MacroExpansionExprSyntax ) -> BridgedMacroExpansionExpr {
538
+ struct FreestandingMacroExpansionInfo {
539
+ var poundLoc : BridgedSourceLoc
540
+ var macroNameRef : BridgedDeclNameRef
541
+ var macroNameLoc : BridgedDeclNameLoc
542
+ var leftAngleLoc : BridgedSourceLoc
543
+ var genericArgs : BridgedArrayRef
544
+ var rightAngleLoc : BridgedSourceLoc
545
+ var arguments : BridgedNullableArgumentList
546
+ }
547
+
548
+ func generate( freestandingMacroExpansion node: some FreestandingMacroExpansionSyntax ) -> FreestandingMacroExpansionInfo {
549
+ let poundLoc = self . generateSourceLoc ( node. pound)
539
550
let nameLoc = self . generateIdentifierAndSourceLoc ( node. macroName)
540
551
541
552
let leftAngleLoc : BridgedSourceLoc
542
553
let genericArgs : [ BridgedTypeRepr ]
543
554
let rightAngleLoc : BridgedSourceLoc
544
555
if let generics = node. genericArgumentClause {
545
556
leftAngleLoc = self . generateSourceLoc ( generics. leftAngle)
546
- genericArgs = generics. arguments. lazy . map {
557
+ genericArgs = generics. arguments. map {
547
558
self . generate ( type: $0. argument)
548
559
}
549
560
rightAngleLoc = self . generateSourceLoc ( generics. rightAngle)
@@ -566,15 +577,28 @@ extension ASTGenVisitor {
566
577
arguments = nil
567
578
}
568
579
569
- return . createParsed(
570
- self . declContext,
571
- poundLoc: self . generateSourceLoc ( node. pound) ,
580
+ return FreestandingMacroExpansionInfo (
581
+ poundLoc: poundLoc,
572
582
macroNameRef: . createParsed( . createIdentifier( nameLoc. identifier) ) ,
573
583
macroNameLoc: . createParsed( nameLoc. sourceLoc) ,
574
584
leftAngleLoc: leftAngleLoc,
575
585
genericArgs: genericArgs. lazy. bridgedArray ( in: self ) ,
576
586
rightAngleLoc: rightAngleLoc,
577
- args: arguments. asNullable
587
+ arguments: arguments. asNullable
588
+ )
589
+ }
590
+
591
+ func generate( macroExpansionExpr node: MacroExpansionExprSyntax ) -> BridgedMacroExpansionExpr {
592
+ let info = self . generate ( freestandingMacroExpansion: node)
593
+ return . createParsed(
594
+ self . declContext,
595
+ poundLoc: info. poundLoc,
596
+ macroNameRef: info. macroNameRef,
597
+ macroNameLoc: info. macroNameLoc,
598
+ leftAngleLoc: info. leftAngleLoc,
599
+ genericArgs: info. genericArgs,
600
+ rightAngleLoc: info. rightAngleLoc,
601
+ args: info. arguments
578
602
)
579
603
}
580
604
0 commit comments