Skip to content

Commit 33be0be

Browse files
committed
Ensure that we only open existential arguments to functions/subscripts.
1 parent deab0b9 commit 33be0be

File tree

2 files changed

+7
-2
lines changed

2 files changed

+7
-2
lines changed

lib/Sema/CSSimplify.cpp

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1338,6 +1338,10 @@ shouldOpenExistentialCallArgument(
13381338
if (!callee)
13391339
return None;
13401340

1341+
// Only applies to functions and subscripts.
1342+
if (!isa<AbstractFunctionDecl>(callee) && !isa<SubscriptDecl>(callee))
1343+
return None;
1344+
13411345
// Special semantics prohibit opening existentials.
13421346
switch (TypeChecker::getDeclTypeCheckingSemantics(callee)) {
13431347
case DeclTypeCheckingSemantics::OpenExistential:
@@ -1390,8 +1394,8 @@ shouldOpenExistentialCallArgument(
13901394

13911395
// Ensure that the formal parameter is only used in covariant positions,
13921396
// because it won't match anywhere else.
1393-
auto genericSig = callee->getAsGenericContext()->getGenericSignatureOfContext()
1394-
.getCanonicalSignature();
1397+
auto genericSig = callee->getInnermostDeclContext()
1398+
->getGenericSignatureOfContext().getCanonicalSignature();
13951399
auto referenceInfo = findGenericParameterReferences(
13961400
callee, genericSig, genericParam,
13971401
/*treatNonResultCovarianceAsInvariant=*/false,

test/Constraints/result_builder_availability.swift

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
// RUN: %target-typecheck-verify-swift -target %target-cpu-apple-macosx10.50
2+
// RUN: %target-typecheck-verify-swift -target %target-cpu-apple-macosx10.50 -enable-experimental-opened-existential-types
23

34
// REQUIRES: OS=macosx
45

0 commit comments

Comments
 (0)