From dbe1f1eed4ad30c78000f2f17ccc053bc2695d19 Mon Sep 17 00:00:00 2001 From: Sheetal Nandi Date: Tue, 16 Jun 2020 14:06:40 -0700 Subject: [PATCH 1/2] Fix crash in reporting unresolved project reference as part of compilerOptions verification Fixes #38143 --- src/compiler/program.ts | 2 +- src/testRunner/tsconfig.json | 1 + .../unittests/tsc/projectReferecnes.ts | 21 +++++++++ ...ject-contains-invalid-project-reference.js | 46 +++++++++++++++++++ 4 files changed, 69 insertions(+), 1 deletion(-) create mode 100644 src/testRunner/unittests/tsc/projectReferecnes.ts create mode 100644 tests/baselines/reference/tsc/projectReferences/initial-build/when-project-contains-invalid-project-reference.js diff --git a/src/compiler/program.ts b/src/compiler/program.ts index 85ee7535ef3ed..791709f0edeb8 100644 --- a/src/compiler/program.ts +++ b/src/compiler/program.ts @@ -1530,7 +1530,7 @@ namespace ts { function getPrependNodes() { return createPrependNodes( projectReferences, - (_ref, index) => resolvedProjectReferences![index]!.commandLine, + (_ref, index) => resolvedProjectReferences![index]?.commandLine, fileName => { const path = toPath(fileName); const sourceFile = getSourceFileByPath(path); diff --git a/src/testRunner/tsconfig.json b/src/testRunner/tsconfig.json index e764553c80ca1..c24abe12be9c1 100644 --- a/src/testRunner/tsconfig.json +++ b/src/testRunner/tsconfig.json @@ -130,6 +130,7 @@ "unittests/tsc/declarationEmit.ts", "unittests/tsc/incremental.ts", "unittests/tsc/listFilesOnly.ts", + "unittests/tsc/projectReferecnes.ts", "unittests/tsc/runWithoutArgs.ts", "unittests/tscWatch/consoleClearing.ts", "unittests/tscWatch/emit.ts", diff --git a/src/testRunner/unittests/tsc/projectReferecnes.ts b/src/testRunner/unittests/tsc/projectReferecnes.ts new file mode 100644 index 0000000000000..06e68018dd6ce --- /dev/null +++ b/src/testRunner/unittests/tsc/projectReferecnes.ts @@ -0,0 +1,21 @@ +namespace ts { + describe("unittests:: tsc:: projectReferences::", () => { + verifyTsc({ + scenario: "projectReferences", + subScenario: "when project contains invalid project reference", + fs: () => loadProjectFromFiles({ + "/src/project/src/main.ts": "export const x = 10;", + "/src/project/tsconfig.json": JSON.stringify({ + compilerOptions: { + module: "amd", + outFile: "theApp.js" + }, + references: [ + { path: "../Util/Dates" } + ] + }), + }), + commandLineArgs: ["--p", "src/project"], + }); + }); +} diff --git a/tests/baselines/reference/tsc/projectReferences/initial-build/when-project-contains-invalid-project-reference.js b/tests/baselines/reference/tsc/projectReferences/initial-build/when-project-contains-invalid-project-reference.js new file mode 100644 index 0000000000000..ab55d2a9e860d --- /dev/null +++ b/tests/baselines/reference/tsc/projectReferences/initial-build/when-project-contains-invalid-project-reference.js @@ -0,0 +1,46 @@ +Input:: +//// [/lib/lib.d.ts] +/// +interface Boolean {} +interface Function {} +interface CallableFunction {} +interface NewableFunction {} +interface IArguments {} +interface Number { toExponential: any; } +interface Object {} +interface RegExp {} +interface String { charAt: any; } +interface Array { length: number; [n: number]: T; } +interface ReadonlyArray {} +declare const console: { log(msg: any): void; }; + +//// [/src/project/src/main.ts] +export const x = 10; + +//// [/src/project/tsconfig.json] +{"compilerOptions":{"module":"amd","outFile":"theApp.js"},"references":[{"path":"../Util/Dates"}]} + + + +Output:: +/lib/tsc --p src/project +src/project/tsconfig.json:1:73 - error TS6053: File '/src/Util/Dates' not found. + +1 {"compilerOptions":{"module":"amd","outFile":"theApp.js"},"references":[{"path":"../Util/Dates"}]} +   ~~~~~~~~~~~~~~~~~~~~~~~~ + + +Found 1 error. + +exitCode:: ExitStatus.DiagnosticsPresent_OutputsGenerated + + +//// [/src/project/theApp.js] +define("main", ["require", "exports"], function (require, exports) { + "use strict"; + exports.__esModule = true; + exports.x = void 0; + exports.x = 10; +}); + + From 365d58feff3114181047b0aa0b64dd3117ecaaa6 Mon Sep 17 00:00:00 2001 From: Sheetal Nandi Date: Wed, 17 Jun 2020 10:33:34 -0700 Subject: [PATCH 2/2] Fix typo --- src/testRunner/tsconfig.json | 2 +- .../tsc/{projectReferecnes.ts => projectReferences.ts} | 0 2 files changed, 1 insertion(+), 1 deletion(-) rename src/testRunner/unittests/tsc/{projectReferecnes.ts => projectReferences.ts} (100%) diff --git a/src/testRunner/tsconfig.json b/src/testRunner/tsconfig.json index 5803fba3b178e..f17f10789f03b 100644 --- a/src/testRunner/tsconfig.json +++ b/src/testRunner/tsconfig.json @@ -130,7 +130,7 @@ "unittests/tsc/declarationEmit.ts", "unittests/tsc/incremental.ts", "unittests/tsc/listFilesOnly.ts", - "unittests/tsc/projectReferecnes.ts", + "unittests/tsc/projectReferences.ts", "unittests/tsc/runWithoutArgs.ts", "unittests/tscWatch/consoleClearing.ts", "unittests/tscWatch/emit.ts", diff --git a/src/testRunner/unittests/tsc/projectReferecnes.ts b/src/testRunner/unittests/tsc/projectReferences.ts similarity index 100% rename from src/testRunner/unittests/tsc/projectReferecnes.ts rename to src/testRunner/unittests/tsc/projectReferences.ts