From 6080c3efd686df9f1e20e19f763a135cf720ecda Mon Sep 17 00:00:00 2001 From: Kanchalai Tanglertsampan Date: Tue, 28 Mar 2017 12:38:41 -0700 Subject: [PATCH] Remove error with noImplicitAny --- src/compiler/checker.ts | 10 ---------- src/compiler/diagnosticMessages.json | 11 ++++------- .../importCallExpressionNoImplicitAnyError.ts | 12 ------------ .../importCallExpressionReturnPromiseOfAny.ts | 3 +++ 4 files changed, 7 insertions(+), 29 deletions(-) delete mode 100644 tests/cases/conformance/es2018/dynamicImport/importCallExpressionNoImplicitAnyError.ts diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index 59fcabb9ffa..6d10998ffc5 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -284,7 +284,6 @@ namespace ts { let deferredGlobalAsyncIterableIteratorType: GenericType; let deferredGlobalTemplateStringsArrayType: ObjectType; let deferredJsxElementClassType: Type; - let deferredGlobalPromiseAnyType: Type; let deferredNodes: Node[]; let deferredUnusedIdentifierNodes: Node[]; @@ -3456,11 +3455,6 @@ namespace ts { // Use the type of the initializer expression if one is present if (declaration.initializer) { const type = checkDeclarationInitializer(declaration); - - if (isImportCall(declaration.initializer)) { - if (noImplicitAny && type === getGlobalPromiseAnyType()) { - error(declaration, Diagnostics.Cannot_resolve_dynamic_import_implicitly_has_a_Promise_any_type); } - } return addOptionality(type, /*optional*/ declaration.questionToken && includeOptionality); } @@ -6089,10 +6083,6 @@ namespace ts { return deferredGlobalPromiseType || (deferredGlobalPromiseType = getGlobalType("Promise", /*arity*/ 1, reportErrors)) || emptyGenericType; } - function getGlobalPromiseAnyType() { - return deferredGlobalPromiseAnyType || (deferredGlobalPromiseAnyType = createPromiseType(anyType)); - } - function getGlobalPromiseConstructorSymbol(reportErrors: boolean): Symbol | undefined { return deferredGlobalPromiseConstructorSymbol || (deferredGlobalPromiseConstructorSymbol = getGlobalValueSymbol("Promise", reportErrors)); } diff --git a/src/compiler/diagnosticMessages.json b/src/compiler/diagnosticMessages.json index deb1ae90524..66731bfaf88 100644 --- a/src/compiler/diagnosticMessages.json +++ b/src/compiler/diagnosticMessages.json @@ -1,4 +1,4 @@ -{ +{ "Unterminated string literal.": { "category": "Error", "code": 1002 @@ -3174,14 +3174,11 @@ "category": "Error", "code": 7034 }, - "Cannot resolve dynamic import, implicitly has a 'Promise' type.": { - "category": "Error", - "code": 7035 - }, "Dynamic import's specifier must be of type 'string', but here has type '{0}'.": { - "category": "Error", - "code": 7036 + "category": "Error", + "code": 7035 }, + "You cannot rename this element.": { "category": "Error", "code": 8000 diff --git a/tests/cases/conformance/es2018/dynamicImport/importCallExpressionNoImplicitAnyError.ts b/tests/cases/conformance/es2018/dynamicImport/importCallExpressionNoImplicitAnyError.ts deleted file mode 100644 index 01f3b3c9281..00000000000 --- a/tests/cases/conformance/es2018/dynamicImport/importCallExpressionNoImplicitAnyError.ts +++ /dev/null @@ -1,12 +0,0 @@ -// @module: es2018 -// @target: esnext -// @filename: 0.ts -// @noImplicitAny: true - -// @filename: 1.ts -declare function ValidSomeCondition(): boolean; -import(ValidSomeCondition() ? "./0" : "externalModule"); // implicit any error -var p1 = import(ValidSomeCondition() ? "./0" : "externalModule"); // implicit any error -p1.then(zero => { - return zero.foo(); // ok -}); \ No newline at end of file diff --git a/tests/cases/conformance/es2018/dynamicImport/importCallExpressionReturnPromiseOfAny.ts b/tests/cases/conformance/es2018/dynamicImport/importCallExpressionReturnPromiseOfAny.ts index 235a76eb2f9..34f0b63be6f 100644 --- a/tests/cases/conformance/es2018/dynamicImport/importCallExpressionReturnPromiseOfAny.ts +++ b/tests/cases/conformance/es2018/dynamicImport/importCallExpressionReturnPromiseOfAny.ts @@ -7,12 +7,15 @@ export class C {} // @filename: 1.ts import * as defaultModule from "./defaultPath"; declare function getSpecifier(): string; +declare function ValidSomeCondition(): boolean; declare var whatToLoad: boolean; declare const directory: string; declare const moduleFile: number; import(`${directory}\${moduleFile}`); import(getSpecifier()); + +var p1 = import(ValidSomeCondition() ? "./0" : "externalModule"); var p1: Promise = import(getSpecifier()); var p11: Promise = import(getSpecifier()); const p2 = import(whatToLoad ? getSpecifier() : "defaulPath") as Promise;