Skip to content

Commit c90768f

Browse files
committed
[ASTGen] Fix NamedOpaqueReturnTypeRepr
Generic parameter list was missing
1 parent c2146af commit c90768f

File tree

4 files changed

+19
-10
lines changed

4 files changed

+19
-10
lines changed

include/swift/AST/ASTBridging.h

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2732,10 +2732,11 @@ BridgedTupleTypeRepr BridgedTupleTypeRepr_createParsed(
27322732
BridgedASTContext cContext, BridgedArrayRef elements,
27332733
BridgedSourceLoc cLParenLoc, BridgedSourceLoc cRParenLoc);
27342734

2735-
SWIFT_NAME("BridgedNamedOpaqueReturnTypeRepr.createParsed(_:base:)")
2736-
BridgedNamedOpaqueReturnTypeRepr
2737-
BridgedNamedOpaqueReturnTypeRepr_createParsed(BridgedASTContext cContext,
2738-
BridgedTypeRepr baseTy);
2735+
SWIFT_NAME(
2736+
"BridgedNamedOpaqueReturnTypeRepr.createParsed(_:base:genericParamList:)")
2737+
BridgedNamedOpaqueReturnTypeRepr BridgedNamedOpaqueReturnTypeRepr_createParsed(
2738+
BridgedASTContext cContext, BridgedTypeRepr baseTy,
2739+
BridgedGenericParamList genericParams);
27392740

27402741
SWIFT_NAME("BridgedOpaqueReturnTypeRepr.createParsed(_:someKeywordLoc:base:)")
27412742
BridgedOpaqueReturnTypeRepr

lib/AST/Bridging/TypeReprBridging.cpp

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -293,11 +293,12 @@ BridgedFunctionTypeRepr BridgedFunctionTypeRepr_createParsed(
293293
resultType.unbridged());
294294
}
295295

296-
BridgedNamedOpaqueReturnTypeRepr
297-
BridgedNamedOpaqueReturnTypeRepr_createParsed(BridgedASTContext cContext,
298-
BridgedTypeRepr baseTy) {
296+
BridgedNamedOpaqueReturnTypeRepr BridgedNamedOpaqueReturnTypeRepr_createParsed(
297+
BridgedASTContext cContext, BridgedTypeRepr baseTy,
298+
BridgedGenericParamList genericParams) {
299299
ASTContext &context = cContext.unbridged();
300-
return new (context) NamedOpaqueReturnTypeRepr(baseTy.unbridged(), nullptr);
300+
return new (context)
301+
NamedOpaqueReturnTypeRepr(baseTy.unbridged(), genericParams.unbridged());
301302
}
302303

303304
BridgedOpaqueReturnTypeRepr

lib/ASTGen/Sources/ASTGen/Types.swift

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -266,8 +266,9 @@ extension ASTGenVisitor {
266266
}
267267

268268
func generate(namedOpaqueReturnType node: NamedOpaqueReturnTypeSyntax) -> BridgedNamedOpaqueReturnTypeRepr {
269+
let genericParams = self.generate(genericParameterClause: node.genericParameterClause)
269270
let baseTy = generate(type: node.type)
270-
return .createParsed(self.ctx, base: baseTy)
271+
return .createParsed(self.ctx, base: baseTy, genericParamList: genericParams)
271272
}
272273

273274
func generate(someOrAnyType node: SomeOrAnyTypeSyntax) -> BridgedTypeRepr {

test/ASTGen/types.swift

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,19 @@
11
// RUN: %empty-directory(%t)
22

33
// RUN: %target-swift-frontend-dump-parse -enable-experimental-feature ParserASTGen \
4+
// RUN: -enable-experimental-feature NamedOpaqueTypes \
45
// RUN: | %sanitize-address > %t/astgen.ast
56
// RUN: %target-swift-frontend-dump-parse \
7+
// RUN: -enable-experimental-feature NamedOpaqueTypes \
68
// RUN: | %sanitize-address > %t/cpp-parser.ast
79

810
// RUN: %diff -u %t/astgen.ast %t/cpp-parser.ast
911

10-
// RUN: %target-typecheck-verify-swift -enable-experimental-feature ParserASTGen
12+
// RUN: %target-typecheck-verify-swift -enable-experimental-feature ParserASTGen \
13+
// RUN: -enable-experimental-feature NamedOpaqueTypes
1114

1215
// REQUIRES: swift_feature_ParserASTGen
16+
// REQUIRES: swift_feature_NamedOpaqueTypes
1317

1418
// rdar://116686158
1519
// UNSUPPORTED: asan
@@ -73,3 +77,5 @@ typealias TestSpecifierAndAttr<T> = (__owned @Sendable @escaping () async -> T)
7377

7478
let globalOptionalInt: _? = 42
7579
let optionalIntArray: Array<_> = [42]
80+
81+
func testNamedOpaqueReturnTy() -> <T> T { return () }

0 commit comments

Comments
 (0)