mirror of
https://github.com/apple/swift.git
synced 2025-12-14 20:36:38 +01:00
Don't open existential arguments to type(of:).
This commit is contained in:
@@ -1338,11 +1338,18 @@ shouldOpenExistentialCallArgument(
|
||||
if (!callee)
|
||||
return None;
|
||||
|
||||
// _openExistential handles its own opening.
|
||||
if (TypeChecker::getDeclTypeCheckingSemantics(callee) ==
|
||||
DeclTypeCheckingSemantics::OpenExistential)
|
||||
// Special semantics prohibit opening existentials.
|
||||
switch (TypeChecker::getDeclTypeCheckingSemantics(callee)) {
|
||||
case DeclTypeCheckingSemantics::OpenExistential:
|
||||
case DeclTypeCheckingSemantics::TypeOf:
|
||||
// type(of:) and _openExistential handle their own opening.
|
||||
return None;
|
||||
|
||||
case DeclTypeCheckingSemantics::Normal:
|
||||
case DeclTypeCheckingSemantics::WithoutActuallyEscaping:
|
||||
break;
|
||||
}
|
||||
|
||||
ASTContext &ctx = callee->getASTContext();
|
||||
if (!ctx.LangOpts.EnableOpenedExistentialTypes)
|
||||
return None;
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
// RUN: %target-typecheck-verify-swift
|
||||
// RUN: %target-typecheck-verify-swift -enable-experimental-opened-existential-types
|
||||
|
||||
protocol P { }
|
||||
|
||||
|
||||
Reference in New Issue
Block a user