Skip to content

Commit f48282c

Browse files
committed
[ASTGen] Generate trailing where clause for SubscriptDecl
It was just missing.
1 parent c460947 commit f48282c

File tree

6 files changed

+23
-14
lines changed

6 files changed

+23
-14
lines changed

include/swift/AST/ASTBridging.h

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1568,14 +1568,15 @@ BridgedImportDecl BridgedImportDecl_createParsed(
15681568

15691569
SWIFT_NAME("BridgedSubscriptDecl.createParsed(_:declContext:staticLoc:"
15701570
"staticSpelling:subscriptKeywordLoc:genericParamList:parameterList:"
1571-
"arrowLoc:returnType:)")
1571+
"arrowLoc:returnType:genericWhereClause:)")
15721572
BridgedSubscriptDecl BridgedSubscriptDecl_createParsed(
15731573
BridgedASTContext cContext, BridgedDeclContext cDeclContext,
15741574
BridgedSourceLoc cStaticLoc, BridgedStaticSpelling cStaticSpelling,
15751575
BridgedSourceLoc cSubscriptKeywordLoc,
15761576
BridgedNullableGenericParamList cGenericParamList,
15771577
BridgedParameterList cParamList, BridgedSourceLoc cArrowLoc,
1578-
BridgedTypeRepr returnType);
1578+
BridgedTypeRepr returnType,
1579+
BridgedNullableTrailingWhereClause genericWhereClause);
15791580

15801581
SWIFT_NAME("BridgedTopLevelCodeDecl.create(_:declContext:)")
15811582
BridgedTopLevelCodeDecl

lib/AST/ASTDumper.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2192,6 +2192,7 @@ namespace {
21922192
Label::optional("generic_signature"));
21932193
} else {
21942194
printParsedGenericParams(GC->getParsedGenericParams());
2195+
printWhereRequirements(GC);
21952196
}
21962197
}
21972198

lib/AST/Bridging/DeclBridging.cpp

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -615,12 +615,15 @@ BridgedSubscriptDecl BridgedSubscriptDecl_createParsed(
615615
BridgedSourceLoc cSubscriptKeywordLoc,
616616
BridgedNullableGenericParamList cGenericParamList,
617617
BridgedParameterList cParamList, BridgedSourceLoc cArrowLoc,
618-
BridgedTypeRepr returnType) {
619-
return SubscriptDecl::createParsed(
618+
BridgedTypeRepr returnType,
619+
BridgedNullableTrailingWhereClause genericWhereClause) {
620+
auto *decl = SubscriptDecl::createParsed(
620621
cContext.unbridged(), cStaticLoc.unbridged(), unbridged(cStaticSpelling),
621622
cSubscriptKeywordLoc.unbridged(), cParamList.unbridged(),
622623
cArrowLoc.unbridged(), returnType.unbridged(), cDeclContext.unbridged(),
623624
cGenericParamList.unbridged());
625+
decl->setTrailingWhereClause(genericWhereClause.unbridged());
626+
return decl;
624627
}
625628

626629
BridgedTopLevelCodeDecl

lib/ASTGen/Sources/ASTGen/Decls.swift

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -630,7 +630,8 @@ extension ASTGenVisitor {
630630
genericParamList: self.generate(genericParameterClause: node.genericParameterClause),
631631
parameterList: self.generate(functionParameterClause: node.parameterClause, for: .subscript),
632632
arrowLoc: self.generateSourceLoc(node.returnClause.arrow),
633-
returnType: self.generate(type: node.returnClause.type)
633+
returnType: self.generate(type: node.returnClause.type),
634+
genericWhereClause: self.generate(genericWhereClause: node.genericWhereClause)
634635
)
635636
subscriptDecl.asDecl.attachParsedAttrs(attrs.attributes)
636637

lib/ASTGen/Sources/ASTGen/Stmts.swift

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -148,17 +148,16 @@ extension ASTGenVisitor {
148148
var pat = self.generate(pattern: node.pattern)
149149
let keywordLoc = self.generateSourceLoc(node.bindingSpecifier)
150150
let isLet = node.bindingSpecifier.keywordKind == .let
151-
pat =
152-
BridgedBindingPattern.createParsed(
153-
self.ctx,
154-
keywordLoc: keywordLoc,
155-
isLet: isLet,
156-
subPattern: pat
157-
).asPattern
151+
pat = BridgedBindingPattern.createParsed(
152+
self.ctx,
153+
keywordLoc: keywordLoc,
154+
isLet: isLet,
155+
subPattern: pat
156+
).asPattern
158157

159158
// NOTE: (From the comment in libParse) The let/var pattern is part of the
160-
// statement. But since the statement doesn't have the information. But,
161-
// I'm not sure this should really be implicit.
159+
// statement. But since the statement doesn't have the information, I'm not
160+
// sure this should really be implicit.
162161
pat.setImplicit()
163162

164163
if let typeAnnotation = node.typeAnnotation {

test/ASTGen/decls.swift

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -174,6 +174,10 @@ struct TestSubscripts {
174174
}
175175
set(x) {}
176176
}
177+
178+
subscript<I: Proto3, J: Proto3>(i: I, j: J) -> Int where I.A == J.B {
179+
1
180+
}
177181
}
178182

179183
protocol Proto1 {}

0 commit comments

Comments
 (0)