From 96f9e076f88ec27a4ddfa95a39e815b1f2c8ba41 Mon Sep 17 00:00:00 2001 From: Andy Hanson Date: Wed, 26 Sep 2018 13:50:37 -0700 Subject: [PATCH 1/2] Don't implicit-any diagnostic for json module --- src/compiler/checker.ts | 2 +- ...xCannotFindModule_suggestion_falsePositive.ts | 16 ++++++++++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) create mode 100644 tests/cases/fourslash/codeFixCannotFindModule_suggestion_falsePositive.ts diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index a66a7edcf18..495b85fc05f 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -2241,7 +2241,7 @@ namespace ts { const sourceFile = resolvedModule && !resolutionDiagnostic && host.getSourceFile(resolvedModule.resolvedFileName); if (sourceFile) { if (sourceFile.symbol) { - if (resolvedModule.isExternalLibraryImport && !extensionIsTS(resolvedModule.extension)) { + if (resolvedModule.isExternalLibraryImport && !resolutionExtensionIsTSOrJson(resolvedModule.extension)) { errorOnImplicitAnyModule(/*isError*/ false, errorNode, resolvedModule, moduleReference); } // merged symbol is module declaration symbol combined with all augmentations diff --git a/tests/cases/fourslash/codeFixCannotFindModule_suggestion_falsePositive.ts b/tests/cases/fourslash/codeFixCannotFindModule_suggestion_falsePositive.ts new file mode 100644 index 00000000000..123d59d82a3 --- /dev/null +++ b/tests/cases/fourslash/codeFixCannotFindModule_suggestion_falsePositive.ts @@ -0,0 +1,16 @@ +/// + +// @moduleResolution: node +// @resolveJsonModule: true +// @strict: true + +// @Filename: /node_modules/foo/bar.json +////export const x = 0; + +// @Filename: /a.ts +////import abs = require([|"foo/bar.json"|]); +////abs; + +verify.noErrors(); +goTo.file("/a.ts"); +verify.getSuggestionDiagnostics([]); From 7b1388b071cc87d0618e4aeebf46c8ff09134f39 Mon Sep 17 00:00:00 2001 From: Andy Hanson Date: Wed, 26 Sep 2018 16:05:12 -0700 Subject: [PATCH 2/2] Ensure verify.noErrors tests json files --- src/harness/fourslash.ts | 3 ++- .../codeFixCannotFindModule_suggestion_falsePositive.ts | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/src/harness/fourslash.ts b/src/harness/fourslash.ts index c06e95339f1..1c32d5dda4c 100644 --- a/src/harness/fourslash.ts +++ b/src/harness/fourslash.ts @@ -593,7 +593,8 @@ namespace FourSlash { public verifyNoErrors() { ts.forEachKey(this.inputFiles, fileName => { if (!ts.isAnySupportedFileExtension(fileName) - || !this.getProgram().getCompilerOptions().allowJs && !ts.extensionIsTS(ts.extensionFromPath(fileName))) return; + || Harness.getConfigNameFromFileName(fileName) + || !this.getProgram().getCompilerOptions().allowJs && !ts.resolutionExtensionIsTSOrJson(ts.extensionFromPath(fileName))) return; const errors = this.getDiagnostics(fileName).filter(e => e.category !== ts.DiagnosticCategory.Suggestion); if (errors.length) { this.printErrorLog(/*expectErrors*/ false, errors); diff --git a/tests/cases/fourslash/codeFixCannotFindModule_suggestion_falsePositive.ts b/tests/cases/fourslash/codeFixCannotFindModule_suggestion_falsePositive.ts index 123d59d82a3..54afae7c4d1 100644 --- a/tests/cases/fourslash/codeFixCannotFindModule_suggestion_falsePositive.ts +++ b/tests/cases/fourslash/codeFixCannotFindModule_suggestion_falsePositive.ts @@ -5,7 +5,7 @@ // @strict: true // @Filename: /node_modules/foo/bar.json -////export const x = 0; +////{ "a": 0 } // @Filename: /a.ts ////import abs = require([|"foo/bar.json"|]);