[5.7][Sema] Use ExistentialType
for Any
and AnyObject
.
#59657
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Cherry-pick of #41909
Note that the main PR is not merged yet because passing lldb tests depends on an lldb change that has to land on
llvm-project:swift/release/5.7
first.Any
andAnyObject
usingExistentialType
, just like all other existential types. Previously, these two existential types still were modeled withProtocolCompositionType
because they're not required to be written withany
, but this allowed usingany
on these types in conformance constraint context, e.g.This also caused type resolution to not know the difference between
(any Any).Type
andany Any.Type
, as described in #58367.Note that
Any
andAnyObject
still do not print withany
in the ASTPrinter, except when it's needed to distinguish between the existential metatype and the singleton metatype, e.g.any Any.Type
vs(any Any).Type
.Any
andAnyObject
as existential types.ExistentialType
representation itself has already been shipped in Swift 5.6 and thoroughly tested.Resolves: rdar://94370283, #58367