record resolution for relative file name if file was found via absolu… #4989
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.
…te name. Fixes #2192.
The same file can be referenced using different relative names. For example:
if
folder3is current directory thenfile1.tscan be referenced as../file1.tsor as../../folder2/file1.ts. Both these names are correct however now we'll record resolutions for both relative and and absolute names only for the first requested file i.e.../file1.ts. Subsequent request to find source file for../../folder2/file1.tswill fail to find it for relative name but will succeed to do it for absolute name and this result will be returned without recording association 'relative name' -> 'resolved file'. This means that callingprogram.getSourceFile('../../folder2/file1.ts')will returnundefinedthough clearly this file is in the program. Solution: when lookup fails for relative name but succeeds for absolute - record association for relative as well.Also PR reduces nesting in
findSourceFileand drops unnecessary calls toCompilerHost.getCannonicalFileName-FileMapwill do this internally anyways so there is no need to do it several times