[ASTGen] Fix NamedOpaqueReturnTypeRepr

Generic parameter list was missing
This commit is contained in:
Rintaro Ishizaki
2025-03-16 14:59:43 -07:00
parent c2146af60f
commit c90768f36e
4 changed files with 19 additions and 10 deletions

View File

@@ -2732,10 +2732,11 @@ BridgedTupleTypeRepr BridgedTupleTypeRepr_createParsed(
BridgedASTContext cContext, BridgedArrayRef elements,
BridgedSourceLoc cLParenLoc, BridgedSourceLoc cRParenLoc);
SWIFT_NAME("BridgedNamedOpaqueReturnTypeRepr.createParsed(_:base:)")
BridgedNamedOpaqueReturnTypeRepr
BridgedNamedOpaqueReturnTypeRepr_createParsed(BridgedASTContext cContext,
BridgedTypeRepr baseTy);
SWIFT_NAME(
"BridgedNamedOpaqueReturnTypeRepr.createParsed(_:base:genericParamList:)")
BridgedNamedOpaqueReturnTypeRepr BridgedNamedOpaqueReturnTypeRepr_createParsed(
BridgedASTContext cContext, BridgedTypeRepr baseTy,
BridgedGenericParamList genericParams);
SWIFT_NAME("BridgedOpaqueReturnTypeRepr.createParsed(_:someKeywordLoc:base:)")
BridgedOpaqueReturnTypeRepr

View File

@@ -293,11 +293,12 @@ BridgedFunctionTypeRepr BridgedFunctionTypeRepr_createParsed(
resultType.unbridged());
}
BridgedNamedOpaqueReturnTypeRepr
BridgedNamedOpaqueReturnTypeRepr_createParsed(BridgedASTContext cContext,
BridgedTypeRepr baseTy) {
BridgedNamedOpaqueReturnTypeRepr BridgedNamedOpaqueReturnTypeRepr_createParsed(
BridgedASTContext cContext, BridgedTypeRepr baseTy,
BridgedGenericParamList genericParams) {
ASTContext &context = cContext.unbridged();
return new (context) NamedOpaqueReturnTypeRepr(baseTy.unbridged(), nullptr);
return new (context)
NamedOpaqueReturnTypeRepr(baseTy.unbridged(), genericParams.unbridged());
}
BridgedOpaqueReturnTypeRepr

View File

@@ -266,8 +266,9 @@ extension ASTGenVisitor {
}
func generate(namedOpaqueReturnType node: NamedOpaqueReturnTypeSyntax) -> BridgedNamedOpaqueReturnTypeRepr {
let genericParams = self.generate(genericParameterClause: node.genericParameterClause)
let baseTy = generate(type: node.type)
return .createParsed(self.ctx, base: baseTy)
return .createParsed(self.ctx, base: baseTy, genericParamList: genericParams)
}
func generate(someOrAnyType node: SomeOrAnyTypeSyntax) -> BridgedTypeRepr {

View File

@@ -1,15 +1,19 @@
// RUN: %empty-directory(%t)
// RUN: %target-swift-frontend-dump-parse -enable-experimental-feature ParserASTGen \
// RUN: -enable-experimental-feature NamedOpaqueTypes \
// RUN: | %sanitize-address > %t/astgen.ast
// RUN: %target-swift-frontend-dump-parse \
// RUN: -enable-experimental-feature NamedOpaqueTypes \
// RUN: | %sanitize-address > %t/cpp-parser.ast
// RUN: %diff -u %t/astgen.ast %t/cpp-parser.ast
// RUN: %target-typecheck-verify-swift -enable-experimental-feature ParserASTGen
// RUN: %target-typecheck-verify-swift -enable-experimental-feature ParserASTGen \
// RUN: -enable-experimental-feature NamedOpaqueTypes
// REQUIRES: swift_feature_ParserASTGen
// REQUIRES: swift_feature_NamedOpaqueTypes
// rdar://116686158
// UNSUPPORTED: asan
@@ -73,3 +77,5 @@ typealias TestSpecifierAndAttr<T> = (__owned @Sendable @escaping () async -> T)
let globalOptionalInt: _? = 42
let optionalIntArray: Array<_> = [42]
func testNamedOpaqueReturnTy() -> <T> T { return () }