mirror of
https://github.com/apple/swift.git
synced 2025-12-14 20:36:38 +01:00
[ASTGen] Handle trailing where clause in macro declarations
This commit is contained in:
@@ -1602,13 +1602,15 @@ BridgedAssociatedTypeDecl BridgedAssociatedTypeDecl_createParsed(
|
||||
|
||||
SWIFT_NAME(
|
||||
"BridgedMacroDecl.createParsed(_:declContext:macroKeywordLoc:name:nameLoc:"
|
||||
"genericParamList:paramList:arrowLoc:resultType:definition:)")
|
||||
"genericParamList:paramList:arrowLoc:resultType:definition:"
|
||||
"genericWhereClause:)")
|
||||
BridgedMacroDecl BridgedMacroDecl_createParsed(
|
||||
BridgedASTContext cContext, BridgedDeclContext cDeclContext,
|
||||
BridgedSourceLoc cMacroLoc, BridgedIdentifier cName,
|
||||
BridgedSourceLoc cNameLoc, BridgedNullableGenericParamList cGenericParams,
|
||||
BridgedParameterList cParams, BridgedSourceLoc cArrowLoc,
|
||||
BridgedNullableTypeRepr cResultType, BridgedNullableExpr cDefinition);
|
||||
BridgedNullableTypeRepr cResultType, BridgedNullableExpr cDefinition,
|
||||
BridgedNullableTrailingWhereClause genericWhereClause);
|
||||
|
||||
SWIFT_NAME("BridgedMacroExpansionDecl.createParsed(_:poundLoc:macroNameRef:"
|
||||
"macroNameLoc:leftAngleLoc:genericArgs:rightAngleLoc:args:)")
|
||||
|
||||
@@ -290,15 +290,18 @@ BridgedMacroDecl BridgedMacroDecl_createParsed(
|
||||
BridgedSourceLoc cMacroLoc, BridgedIdentifier cName,
|
||||
BridgedSourceLoc cNameLoc, BridgedNullableGenericParamList cGenericParams,
|
||||
BridgedParameterList cParams, BridgedSourceLoc cArrowLoc,
|
||||
BridgedNullableTypeRepr cResultType, BridgedNullableExpr cDefinition) {
|
||||
BridgedNullableTypeRepr cResultType, BridgedNullableExpr cDefinition,
|
||||
BridgedNullableTrailingWhereClause genericWhereClause) {
|
||||
ASTContext &context = cContext.unbridged();
|
||||
auto *params = cParams.unbridged();
|
||||
DeclName fullName = DeclName(context, cName.unbridged(), params);
|
||||
return new (context)
|
||||
auto *decl = new (context)
|
||||
MacroDecl(cMacroLoc.unbridged(), fullName, cNameLoc.unbridged(),
|
||||
cGenericParams.unbridged(), params, cArrowLoc.unbridged(),
|
||||
cResultType.unbridged(), cDefinition.unbridged(),
|
||||
cDeclContext.unbridged());
|
||||
decl->setTrailingWhereClause(genericWhereClause.unbridged());
|
||||
return decl;
|
||||
}
|
||||
|
||||
BridgedTypeAliasDecl BridgedTypeAliasDecl_createParsed(
|
||||
|
||||
@@ -820,9 +820,11 @@ extension ASTGenVisitor {
|
||||
paramList: self.generate(functionParameterClause: node.signature.parameterClause, for: .macro),
|
||||
arrowLoc: self.generateSourceLoc(node.signature.returnClause?.arrow),
|
||||
resultType: self.generate(type: node.signature.returnClause?.type),
|
||||
definition: self.generate(expr: node.definition?.value)
|
||||
definition: self.generate(expr: node.definition?.value),
|
||||
genericWhereClause: self.generate(genericWhereClause: node.genericWhereClause)
|
||||
)
|
||||
decl.asDecl.attachParsedAttrs(attrs.attributes)
|
||||
|
||||
return decl;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -146,3 +146,10 @@ struct S3 {
|
||||
self._x = MyWrapperThingy(storage: x)
|
||||
}
|
||||
}
|
||||
|
||||
protocol MyType {
|
||||
associatedtype Value
|
||||
associatedtype Entity
|
||||
}
|
||||
@attached(peer, names: named(bar))
|
||||
macro Wrapper<Value>(get: (Value.Entity) async throws -> Value.Value) = #externalMacro(module: "MacroDefinition", type: "WrapperMacro") where Value: MyType
|
||||
|
||||
Reference in New Issue
Block a user