From 7d103a1a4526240031c9a2bd9eeb33dbb1b7ecab Mon Sep 17 00:00:00 2001 From: Sheetal Nandi Date: Thu, 20 Nov 2014 15:43:07 -0800 Subject: [PATCH] Remove the --noResolve check when finding the file. --noResolve is only for ///reference and import file resolution to resolve files from disk but the file identity is always determined before creating duplicate source file for same file paths --- src/compiler/parser.ts | 18 ++++++++---------- .../amd/diskFile0.js | 5 +++++ .../amd/diskFile1.d.ts | 2 ++ .../amd/referenceResolutionSameFileTwice.json | 18 ++++++++++++++++++ .../node/diskFile0.js | 5 +++++ .../node/diskFile1.d.ts | 2 ++ .../node/referenceResolutionSameFileTwice.json | 18 ++++++++++++++++++ .../amd/diskFile0.js | 5 +++++ .../amd/diskFile1.d.ts | 2 ++ ...erenceResolutionSameFileTwiceNoResolve.json | 18 ++++++++++++++++++ .../node/diskFile0.js | 5 +++++ .../node/diskFile1.d.ts | 2 ++ ...erenceResolutionSameFileTwiceNoResolve.json | 18 ++++++++++++++++++ .../referenceResolutionSameFileTwice.json | 10 ++++++++++ ...erenceResolutionSameFileTwiceNoResolve.json | 11 +++++++++++ .../cases/projects/ReferenceResolution/test.ts | 2 ++ 16 files changed, 131 insertions(+), 10 deletions(-) create mode 100644 tests/baselines/reference/project/referenceResolutionSameFileTwice/amd/diskFile0.js create mode 100644 tests/baselines/reference/project/referenceResolutionSameFileTwice/amd/diskFile1.d.ts create mode 100644 tests/baselines/reference/project/referenceResolutionSameFileTwice/amd/referenceResolutionSameFileTwice.json create mode 100644 tests/baselines/reference/project/referenceResolutionSameFileTwice/node/diskFile0.js create mode 100644 tests/baselines/reference/project/referenceResolutionSameFileTwice/node/diskFile1.d.ts create mode 100644 tests/baselines/reference/project/referenceResolutionSameFileTwice/node/referenceResolutionSameFileTwice.json create mode 100644 tests/baselines/reference/project/referenceResolutionSameFileTwiceNoResolve/amd/diskFile0.js create mode 100644 tests/baselines/reference/project/referenceResolutionSameFileTwiceNoResolve/amd/diskFile1.d.ts create mode 100644 tests/baselines/reference/project/referenceResolutionSameFileTwiceNoResolve/amd/referenceResolutionSameFileTwiceNoResolve.json create mode 100644 tests/baselines/reference/project/referenceResolutionSameFileTwiceNoResolve/node/diskFile0.js create mode 100644 tests/baselines/reference/project/referenceResolutionSameFileTwiceNoResolve/node/diskFile1.d.ts create mode 100644 tests/baselines/reference/project/referenceResolutionSameFileTwiceNoResolve/node/referenceResolutionSameFileTwiceNoResolve.json create mode 100644 tests/cases/project/referenceResolutionSameFileTwice.json create mode 100644 tests/cases/project/referenceResolutionSameFileTwiceNoResolve.json create mode 100644 tests/cases/projects/ReferenceResolution/test.ts diff --git a/src/compiler/parser.ts b/src/compiler/parser.ts index 3939270a96a..b8f3623ee42 100644 --- a/src/compiler/parser.ts +++ b/src/compiler/parser.ts @@ -4427,13 +4427,10 @@ module ts { return getSourceFileFromCache(filename, canonicalName, /*useAbsolutePath*/ false); } else { - // if --noResolve is not specified check if we have file for absolute path - if (!options.noResolve) { - var normalizedAbsolutePath = getNormalizedAbsolutePath(filename, host.getCurrentDirectory()); - var canonicalAbsolutePath = host.getCanonicalFileName(normalizedAbsolutePath); - if (hasProperty(filesByName, canonicalAbsolutePath)) { - return getSourceFileFromCache(normalizedAbsolutePath, canonicalAbsolutePath, /*useAbsolutePath*/ true); - } + var normalizedAbsolutePath = getNormalizedAbsolutePath(filename, host.getCurrentDirectory()); + var canonicalAbsolutePath = host.getCanonicalFileName(normalizedAbsolutePath); + if (hasProperty(filesByName, canonicalAbsolutePath)) { + return getSourceFileFromCache(normalizedAbsolutePath, canonicalAbsolutePath, /*useAbsolutePath*/ true); } // We haven't looked for this file, do so now and cache result @@ -4443,10 +4440,11 @@ module ts { }); if (file) { seenNoDefaultLib = seenNoDefaultLib || file.hasNoDefaultLib; - if (!options.noResolve) { - // Set the source file for normalized absolute path - filesByName[canonicalAbsolutePath] = file; + // Set the source file for normalized absolute path + filesByName[canonicalAbsolutePath] = file; + + if (!options.noResolve) { var basePath = getDirectoryPath(filename); processReferencedFiles(file, basePath); processImportedModules(file, basePath); diff --git a/tests/baselines/reference/project/referenceResolutionSameFileTwice/amd/diskFile0.js b/tests/baselines/reference/project/referenceResolutionSameFileTwice/amd/diskFile0.js new file mode 100644 index 00000000000..c82f04ec515 --- /dev/null +++ b/tests/baselines/reference/project/referenceResolutionSameFileTwice/amd/diskFile0.js @@ -0,0 +1,5 @@ +var test = (function () { + function test() { + } + return test; +})(); diff --git a/tests/baselines/reference/project/referenceResolutionSameFileTwice/amd/diskFile1.d.ts b/tests/baselines/reference/project/referenceResolutionSameFileTwice/amd/diskFile1.d.ts new file mode 100644 index 00000000000..be748d27cfd --- /dev/null +++ b/tests/baselines/reference/project/referenceResolutionSameFileTwice/amd/diskFile1.d.ts @@ -0,0 +1,2 @@ +declare class test { +} diff --git a/tests/baselines/reference/project/referenceResolutionSameFileTwice/amd/referenceResolutionSameFileTwice.json b/tests/baselines/reference/project/referenceResolutionSameFileTwice/amd/referenceResolutionSameFileTwice.json new file mode 100644 index 00000000000..9334271f8eb --- /dev/null +++ b/tests/baselines/reference/project/referenceResolutionSameFileTwice/amd/referenceResolutionSameFileTwice.json @@ -0,0 +1,18 @@ +{ + "scenario": "referenceResolutionSameFileTwice", + "projectRoot": "tests/cases/projects/ReferenceResolution/", + "inputFiles": [ + "test.ts", + "../ReferenceResolution/test.ts" + ], + "declaration": true, + "baselineCheck": true, + "resolvedInputFiles": [ + "lib.d.ts", + "test.ts" + ], + "emittedFiles": [ + "test.js", + "test.d.ts" + ] +} \ No newline at end of file diff --git a/tests/baselines/reference/project/referenceResolutionSameFileTwice/node/diskFile0.js b/tests/baselines/reference/project/referenceResolutionSameFileTwice/node/diskFile0.js new file mode 100644 index 00000000000..c82f04ec515 --- /dev/null +++ b/tests/baselines/reference/project/referenceResolutionSameFileTwice/node/diskFile0.js @@ -0,0 +1,5 @@ +var test = (function () { + function test() { + } + return test; +})(); diff --git a/tests/baselines/reference/project/referenceResolutionSameFileTwice/node/diskFile1.d.ts b/tests/baselines/reference/project/referenceResolutionSameFileTwice/node/diskFile1.d.ts new file mode 100644 index 00000000000..be748d27cfd --- /dev/null +++ b/tests/baselines/reference/project/referenceResolutionSameFileTwice/node/diskFile1.d.ts @@ -0,0 +1,2 @@ +declare class test { +} diff --git a/tests/baselines/reference/project/referenceResolutionSameFileTwice/node/referenceResolutionSameFileTwice.json b/tests/baselines/reference/project/referenceResolutionSameFileTwice/node/referenceResolutionSameFileTwice.json new file mode 100644 index 00000000000..9334271f8eb --- /dev/null +++ b/tests/baselines/reference/project/referenceResolutionSameFileTwice/node/referenceResolutionSameFileTwice.json @@ -0,0 +1,18 @@ +{ + "scenario": "referenceResolutionSameFileTwice", + "projectRoot": "tests/cases/projects/ReferenceResolution/", + "inputFiles": [ + "test.ts", + "../ReferenceResolution/test.ts" + ], + "declaration": true, + "baselineCheck": true, + "resolvedInputFiles": [ + "lib.d.ts", + "test.ts" + ], + "emittedFiles": [ + "test.js", + "test.d.ts" + ] +} \ No newline at end of file diff --git a/tests/baselines/reference/project/referenceResolutionSameFileTwiceNoResolve/amd/diskFile0.js b/tests/baselines/reference/project/referenceResolutionSameFileTwiceNoResolve/amd/diskFile0.js new file mode 100644 index 00000000000..c82f04ec515 --- /dev/null +++ b/tests/baselines/reference/project/referenceResolutionSameFileTwiceNoResolve/amd/diskFile0.js @@ -0,0 +1,5 @@ +var test = (function () { + function test() { + } + return test; +})(); diff --git a/tests/baselines/reference/project/referenceResolutionSameFileTwiceNoResolve/amd/diskFile1.d.ts b/tests/baselines/reference/project/referenceResolutionSameFileTwiceNoResolve/amd/diskFile1.d.ts new file mode 100644 index 00000000000..be748d27cfd --- /dev/null +++ b/tests/baselines/reference/project/referenceResolutionSameFileTwiceNoResolve/amd/diskFile1.d.ts @@ -0,0 +1,2 @@ +declare class test { +} diff --git a/tests/baselines/reference/project/referenceResolutionSameFileTwiceNoResolve/amd/referenceResolutionSameFileTwiceNoResolve.json b/tests/baselines/reference/project/referenceResolutionSameFileTwiceNoResolve/amd/referenceResolutionSameFileTwiceNoResolve.json new file mode 100644 index 00000000000..b22aefac3ef --- /dev/null +++ b/tests/baselines/reference/project/referenceResolutionSameFileTwiceNoResolve/amd/referenceResolutionSameFileTwiceNoResolve.json @@ -0,0 +1,18 @@ +{ + "scenario": "referenceResolutionSameFileTwice_NoResolve", + "projectRoot": "tests/cases/projects/ReferenceResolution/", + "inputFiles": [ + "test.ts", + "../ReferenceResolution/test.ts" + ], + "declaration": true, + "baselineCheck": true, + "resolvedInputFiles": [ + "lib.d.ts", + "test.ts" + ], + "emittedFiles": [ + "test.js", + "test.d.ts" + ] +} \ No newline at end of file diff --git a/tests/baselines/reference/project/referenceResolutionSameFileTwiceNoResolve/node/diskFile0.js b/tests/baselines/reference/project/referenceResolutionSameFileTwiceNoResolve/node/diskFile0.js new file mode 100644 index 00000000000..c82f04ec515 --- /dev/null +++ b/tests/baselines/reference/project/referenceResolutionSameFileTwiceNoResolve/node/diskFile0.js @@ -0,0 +1,5 @@ +var test = (function () { + function test() { + } + return test; +})(); diff --git a/tests/baselines/reference/project/referenceResolutionSameFileTwiceNoResolve/node/diskFile1.d.ts b/tests/baselines/reference/project/referenceResolutionSameFileTwiceNoResolve/node/diskFile1.d.ts new file mode 100644 index 00000000000..be748d27cfd --- /dev/null +++ b/tests/baselines/reference/project/referenceResolutionSameFileTwiceNoResolve/node/diskFile1.d.ts @@ -0,0 +1,2 @@ +declare class test { +} diff --git a/tests/baselines/reference/project/referenceResolutionSameFileTwiceNoResolve/node/referenceResolutionSameFileTwiceNoResolve.json b/tests/baselines/reference/project/referenceResolutionSameFileTwiceNoResolve/node/referenceResolutionSameFileTwiceNoResolve.json new file mode 100644 index 00000000000..b22aefac3ef --- /dev/null +++ b/tests/baselines/reference/project/referenceResolutionSameFileTwiceNoResolve/node/referenceResolutionSameFileTwiceNoResolve.json @@ -0,0 +1,18 @@ +{ + "scenario": "referenceResolutionSameFileTwice_NoResolve", + "projectRoot": "tests/cases/projects/ReferenceResolution/", + "inputFiles": [ + "test.ts", + "../ReferenceResolution/test.ts" + ], + "declaration": true, + "baselineCheck": true, + "resolvedInputFiles": [ + "lib.d.ts", + "test.ts" + ], + "emittedFiles": [ + "test.js", + "test.d.ts" + ] +} \ No newline at end of file diff --git a/tests/cases/project/referenceResolutionSameFileTwice.json b/tests/cases/project/referenceResolutionSameFileTwice.json new file mode 100644 index 00000000000..00a8f6e103e --- /dev/null +++ b/tests/cases/project/referenceResolutionSameFileTwice.json @@ -0,0 +1,10 @@ +{ + "scenario": "referenceResolutionSameFileTwice", + "projectRoot": "tests/cases/projects/ReferenceResolution/", + "inputFiles": [ + "test.ts", + "../ReferenceResolution/test.ts" + ], + "declaration": true, + "baselineCheck": true +} \ No newline at end of file diff --git a/tests/cases/project/referenceResolutionSameFileTwiceNoResolve.json b/tests/cases/project/referenceResolutionSameFileTwiceNoResolve.json new file mode 100644 index 00000000000..8c77bd038cf --- /dev/null +++ b/tests/cases/project/referenceResolutionSameFileTwiceNoResolve.json @@ -0,0 +1,11 @@ +{ + "scenario": "referenceResolutionSameFileTwice_NoResolve", + "projectRoot": "tests/cases/projects/ReferenceResolution/", + "inputFiles": [ + "test.ts", + "../ReferenceResolution/test.ts" + ], + "noResolve": true, + "declaration": true, + "baselineCheck": true +} \ No newline at end of file diff --git a/tests/cases/projects/ReferenceResolution/test.ts b/tests/cases/projects/ReferenceResolution/test.ts new file mode 100644 index 00000000000..212b620415e --- /dev/null +++ b/tests/cases/projects/ReferenceResolution/test.ts @@ -0,0 +1,2 @@ +class test { +} \ No newline at end of file