Fix closure recovery for missing block when return type is specified #138749
+101
−16
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.
Firstly, fix the
is_array_like_block
condition to make sure we're actually recovering a mistyped block rather than some other delimited expression. This fixes #138748.Secondly, split out the recovery of missing braces on a closure body into a separate recovery. Right now, the suggestion
"you might have meant to write this as part of a block"
originates fromsuggest_fixes_misparsed_for_loop_head
, which feels kinda brittle and coincidental since AFAICT that recovery wasn't ever really intended to fix this.We also can make this
MachineApplicable
in this case.Fixes #138748
r? @fmease or reassign if you're busy/don't wanna review this