From 923a8aab0ed74f4743a0a2f2e8068144c62f31d5 Mon Sep 17 00:00:00 2001 From: Nathan Shively-Sanders <293473+sandersn@users.noreply.github.com> Date: Mon, 11 Jun 2018 14:45:27 -0700 Subject: [PATCH] Add Variable to HasExports (#24871) JS containers are variables, but may have exports just like classes and modules. --- src/compiler/types.ts | 2 +- .../reference/api/tsserverlibrary.d.ts | 2 +- tests/baselines/reference/api/typescript.d.ts | 2 +- .../reference/moduleExportAlias5.symbols | 21 ++++++++++++++ .../reference/moduleExportAlias5.types | 29 +++++++++++++++++++ .../conformance/salsa/moduleExportAlias5.ts | 11 +++++++ 6 files changed, 64 insertions(+), 3 deletions(-) create mode 100644 tests/baselines/reference/moduleExportAlias5.symbols create mode 100644 tests/baselines/reference/moduleExportAlias5.types create mode 100644 tests/cases/conformance/salsa/moduleExportAlias5.ts diff --git a/src/compiler/types.ts b/src/compiler/types.ts index 1378be2a724cc..ae21fdba02aa2 100644 --- a/src/compiler/types.ts +++ b/src/compiler/types.ts @@ -3467,7 +3467,7 @@ namespace ts { ExportHasLocal = Function | Class | Enum | ValueModule, - HasExports = Class | Enum | Module, + HasExports = Class | Enum | Module | Variable, HasMembers = Class | Interface | TypeLiteral | ObjectLiteral, BlockScoped = BlockScopedVariable | Class | Enum, diff --git a/tests/baselines/reference/api/tsserverlibrary.d.ts b/tests/baselines/reference/api/tsserverlibrary.d.ts index 2cfb99444e582..202394bd5ce05 100644 --- a/tests/baselines/reference/api/tsserverlibrary.d.ts +++ b/tests/baselines/reference/api/tsserverlibrary.d.ts @@ -2071,7 +2071,7 @@ declare namespace ts { AliasExcludes = 2097152, ModuleMember = 2623475, ExportHasLocal = 944, - HasExports = 1952, + HasExports = 1955, HasMembers = 6240, BlockScoped = 418, PropertyOrAccessor = 98308, diff --git a/tests/baselines/reference/api/typescript.d.ts b/tests/baselines/reference/api/typescript.d.ts index acbcabf5beffa..5bc91053148fc 100644 --- a/tests/baselines/reference/api/typescript.d.ts +++ b/tests/baselines/reference/api/typescript.d.ts @@ -2071,7 +2071,7 @@ declare namespace ts { AliasExcludes = 2097152, ModuleMember = 2623475, ExportHasLocal = 944, - HasExports = 1952, + HasExports = 1955, HasMembers = 6240, BlockScoped = 418, PropertyOrAccessor = 98308, diff --git a/tests/baselines/reference/moduleExportAlias5.symbols b/tests/baselines/reference/moduleExportAlias5.symbols new file mode 100644 index 0000000000000..f856e9ae32ce8 --- /dev/null +++ b/tests/baselines/reference/moduleExportAlias5.symbols @@ -0,0 +1,21 @@ +=== tests/cases/conformance/salsa/bug24754.js === +// #24754 +const webpack = function (){ +>webpack : Symbol(webpack, Decl(bug24754.js, 1, 5)) +} +exports = module.exports = webpack; +>exports : Symbol("tests/cases/conformance/salsa/bug24754", Decl(bug24754.js, 0, 0)) +>module : Symbol(export=, Decl(bug24754.js, 3, 9)) +>exports : Symbol(export=, Decl(bug24754.js, 3, 9)) +>webpack : Symbol(webpack, Decl(bug24754.js, 1, 5)) + +exports.version = 1001; +>exports.version : Symbol(version, Decl(bug24754.js, 3, 35)) +>exports : Symbol(version, Decl(bug24754.js, 3, 35)) +>version : Symbol(version, Decl(bug24754.js, 3, 35)) + +webpack.WebpackOptionsDefaulter = 1111; +>webpack.WebpackOptionsDefaulter : Symbol(webpack.WebpackOptionsDefaulter, Decl(bug24754.js, 4, 23)) +>webpack : Symbol(webpack, Decl(bug24754.js, 1, 5)) +>WebpackOptionsDefaulter : Symbol(webpack.WebpackOptionsDefaulter, Decl(bug24754.js, 4, 23)) + diff --git a/tests/baselines/reference/moduleExportAlias5.types b/tests/baselines/reference/moduleExportAlias5.types new file mode 100644 index 0000000000000..47a5cb3ddfaad --- /dev/null +++ b/tests/baselines/reference/moduleExportAlias5.types @@ -0,0 +1,29 @@ +=== tests/cases/conformance/salsa/bug24754.js === +// #24754 +const webpack = function (){ +>webpack : { (): void; WebpackOptionsDefaulter: number; } +>function (){} : { (): void; WebpackOptionsDefaulter: number; } +} +exports = module.exports = webpack; +>exports = module.exports = webpack : { (): void; WebpackOptionsDefaulter: number; } +>exports : typeof import("tests/cases/conformance/salsa/bug24754") +>module.exports = webpack : { (): void; WebpackOptionsDefaulter: number; } +>module.exports : any +>module : any +>exports : any +>webpack : { (): void; WebpackOptionsDefaulter: number; } + +exports.version = 1001; +>exports.version = 1001 : 1001 +>exports.version : number +>exports : typeof import("tests/cases/conformance/salsa/bug24754") +>version : number +>1001 : 1001 + +webpack.WebpackOptionsDefaulter = 1111; +>webpack.WebpackOptionsDefaulter = 1111 : 1111 +>webpack.WebpackOptionsDefaulter : number +>webpack : { (): void; WebpackOptionsDefaulter: number; } +>WebpackOptionsDefaulter : number +>1111 : 1111 + diff --git a/tests/cases/conformance/salsa/moduleExportAlias5.ts b/tests/cases/conformance/salsa/moduleExportAlias5.ts new file mode 100644 index 0000000000000..3bba98139700e --- /dev/null +++ b/tests/cases/conformance/salsa/moduleExportAlias5.ts @@ -0,0 +1,11 @@ +// @checkJs: true +// @allowJS: true +// @noEmit: true +// @Filename: bug24754.js +// #24754 +const webpack = function (){ +} +exports = module.exports = webpack; +exports.version = 1001; + +webpack.WebpackOptionsDefaulter = 1111;