diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index f17d7a40f58..3415d9890b9 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -1720,10 +1720,9 @@ namespace ts { // references a symbol that is at least declared as a module or a variable. The target of the 'export =' may // combine other declarations with the module or variable (e.g. a class/module, function/module, interface/variable). function resolveESModuleSymbol(moduleSymbol: Symbol, moduleReferenceExpression: Expression, dontResolveAlias: boolean): Symbol { - let symbol = resolveExternalModuleSymbol(moduleSymbol, dontResolveAlias); + const symbol = resolveExternalModuleSymbol(moduleSymbol, dontResolveAlias); if (!dontResolveAlias && symbol && !(symbol.flags & (SymbolFlags.Module | SymbolFlags.Variable))) { error(moduleReferenceExpression, Diagnostics.Module_0_resolves_to_a_non_module_entity_and_cannot_be_imported_using_this_construct, symbolToString(moduleSymbol)); - symbol = undefined; } return symbol; } diff --git a/tests/baselines/reference/es6ExportEqualsInterop.errors.txt b/tests/baselines/reference/es6ExportEqualsInterop.errors.txt index 4a9f7dcb506..4675136d081 100644 --- a/tests/baselines/reference/es6ExportEqualsInterop.errors.txt +++ b/tests/baselines/reference/es6ExportEqualsInterop.errors.txt @@ -14,11 +14,20 @@ tests/cases/compiler/main.ts(36,8): error TS1192: Module '"class-module"' has no tests/cases/compiler/main.ts(39,21): error TS2497: Module '"interface"' resolves to a non-module entity and cannot be imported using this construct. tests/cases/compiler/main.ts(45,21): error TS2497: Module '"function"' resolves to a non-module entity and cannot be imported using this construct. tests/cases/compiler/main.ts(47,21): error TS2497: Module '"class"' resolves to a non-module entity and cannot be imported using this construct. +tests/cases/compiler/main.ts(50,1): error TS2693: 'y1' only refers to a type, but is being used as a value here. +tests/cases/compiler/main.ts(56,4): error TS2339: Property 'a' does not exist on type '() => any'. +tests/cases/compiler/main.ts(58,4): error TS2339: Property 'a' does not exist on type 'typeof Foo'. +tests/cases/compiler/main.ts(62,10): error TS2305: Module '"interface"' has no exported member 'a'. tests/cases/compiler/main.ts(62,25): error TS2497: Module '"interface"' resolves to a non-module entity and cannot be imported using this construct. +tests/cases/compiler/main.ts(68,10): error TS2305: Module '"function"' has no exported member 'a'. tests/cases/compiler/main.ts(68,25): error TS2497: Module '"function"' resolves to a non-module entity and cannot be imported using this construct. +tests/cases/compiler/main.ts(70,10): error TS2305: Module '"class"' has no exported member 'a'. tests/cases/compiler/main.ts(70,25): error TS2497: Module '"class"' resolves to a non-module entity and cannot be imported using this construct. +tests/cases/compiler/main.ts(85,10): error TS2305: Module '"interface"' has no exported member 'a'. tests/cases/compiler/main.ts(85,25): error TS2497: Module '"interface"' resolves to a non-module entity and cannot be imported using this construct. +tests/cases/compiler/main.ts(91,10): error TS2305: Module '"function"' has no exported member 'a'. tests/cases/compiler/main.ts(91,25): error TS2497: Module '"function"' resolves to a non-module entity and cannot be imported using this construct. +tests/cases/compiler/main.ts(93,10): error TS2305: Module '"class"' has no exported member 'a'. tests/cases/compiler/main.ts(93,25): error TS2497: Module '"class"' resolves to a non-module entity and cannot be imported using this construct. tests/cases/compiler/main.ts(97,15): error TS2498: Module '"interface"' uses 'export =' and cannot be used with 'export *'. tests/cases/compiler/main.ts(98,15): error TS2498: Module '"variable"' uses 'export =' and cannot be used with 'export *'. @@ -32,7 +41,7 @@ tests/cases/compiler/main.ts(105,15): error TS2498: Module '"class"' uses 'expor tests/cases/compiler/main.ts(106,15): error TS2498: Module '"class-module"' uses 'export =' and cannot be used with 'export *'. -==== tests/cases/compiler/main.ts (32 errors) ==== +==== tests/cases/compiler/main.ts (41 errors) ==== /// // import-equals @@ -115,18 +124,26 @@ tests/cases/compiler/main.ts(106,15): error TS2498: Module '"class-module"' uses import * as y0 from "class-module"; y1.a; + ~~ +!!! error TS2693: 'y1' only refers to a type, but is being used as a value here. y2.a; y3.a; y4.a; y5.a; y6.a; y7.a; + ~ +!!! error TS2339: Property 'a' does not exist on type '() => any'. y8.a; y9.a; + ~ +!!! error TS2339: Property 'a' does not exist on type 'typeof Foo'. y0.a; // named import import { a as a1 } from "interface"; + ~ +!!! error TS2305: Module '"interface"' has no exported member 'a'. ~~~~~~~~~~~ !!! error TS2497: Module '"interface"' resolves to a non-module entity and cannot be imported using this construct. import { a as a2 } from "variable"; @@ -135,10 +152,14 @@ tests/cases/compiler/main.ts(106,15): error TS2498: Module '"class-module"' uses import { a as a5 } from "interface-module"; import { a as a6 } from "variable-module"; import { a as a7 } from "function"; + ~ +!!! error TS2305: Module '"function"' has no exported member 'a'. ~~~~~~~~~~ !!! error TS2497: Module '"function"' resolves to a non-module entity and cannot be imported using this construct. import { a as a8 } from "function-module"; import { a as a9 } from "class"; + ~ +!!! error TS2305: Module '"class"' has no exported member 'a'. ~~~~~~~ !!! error TS2497: Module '"class"' resolves to a non-module entity and cannot be imported using this construct. import { a as a0 } from "class-module"; @@ -156,6 +177,8 @@ tests/cases/compiler/main.ts(106,15): error TS2498: Module '"class-module"' uses // named export export { a as a1 } from "interface"; + ~ +!!! error TS2305: Module '"interface"' has no exported member 'a'. ~~~~~~~~~~~ !!! error TS2497: Module '"interface"' resolves to a non-module entity and cannot be imported using this construct. export { a as a2 } from "variable"; @@ -164,10 +187,14 @@ tests/cases/compiler/main.ts(106,15): error TS2498: Module '"class-module"' uses export { a as a5 } from "interface-module"; export { a as a6 } from "variable-module"; export { a as a7 } from "function"; + ~ +!!! error TS2305: Module '"function"' has no exported member 'a'. ~~~~~~~~~~ !!! error TS2497: Module '"function"' resolves to a non-module entity and cannot be imported using this construct. export { a as a8 } from "function-module"; export { a as a9 } from "class"; + ~ +!!! error TS2305: Module '"class"' has no exported member 'a'. ~~~~~~~ !!! error TS2497: Module '"class"' resolves to a non-module entity and cannot be imported using this construct. export { a as a0 } from "class-module"; diff --git a/tests/baselines/reference/es6ExportEqualsInterop.js b/tests/baselines/reference/es6ExportEqualsInterop.js index 5e04221df8b..13908a29e2d 100644 --- a/tests/baselines/reference/es6ExportEqualsInterop.js +++ b/tests/baselines/reference/es6ExportEqualsInterop.js @@ -232,8 +232,6 @@ z7.a; z8.a; z9.a; z0.a; -// namespace import -var y1 = require("interface"); var y2 = require("variable"); var y3 = require("interface-variable"); var y4 = require("module"); diff --git a/tests/cases/fourslash/signatureHelpImportStarFromExportEquals.ts b/tests/cases/fourslash/signatureHelpImportStarFromExportEquals.ts new file mode 100644 index 00000000000..cdf4b0a5c64 --- /dev/null +++ b/tests/cases/fourslash/signatureHelpImportStarFromExportEquals.ts @@ -0,0 +1,15 @@ +/// + +// @allowJs: true + +// @Filename: /node_modules/@types/abs/index.d.ts +////declare function abs(str: string): string; +////export = abs; + +// @Filename: /a.js +////import * as abs from "abs"; +////abs/**/; + +goTo.marker(); +edit.insert('('); +verify.currentSignatureHelpIs('abs(str: string): string');