AST: Emit correct synthesized availability attributes for unownedExecutor
property
#64015
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.
When synthesizing a declaration and inferring its availability, the synthesized attribute should factor in unavailability of the parent declarations. This recently regressed with #63361. However, the previous implementation did not produce correct results, either, because the logic for merging availability attributes produced a non-sensical result when both
unavailable
andintroduced:
availability attributes were merged. For example, this was the result for the synthesizedunownedExecutor
property of an actor when the actor was marked unavailable:This is fixed by omitting all version components from the synthesized attribute when the overall attribute kind is "unavailable".
Additionally, I discovered that the
concurrency_availability.swift
test case was no longer testing what it intended to test. The conformances toActor
for eachactor
in the test were no longer being synthesized and thereforeunownedExecutor
was not being synthesized. That was fixed by importing the_Concurrency
module directly, which seems to be necessary because of the-parse-stdlib
flag in the test.Finally, this PR also introduces new
lit
substitutions that allow tests to specify that they want a deployment target corresponding a particular Swift release (e.g. Swift 5.3).Resolves rdar://106055566