Account for possible Element instance changed when lazily computing d… #8242
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.
Consider code like:
And try to slowly type
Tesinside VS Code. This will open code completion, and offer to create an initialize-all constructor. But, when the completion item is confirmed, it sometimes happens the action does not do anything (except removing the typed part of the identifier).The reason is, I think, that the completion is computed for
T, and when typinges, the completion is filtered, but not recomputed. But, reparsing the source code (due to the typed characters) may changeElementinstances, and the lazy computation forTextEditfor inserting the constructor will try to compare original and currentElementfor equality, and that will fail.I am not quite clear why there is the
Elementcheck, but it would be better to compare e.g.ElementHandles, notElements.