Skip to content

Commit 64e5af9

Browse files
committed
[ASTGen] Generate MacroDecl
1 parent b8db9d4 commit 64e5af9

File tree

3 files changed

+48
-3
lines changed

3 files changed

+48
-3
lines changed

include/swift/AST/ASTBridging.h

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -980,6 +980,16 @@ BridgedAssociatedTypeDecl BridgedAssociatedTypeDecl_createParsed(
980980
BridgedNullableTypeRepr opaqueDefaultType,
981981
BridgedNullableTrailingWhereClause genericWhereClause);
982982

983+
SWIFT_NAME(
984+
"BridgedMacroDecl.createParsed(_:declContext:macroKeywordLoc:name:nameLoc:"
985+
"genericParamList:paramList:arrowLoc:resultType:definition:)")
986+
BridgedMacroDecl BridgedMacroDecl_createParsed(
987+
BridgedASTContext cContext, BridgedDeclContext cDeclContext,
988+
BridgedSourceLoc cMacroLoc, BridgedIdentifier cName,
989+
BridgedSourceLoc cNameLoc, BridgedNullableGenericParamList cGenericParams,
990+
BridgedParameterList cParams, BridgedSourceLoc cArrowLoc,
991+
BridgedNullableTypeRepr cResultType, BridgedNullableExpr cDefinition);
992+
983993
SWIFT_NAME("BridgedMacroExpansionDecl.createParsed(_:poundLoc:macroNameRef:"
984994
"macroNameLoc:leftAngleLoc:genericArgs:rightAngleLoc:args:)")
985995
BridgedMacroExpansionDecl BridgedMacroExpansionDecl_createParsed(

lib/AST/Bridging/DeclBridging.cpp

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -304,6 +304,22 @@ BridgedDestructorDecl_createParsed(BridgedASTContext cContext,
304304
return decl;
305305
}
306306

307+
BridgedMacroDecl BridgedMacroDecl_createParsed(
308+
BridgedASTContext cContext, BridgedDeclContext cDeclContext,
309+
BridgedSourceLoc cMacroLoc, BridgedIdentifier cName,
310+
BridgedSourceLoc cNameLoc, BridgedNullableGenericParamList cGenericParams,
311+
BridgedParameterList cParams, BridgedSourceLoc cArrowLoc,
312+
BridgedNullableTypeRepr cResultType, BridgedNullableExpr cDefinition) {
313+
ASTContext &context = cContext.unbridged();
314+
auto *params = cParams.unbridged();
315+
DeclName fullName = DeclName(context, cName.unbridged(), params);
316+
return new (context)
317+
MacroDecl(cMacroLoc.unbridged(), fullName, cNameLoc.unbridged(),
318+
cGenericParams.unbridged(), params, cArrowLoc.unbridged(),
319+
cResultType.unbridged(), cDefinition.unbridged(),
320+
cDeclContext.unbridged());
321+
}
322+
307323
BridgedTypeAliasDecl BridgedTypeAliasDecl_createParsed(
308324
BridgedASTContext cContext, BridgedDeclContext cDeclContext,
309325
BridgedSourceLoc cAliasKeywordLoc, BridgedIdentifier cName,

lib/ASTGen/Sources/ASTGen/Decls.swift

Lines changed: 22 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ extension ASTGenVisitor {
3131
case .deinitializerDecl(let node):
3232
return self.generate(deinitializerDecl: node).asDecl
3333
case .editorPlaceholderDecl:
34-
break
34+
fatalError("EditorPlaceholderDeclSyntax should not be used")
3535
case .enumCaseDecl(let node):
3636
return self.generate(enumCaseDecl: node).asDecl
3737
case .enumDecl(let node):
@@ -46,8 +46,8 @@ extension ASTGenVisitor {
4646
return self.generate(importDecl: node).asDecl
4747
case .initializerDecl(let node):
4848
return self.generate(initializerDecl: node).asDecl
49-
case .macroDecl:
50-
break
49+
case .macroDecl(let node):
50+
return self.generate(macroDecl: node).asDecl
5151
case .macroExpansionDecl(let node):
5252
return self.generate(macroExpansionDecl: node).asDecl
5353
case .missingDecl:
@@ -620,6 +620,25 @@ extension ASTGenVisitor {
620620
}
621621
}
622622

623+
extension ASTGenVisitor {
624+
func generate(macroDecl node: MacroDeclSyntax) -> BridgedMacroDecl {
625+
let attrs = self.generateDeclAttributes(node, allowStatic: false)
626+
let (name, nameLoc) = self.generateIdentifierAndSourceLoc(node.name)
627+
return .createParsed(
628+
self.ctx,
629+
declContext: self.declContext,
630+
macroKeywordLoc: self.generateSourceLoc(node.macroKeyword),
631+
name: name,
632+
nameLoc: nameLoc,
633+
genericParamList: self.generate(genericParameterClause: node.genericParameterClause),
634+
paramList: self.generate(functionParameterClause: node.signature.parameterClause, forSubscript: false),
635+
arrowLoc: self.generateSourceLoc(node.signature.returnClause?.arrow),
636+
resultType: self.generate(type: node.signature.returnClause?.type),
637+
definition: self.generate(expr: node.definition?.value)
638+
)
639+
}
640+
}
641+
623642
// MARK: - MacroExpansionDecl
624643

625644
extension ASTGenVisitor {

0 commit comments

Comments
 (0)