[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, BridgedASTContext cContext, BridgedArrayRef elements,
BridgedSourceLoc cLParenLoc, BridgedSourceLoc cRParenLoc); BridgedSourceLoc cLParenLoc, BridgedSourceLoc cRParenLoc);
SWIFT_NAME("BridgedNamedOpaqueReturnTypeRepr.createParsed(_:base:)") SWIFT_NAME(
BridgedNamedOpaqueReturnTypeRepr "BridgedNamedOpaqueReturnTypeRepr.createParsed(_:base:genericParamList:)")
BridgedNamedOpaqueReturnTypeRepr_createParsed(BridgedASTContext cContext, BridgedNamedOpaqueReturnTypeRepr BridgedNamedOpaqueReturnTypeRepr_createParsed(
BridgedTypeRepr baseTy); BridgedASTContext cContext, BridgedTypeRepr baseTy,
BridgedGenericParamList genericParams);
SWIFT_NAME("BridgedOpaqueReturnTypeRepr.createParsed(_:someKeywordLoc:base:)") SWIFT_NAME("BridgedOpaqueReturnTypeRepr.createParsed(_:someKeywordLoc:base:)")
BridgedOpaqueReturnTypeRepr BridgedOpaqueReturnTypeRepr

View File

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

View File

@@ -266,8 +266,9 @@ extension ASTGenVisitor {
} }
func generate(namedOpaqueReturnType node: NamedOpaqueReturnTypeSyntax) -> BridgedNamedOpaqueReturnTypeRepr { func generate(namedOpaqueReturnType node: NamedOpaqueReturnTypeSyntax) -> BridgedNamedOpaqueReturnTypeRepr {
let genericParams = self.generate(genericParameterClause: node.genericParameterClause)
let baseTy = generate(type: node.type) 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 { func generate(someOrAnyType node: SomeOrAnyTypeSyntax) -> BridgedTypeRepr {

View File

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