Skip to content

[CS] A couple of CSApply cleanups #76485

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 8 commits into from
Sep 17, 2024

Conversation

hamishknight
Copy link
Contributor

Generalize the delayed type-checking of local decls, factor out an abstract base class for target rewriting, and rip out the delaying logic for multi-statement closures.

@hamishknight
Copy link
Contributor Author

@swift-ci please test source compatibility

@hamishknight
Copy link
Contributor Author

Hrm looks like we can't add the assertion in 59cb282 quite yet, dropped it.

`rewriteTarget` already calls `setExprTypes` for
expressions, so these are redundant.
Pass this instead of a function for rewriting
targets.
Delay `typeCheckDecl` for local decls until the
end of CSApply. This replaces the existing logic
for delaying type-checking for local functions.
We ought to be able to apply the solution to them
immediately now.
The cases where CSApply fails should be fairly
limited these days, and there doesn't seem to be
any reason we shouldn't run these on failure anyway.
This hit an assertion I was trying to add to make
sure we don't try to recursively type-check when
type-checking a closure. Currently we can end up
type-checking the initializer for `x` while generating
constraints for the closure due to the fact that we
eagerly compute the interface type for the backing
lazy storage var. We ought to make that computation
lazy, but in the mean time, add this test case.
@hamishknight
Copy link
Contributor Author

@swift-ci please test

@hamishknight hamishknight merged commit 4e32b60 into swiftlang:main Sep 17, 2024
5 checks passed
@hamishknight hamishknight deleted the apply-a-cleanup branch September 17, 2024 18:02
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants