Skip to content

Commit e7a2102

Browse files
committed
[ASTGen] Generate UnresolvedSpecializeExpr
1 parent 834d98d commit e7a2102

File tree

3 files changed

+37
-3
lines changed

3 files changed

+37
-3
lines changed

include/swift/AST/ASTBridging.h

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1342,6 +1342,13 @@ BridgedForcedCheckedCastExpr BridgedForcedCheckedCastExpr_createParsed(
13421342
BridgedASTContext cContext, BridgedSourceLoc cAsLoc,
13431343
BridgedSourceLoc cExclaimLoc, BridgedTypeRepr cType);
13441344

1345+
SWIFT_NAME("BridgedUnresolvedSpecializeExpr.createParsed(_:subExpr:lAngleLoc:"
1346+
"arguments:rAngleLoc:)")
1347+
BridgedUnresolvedSpecializeExpr BridgedUnresolvedSpecializeExpr_createParsed(
1348+
BridgedASTContext cContext, BridgedExpr cSubExpr,
1349+
BridgedSourceLoc cLAngleLoc, BridgedArrayRef cArguments,
1350+
BridgedSourceLoc cRAngleLoc);
1351+
13451352
SWIFT_NAME("BridgedInOutExpr.createParsed(_:loc:subExpr:)")
13461353
BridgedInOutExpr BridgedInOutExpr_createParsed(BridgedASTContext cContext,
13471354
BridgedSourceLoc cLoc,

lib/AST/Bridging/ExprBridging.cpp

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -228,7 +228,17 @@ BridgedForcedCheckedCastExpr BridgedForcedCheckedCastExpr_createParsed(
228228
cType.unbridged());
229229
}
230230

231-
SWIFT_NAME("InOutExpr.createParsed(_:loc:subExpr:)")
231+
BridgedUnresolvedSpecializeExpr BridgedUnresolvedSpecializeExpr_createParsed(
232+
BridgedASTContext cContext, BridgedExpr cSubExpr,
233+
BridgedSourceLoc cLAngleLoc, BridgedArrayRef cArguments,
234+
BridgedSourceLoc cRAngleLoc) {
235+
236+
ASTContext &context = cContext.unbridged();
237+
return UnresolvedSpecializeExpr::create(
238+
cContext.unbridged(), cSubExpr.unbridged(), cLAngleLoc.unbridged(),
239+
cArguments.unbridged<TypeRepr *>(), cRAngleLoc.unbridged());
240+
}
241+
232242
BridgedInOutExpr BridgedInOutExpr_createParsed(BridgedASTContext cContext,
233243
BridgedSourceLoc cLoc,
234244
BridgedExpr cSubExpr) {

lib/ASTGen/Sources/ASTGen/Exprs.swift

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -117,8 +117,8 @@ extension ASTGenVisitor {
117117
break
118118
case .functionCallExpr(let node):
119119
return self.generate(functionCallExpr: node).asExpr
120-
case .genericSpecializationExpr:
121-
break
120+
case .genericSpecializationExpr(let node):
121+
return self.generate(genericSpecializationExpr: node).asExpr
122122
case .ifExpr(let node):
123123
return self.generate(ifExpr: node).asExpr
124124
case .inOutExpr(let node):
@@ -476,6 +476,23 @@ extension ASTGenVisitor {
476476
}
477477
}
478478

479+
func generate(genericSpecializationExpr node: GenericSpecializationExprSyntax) -> BridgedUnresolvedSpecializeExpr {
480+
let base = self.generate(expr: node.expression)
481+
let generics = node.genericArgumentClause
482+
let lAngleLoc = self.generateSourceLoc(generics.leftAngle)
483+
let genericArguments = generics.arguments.lazy.map {
484+
self.generate(type: $0.argument)
485+
}
486+
let rAngleLoc = self.generateSourceLoc(generics.rightAngle)
487+
return .createParsed(
488+
self.ctx,
489+
subExpr: base,
490+
lAngleLoc: lAngleLoc,
491+
arguments: genericArguments.bridgedArray(in: self),
492+
rAngleLoc: rAngleLoc
493+
)
494+
}
495+
479496
func generate(packElementExpr node: PackElementExprSyntax) -> BridgedPackElementExpr {
480497
return .createParsed(
481498
self.ctx,

0 commit comments

Comments
 (0)