From 4e4261e1693edd75abc6a32ec6469efdf9dc4dd0 Mon Sep 17 00:00:00 2001 From: Oleksandr T Date: Sun, 10 Oct 2021 10:29:31 +0300 Subject: [PATCH] fix(43359): emit default exports with named exports that have the same names with types --- src/compiler/checker.ts | 2 +- .../reference/defaultNamedExportWithType1.js | 9 +++++++++ .../reference/defaultNamedExportWithType1.symbols | 10 ++++++++++ .../reference/defaultNamedExportWithType1.types | 11 +++++++++++ .../reference/defaultNamedExportWithType2.js | 9 +++++++++ .../reference/defaultNamedExportWithType2.symbols | 10 ++++++++++ .../reference/defaultNamedExportWithType2.types | 11 +++++++++++ .../reference/defaultNamedExportWithType3.js | 9 +++++++++ .../reference/defaultNamedExportWithType3.symbols | 10 ++++++++++ .../reference/defaultNamedExportWithType3.types | 9 +++++++++ .../reference/defaultNamedExportWithType4.js | 9 +++++++++ .../reference/defaultNamedExportWithType4.symbols | 10 ++++++++++ .../reference/defaultNamedExportWithType4.types | 9 +++++++++ .../reference/duplicateVarsAcrossFileBoundaries.js | 1 + ...importDeclWithExportModifierAndExportAssignment.js | 2 +- tests/cases/compiler/defaultNamedExportWithType1.ts | 5 +++++ tests/cases/compiler/defaultNamedExportWithType2.ts | 5 +++++ tests/cases/compiler/defaultNamedExportWithType3.ts | 5 +++++ tests/cases/compiler/defaultNamedExportWithType4.ts | 5 +++++ 19 files changed, 139 insertions(+), 2 deletions(-) create mode 100644 tests/baselines/reference/defaultNamedExportWithType1.js create mode 100644 tests/baselines/reference/defaultNamedExportWithType1.symbols create mode 100644 tests/baselines/reference/defaultNamedExportWithType1.types create mode 100644 tests/baselines/reference/defaultNamedExportWithType2.js create mode 100644 tests/baselines/reference/defaultNamedExportWithType2.symbols create mode 100644 tests/baselines/reference/defaultNamedExportWithType2.types create mode 100644 tests/baselines/reference/defaultNamedExportWithType3.js create mode 100644 tests/baselines/reference/defaultNamedExportWithType3.symbols create mode 100644 tests/baselines/reference/defaultNamedExportWithType3.types create mode 100644 tests/baselines/reference/defaultNamedExportWithType4.js create mode 100644 tests/baselines/reference/defaultNamedExportWithType4.symbols create mode 100644 tests/baselines/reference/defaultNamedExportWithType4.types create mode 100644 tests/cases/compiler/defaultNamedExportWithType1.ts create mode 100644 tests/cases/compiler/defaultNamedExportWithType2.ts create mode 100644 tests/cases/compiler/defaultNamedExportWithType3.ts create mode 100644 tests/cases/compiler/defaultNamedExportWithType4.ts diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index 3d54f2e9db5d5..eafa8a0289101 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -41255,7 +41255,7 @@ namespace ts { if (!symbol) { return false; } - const target = resolveAlias(symbol); + const target = getExportSymbolOfValueSymbolIfExported(resolveAlias(symbol)); if (target === unknownSymbol) { return true; } diff --git a/tests/baselines/reference/defaultNamedExportWithType1.js b/tests/baselines/reference/defaultNamedExportWithType1.js new file mode 100644 index 0000000000000..48d8c7c0b3a3f --- /dev/null +++ b/tests/baselines/reference/defaultNamedExportWithType1.js @@ -0,0 +1,9 @@ +//// [defaultNamedExportWithType1.ts] +type Foo = number; +export const Foo = 1; +export default Foo; + + +//// [defaultNamedExportWithType1.js] +export const Foo = 1; +export default Foo; diff --git a/tests/baselines/reference/defaultNamedExportWithType1.symbols b/tests/baselines/reference/defaultNamedExportWithType1.symbols new file mode 100644 index 0000000000000..d926ee0d485a5 --- /dev/null +++ b/tests/baselines/reference/defaultNamedExportWithType1.symbols @@ -0,0 +1,10 @@ +=== tests/cases/compiler/defaultNamedExportWithType1.ts === +type Foo = number; +>Foo : Symbol(Foo, Decl(defaultNamedExportWithType1.ts, 0, 0), Decl(defaultNamedExportWithType1.ts, 1, 12)) + +export const Foo = 1; +>Foo : Symbol(Foo, Decl(defaultNamedExportWithType1.ts, 1, 12)) + +export default Foo; +>Foo : Symbol(Foo, Decl(defaultNamedExportWithType1.ts, 0, 0), Decl(defaultNamedExportWithType1.ts, 1, 12)) + diff --git a/tests/baselines/reference/defaultNamedExportWithType1.types b/tests/baselines/reference/defaultNamedExportWithType1.types new file mode 100644 index 0000000000000..1189d7a481869 --- /dev/null +++ b/tests/baselines/reference/defaultNamedExportWithType1.types @@ -0,0 +1,11 @@ +=== tests/cases/compiler/defaultNamedExportWithType1.ts === +type Foo = number; +>Foo : number + +export const Foo = 1; +>Foo : 1 +>1 : 1 + +export default Foo; +>Foo : number + diff --git a/tests/baselines/reference/defaultNamedExportWithType2.js b/tests/baselines/reference/defaultNamedExportWithType2.js new file mode 100644 index 0000000000000..57450763b206f --- /dev/null +++ b/tests/baselines/reference/defaultNamedExportWithType2.js @@ -0,0 +1,9 @@ +//// [defaultNamedExportWithType2.ts] +type Foo = number; +const Foo = 1; +export default Foo; + + +//// [defaultNamedExportWithType2.js] +const Foo = 1; +export default Foo; diff --git a/tests/baselines/reference/defaultNamedExportWithType2.symbols b/tests/baselines/reference/defaultNamedExportWithType2.symbols new file mode 100644 index 0000000000000..0625c539b5442 --- /dev/null +++ b/tests/baselines/reference/defaultNamedExportWithType2.symbols @@ -0,0 +1,10 @@ +=== tests/cases/compiler/defaultNamedExportWithType2.ts === +type Foo = number; +>Foo : Symbol(Foo, Decl(defaultNamedExportWithType2.ts, 0, 0), Decl(defaultNamedExportWithType2.ts, 1, 5)) + +const Foo = 1; +>Foo : Symbol(Foo, Decl(defaultNamedExportWithType2.ts, 0, 0), Decl(defaultNamedExportWithType2.ts, 1, 5)) + +export default Foo; +>Foo : Symbol(Foo, Decl(defaultNamedExportWithType2.ts, 0, 0), Decl(defaultNamedExportWithType2.ts, 1, 5)) + diff --git a/tests/baselines/reference/defaultNamedExportWithType2.types b/tests/baselines/reference/defaultNamedExportWithType2.types new file mode 100644 index 0000000000000..d8d5103089d73 --- /dev/null +++ b/tests/baselines/reference/defaultNamedExportWithType2.types @@ -0,0 +1,11 @@ +=== tests/cases/compiler/defaultNamedExportWithType2.ts === +type Foo = number; +>Foo : number + +const Foo = 1; +>Foo : 1 +>1 : 1 + +export default Foo; +>Foo : number + diff --git a/tests/baselines/reference/defaultNamedExportWithType3.js b/tests/baselines/reference/defaultNamedExportWithType3.js new file mode 100644 index 0000000000000..46ecff720fcfb --- /dev/null +++ b/tests/baselines/reference/defaultNamedExportWithType3.js @@ -0,0 +1,9 @@ +//// [defaultNamedExportWithType3.ts] +interface Foo {} +export const Foo = {}; +export default Foo; + + +//// [defaultNamedExportWithType3.js] +export const Foo = {}; +export default Foo; diff --git a/tests/baselines/reference/defaultNamedExportWithType3.symbols b/tests/baselines/reference/defaultNamedExportWithType3.symbols new file mode 100644 index 0000000000000..a7b666cf34f4b --- /dev/null +++ b/tests/baselines/reference/defaultNamedExportWithType3.symbols @@ -0,0 +1,10 @@ +=== tests/cases/compiler/defaultNamedExportWithType3.ts === +interface Foo {} +>Foo : Symbol(Foo, Decl(defaultNamedExportWithType3.ts, 0, 0), Decl(defaultNamedExportWithType3.ts, 1, 12)) + +export const Foo = {}; +>Foo : Symbol(Foo, Decl(defaultNamedExportWithType3.ts, 1, 12)) + +export default Foo; +>Foo : Symbol(Foo, Decl(defaultNamedExportWithType3.ts, 0, 0), Decl(defaultNamedExportWithType3.ts, 1, 12)) + diff --git a/tests/baselines/reference/defaultNamedExportWithType3.types b/tests/baselines/reference/defaultNamedExportWithType3.types new file mode 100644 index 0000000000000..d7962a0350882 --- /dev/null +++ b/tests/baselines/reference/defaultNamedExportWithType3.types @@ -0,0 +1,9 @@ +=== tests/cases/compiler/defaultNamedExportWithType3.ts === +interface Foo {} +export const Foo = {}; +>Foo : {} +>{} : {} + +export default Foo; +>Foo : Foo + diff --git a/tests/baselines/reference/defaultNamedExportWithType4.js b/tests/baselines/reference/defaultNamedExportWithType4.js new file mode 100644 index 0000000000000..c2b2ab9e6ae03 --- /dev/null +++ b/tests/baselines/reference/defaultNamedExportWithType4.js @@ -0,0 +1,9 @@ +//// [defaultNamedExportWithType4.ts] +interface Foo {} +const Foo = {}; +export default Foo; + + +//// [defaultNamedExportWithType4.js] +const Foo = {}; +export default Foo; diff --git a/tests/baselines/reference/defaultNamedExportWithType4.symbols b/tests/baselines/reference/defaultNamedExportWithType4.symbols new file mode 100644 index 0000000000000..a9af2140a5d54 --- /dev/null +++ b/tests/baselines/reference/defaultNamedExportWithType4.symbols @@ -0,0 +1,10 @@ +=== tests/cases/compiler/defaultNamedExportWithType4.ts === +interface Foo {} +>Foo : Symbol(Foo, Decl(defaultNamedExportWithType4.ts, 0, 0), Decl(defaultNamedExportWithType4.ts, 1, 5)) + +const Foo = {}; +>Foo : Symbol(Foo, Decl(defaultNamedExportWithType4.ts, 0, 0), Decl(defaultNamedExportWithType4.ts, 1, 5)) + +export default Foo; +>Foo : Symbol(Foo, Decl(defaultNamedExportWithType4.ts, 0, 0), Decl(defaultNamedExportWithType4.ts, 1, 5)) + diff --git a/tests/baselines/reference/defaultNamedExportWithType4.types b/tests/baselines/reference/defaultNamedExportWithType4.types new file mode 100644 index 0000000000000..b3a8b9a1cd30b --- /dev/null +++ b/tests/baselines/reference/defaultNamedExportWithType4.types @@ -0,0 +1,9 @@ +=== tests/cases/compiler/defaultNamedExportWithType4.ts === +interface Foo {} +const Foo = {}; +>Foo : {} +>{} : {} + +export default Foo; +>Foo : Foo + diff --git a/tests/baselines/reference/duplicateVarsAcrossFileBoundaries.js b/tests/baselines/reference/duplicateVarsAcrossFileBoundaries.js index f26b866991aa8..4e60fa535b5c0 100644 --- a/tests/baselines/reference/duplicateVarsAcrossFileBoundaries.js +++ b/tests/baselines/reference/duplicateVarsAcrossFileBoundaries.js @@ -43,6 +43,7 @@ var x = 0; var y = ""; var z = 0; //// [duplicateVarsAcrossFileBoundaries_4.js] +var p = P; var q; //// [duplicateVarsAcrossFileBoundaries_5.js] var p; diff --git a/tests/baselines/reference/importDeclWithExportModifierAndExportAssignment.js b/tests/baselines/reference/importDeclWithExportModifierAndExportAssignment.js index f3ea8c7226380..b6bb60425a779 100644 --- a/tests/baselines/reference/importDeclWithExportModifierAndExportAssignment.js +++ b/tests/baselines/reference/importDeclWithExportModifierAndExportAssignment.js @@ -8,6 +8,6 @@ export = x; //// [importDeclWithExportModifierAndExportAssignment.js] "use strict"; -exports.__esModule = true; exports.a = void 0; exports.a = x.c; +module.exports = x; diff --git a/tests/cases/compiler/defaultNamedExportWithType1.ts b/tests/cases/compiler/defaultNamedExportWithType1.ts new file mode 100644 index 0000000000000..eb3152587b22b --- /dev/null +++ b/tests/cases/compiler/defaultNamedExportWithType1.ts @@ -0,0 +1,5 @@ +// @target: esnext + +type Foo = number; +export const Foo = 1; +export default Foo; diff --git a/tests/cases/compiler/defaultNamedExportWithType2.ts b/tests/cases/compiler/defaultNamedExportWithType2.ts new file mode 100644 index 0000000000000..2ed15f88434cd --- /dev/null +++ b/tests/cases/compiler/defaultNamedExportWithType2.ts @@ -0,0 +1,5 @@ +// @target: esnext + +type Foo = number; +const Foo = 1; +export default Foo; diff --git a/tests/cases/compiler/defaultNamedExportWithType3.ts b/tests/cases/compiler/defaultNamedExportWithType3.ts new file mode 100644 index 0000000000000..1a6197d7ba7a2 --- /dev/null +++ b/tests/cases/compiler/defaultNamedExportWithType3.ts @@ -0,0 +1,5 @@ +// @target: esnext + +interface Foo {} +export const Foo = {}; +export default Foo; diff --git a/tests/cases/compiler/defaultNamedExportWithType4.ts b/tests/cases/compiler/defaultNamedExportWithType4.ts new file mode 100644 index 0000000000000..1bcb880888f7e --- /dev/null +++ b/tests/cases/compiler/defaultNamedExportWithType4.ts @@ -0,0 +1,5 @@ +// @target: esnext + +interface Foo {} +const Foo = {}; +export default Foo;