fix: unchanged files sometimes have no Angular information for string… #1453
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.
…s when first opened
The
TextStorage
in TS server callsuseScriptVersionCacheIfValidOrOpen
in many placeswhen dealing with a
ScriptInfo
. One of the conditions in that functionis to switch to version if the script is open. This change in version
results in an identity change for the
SourceFile
which is problematicfor the compiler because we store references to string literals for
inline templates, template URLs, and style URLs. These references will
not be valid if the
SourceFile
changed identity.To ensure that the compiler is aware of the change, we mark the project
as dirty when a text document is opened. This will cause the project to
call
updateGraph
, determine that the file changed versions, and createa new program. This is done so that the Angular compiler can reprocess
the file.
This also appears to be one of, if not the only issue, that's currently
causing the e2e tests to be flaky.