[CodeCompletion][Parse] Don't drop the contained expression when completing within an InOutExpr #36738
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 completing within an
InOutExpr
like&foo.<complete>
, we were forming aCodeCompletionExpr
with a base when parsing the content of theInOutExpr
and storing it inCodeCompletionCallbacksImpl::CodeCompleteTokenExpr
. Whenever the result of that parse contained a code completion though, we were dropping it completely and returning an empty code completionParseResult
in place of the inout expression, which resulted in later code inserting a differentCodeCompletionExpr
into the AST that had no base expression. The solver-based completion implementation would later ask for the type of theCodeCompletionExpr
and its base using the expression stored inCodeCompletionCallbacksImpl::CodeCompleteTokenExpr
, but that never actually ended up in the AST, resulting in an assertion hit about the expression not having a type in the formed solution(s).Resolves rdar://75366814