From 4d17462bd66a0538ec83b12d929644317247c60f Mon Sep 17 00:00:00 2001 From: Armano Date: Fri, 24 Jan 2020 01:40:13 +0100 Subject: [PATCH 1/4] fix(typescript-estree): add test cases for module none --- .../tests/lib/persistentParse.ts | 22 +++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/packages/typescript-estree/tests/lib/persistentParse.ts b/packages/typescript-estree/tests/lib/persistentParse.ts index 98f5b1bcd0d..ef2ca5bd9a1 100644 --- a/packages/typescript-estree/tests/lib/persistentParse.ts +++ b/packages/typescript-estree/tests/lib/persistentParse.ts @@ -8,6 +8,9 @@ const CONTENTS = { bar: 'console.log("bar")', 'baz/bar': 'console.log("baz bar")', 'bat/baz/bar': 'console.log("bat/baz/bar")', + number: 'const foo = 1;', + object: '(() => { })();', + string: 'let a: "a" | "b";', }; const cwdCopy = process.cwd(); @@ -304,4 +307,23 @@ describe('persistent parse', () => { baseTests(tsConfigExcludeBar, tsConfigIncludeAll); }); + + describe('tsconfig with module none', () => { + const tsConfigIncludeAll = { + compilerOptions: { + module: 'none', + }, + include: ['./**/*'], + }; + + const testNames = ['object', 'number', 'string', 'foo'] as const; + + for (const name of testNames) { + it(`first parse of ${name} should not throw`, () => { + const PROJECT_DIR = setup(tsConfigIncludeAll); + writeFile(PROJECT_DIR, name); + expect(() => parseFile(name, PROJECT_DIR)).not.toThrow(); + }); + } + }); }); From bec1fbb649040ccea3011eeee09df9ad3fb5f304 Mon Sep 17 00:00:00 2001 From: Armano Date: Sat, 25 Jan 2020 02:34:44 +0100 Subject: [PATCH 2/4] fix(typescript-estree): update tests to include all module types --- .../tests/lib/persistentParse.ts | 42 ++++++++++++------- 1 file changed, 27 insertions(+), 15 deletions(-) diff --git a/packages/typescript-estree/tests/lib/persistentParse.ts b/packages/typescript-estree/tests/lib/persistentParse.ts index ef2ca5bd9a1..2b45974e677 100644 --- a/packages/typescript-estree/tests/lib/persistentParse.ts +++ b/packages/typescript-estree/tests/lib/persistentParse.ts @@ -308,21 +308,33 @@ describe('persistent parse', () => { baseTests(tsConfigExcludeBar, tsConfigIncludeAll); }); - describe('tsconfig with module none', () => { - const tsConfigIncludeAll = { - compilerOptions: { - module: 'none', - }, - include: ['./**/*'], - }; - - const testNames = ['object', 'number', 'string', 'foo'] as const; - - for (const name of testNames) { - it(`first parse of ${name} should not throw`, () => { - const PROJECT_DIR = setup(tsConfigIncludeAll); - writeFile(PROJECT_DIR, name); - expect(() => parseFile(name, PROJECT_DIR)).not.toThrow(); + describe('tsconfig with module set', () => { + const moduleTypes = [ + 'None', + 'CommonJS', + 'AMD', + 'System', + 'UMD', + 'ES6', + 'ES2015', + 'ESNext', + ]; + + for (const module of moduleTypes) { + describe(`module ${module}`, () => { + const tsConfigIncludeAll = { + compilerOptions: { module }, + include: ['./**/*'], + }; + + const testNames = ['object', 'number', 'string', 'foo'] as const; + for (const name of testNames) { + it(`first parse of ${name} should not throw`, () => { + const PROJECT_DIR = setup(tsConfigIncludeAll); + writeFile(PROJECT_DIR, name); + expect(() => parseFile(name, PROJECT_DIR)).not.toThrow(); + }); + } }); } }); From 15a48cdeb61fe70497363be22b1204abba22d681 Mon Sep 17 00:00:00 2001 From: Armano Date: Sat, 25 Jan 2020 02:46:05 +0100 Subject: [PATCH 3/4] fix(typescript-estree): apply fix for issue --- .../src/create-program/createWatchProgram.ts | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/packages/typescript-estree/src/create-program/createWatchProgram.ts b/packages/typescript-estree/src/create-program/createWatchProgram.ts index dd4401af3b6..16827be97bb 100644 --- a/packages/typescript-estree/src/create-program/createWatchProgram.ts +++ b/packages/typescript-estree/src/create-program/createWatchProgram.ts @@ -175,7 +175,7 @@ function getProgramsForProjects( updatedProgram = updatedProgram ?? existingWatch.getProgram().getProgram(); - // sets parent pointers in source files + // sets parent pointers in source files when module === none updatedProgram.getTypeChecker(); return [updatedProgram]; @@ -206,7 +206,7 @@ function getProgramsForProjects( continue; } - // sets parent pointers in source files + // sets parent pointers in source files when module === none updatedProgram.getTypeChecker(); results.push(updatedProgram); @@ -218,6 +218,8 @@ function getProgramsForProjects( // cache watch program and return current program knownWatchProgramMap.set(tsconfigPath, programWatch); + // sets parent pointers in source files when module === none + program.getTypeChecker(); results.push(program); } From a7f11d02d0fc3dfda67a4ac57815a848be27b468 Mon Sep 17 00:00:00 2001 From: Armano Date: Sat, 25 Jan 2020 03:42:38 +0100 Subject: [PATCH 4/4] chore(typescript-estree): update comments --- .../src/create-program/createDefaultProgram.ts | 5 ++++- .../src/create-program/createIsolatedProgram.ts | 2 +- .../src/create-program/createWatchProgram.ts | 6 +++--- 3 files changed, 8 insertions(+), 5 deletions(-) diff --git a/packages/typescript-estree/src/create-program/createDefaultProgram.ts b/packages/typescript-estree/src/create-program/createDefaultProgram.ts index c1e69b25335..e0aaf6253d7 100644 --- a/packages/typescript-estree/src/create-program/createDefaultProgram.ts +++ b/packages/typescript-estree/src/create-program/createDefaultProgram.ts @@ -39,7 +39,10 @@ function createDefaultProgram( return undefined; } - const compilerHost = ts.createCompilerHost(commandLine.options, true); + const compilerHost = ts.createCompilerHost( + commandLine.options, + /* setParentNodes */ true, + ); const oldReadFile = compilerHost.readFile; compilerHost.readFile = (fileName: string): string | undefined => path.normalize(fileName) === path.normalize(extra.filePath) diff --git a/packages/typescript-estree/src/create-program/createIsolatedProgram.ts b/packages/typescript-estree/src/create-program/createIsolatedProgram.ts index 257577d5eb2..70169c66891 100644 --- a/packages/typescript-estree/src/create-program/createIsolatedProgram.ts +++ b/packages/typescript-estree/src/create-program/createIsolatedProgram.ts @@ -46,7 +46,7 @@ function createIsolatedProgram(code: string, extra: Extra): ASTAndProgram { filename, code, ts.ScriptTarget.Latest, - true, + /* setParentNodes */ true, getScriptKind(extra, filename), ); }, diff --git a/packages/typescript-estree/src/create-program/createWatchProgram.ts b/packages/typescript-estree/src/create-program/createWatchProgram.ts index 16827be97bb..143219998fa 100644 --- a/packages/typescript-estree/src/create-program/createWatchProgram.ts +++ b/packages/typescript-estree/src/create-program/createWatchProgram.ts @@ -175,7 +175,7 @@ function getProgramsForProjects( updatedProgram = updatedProgram ?? existingWatch.getProgram().getProgram(); - // sets parent pointers in source files when module === none + // sets parent pointers in source files updatedProgram.getTypeChecker(); return [updatedProgram]; @@ -206,7 +206,7 @@ function getProgramsForProjects( continue; } - // sets parent pointers in source files when module === none + // sets parent pointers in source files updatedProgram.getTypeChecker(); results.push(updatedProgram); @@ -218,7 +218,7 @@ function getProgramsForProjects( // cache watch program and return current program knownWatchProgramMap.set(tsconfigPath, programWatch); - // sets parent pointers in source files when module === none + // sets parent pointers in source files program.getTypeChecker(); results.push(program); }