From daf786ecd0fef9029b89d44f2e6ccd5772ea0b8b Mon Sep 17 00:00:00 2001 From: Alexander T Date: Tue, 14 Jan 2020 21:38:48 +0200 Subject: [PATCH] throw an error when no default export present (#35815) --- src/compiler/checker.ts | 11 +++++-- .../reexportMissingDefault.errors.txt | 11 +++++++ .../reference/reexportMissingDefault.js | 20 +++++++++++++ .../reference/reexportMissingDefault.symbols | 11 +++++++ .../reference/reexportMissingDefault.types | 12 ++++++++ .../reexportMissingDefault1.errors.txt | 12 ++++++++ .../reference/reexportMissingDefault1.js | 21 ++++++++++++++ .../reference/reexportMissingDefault1.symbols | 11 +++++++ .../reference/reexportMissingDefault1.types | 12 ++++++++ .../reexportMissingDefault2.errors.txt | 11 +++++++ .../reference/reexportMissingDefault2.js | 20 +++++++++++++ .../reference/reexportMissingDefault2.symbols | 11 +++++++ .../reference/reexportMissingDefault2.types | 12 ++++++++ .../reexportMissingDefault3.errors.txt | 11 +++++++ .../reference/reexportMissingDefault3.js | 20 +++++++++++++ .../reference/reexportMissingDefault3.symbols | 11 +++++++ .../reference/reexportMissingDefault3.types | 13 +++++++++ .../reexportMissingDefault4.errors.txt | 12 ++++++++ .../reference/reexportMissingDefault4.js | 17 +++++++++++ .../reference/reexportMissingDefault4.symbols | 14 +++++++++ .../reference/reexportMissingDefault4.types | 14 +++++++++ .../reference/reexportMissingDefault5.js | 29 +++++++++++++++++++ .../reference/reexportMissingDefault5.symbols | 15 ++++++++++ .../reference/reexportMissingDefault5.types | 15 ++++++++++ .../reexportMissingDefault6.errors.txt | 11 +++++++ .../reference/reexportMissingDefault6.js | 20 +++++++++++++ .../reference/reexportMissingDefault6.symbols | 11 +++++++ .../reference/reexportMissingDefault6.types | 12 ++++++++ .../reexportMissingDefault7.errors.txt | 11 +++++++ .../reference/reexportMissingDefault7.js | 14 +++++++++ .../reference/reexportMissingDefault7.symbols | 11 +++++++ .../reference/reexportMissingDefault7.types | 12 ++++++++ .../reference/reexportMissingDefault8.js | 18 ++++++++++++ .../reference/reexportMissingDefault8.symbols | 11 +++++++ .../reference/reexportMissingDefault8.types | 12 ++++++++ .../cases/compiler/reexportMissingDefault.ts | 6 ++++ .../cases/compiler/reexportMissingDefault1.ts | 7 +++++ .../cases/compiler/reexportMissingDefault2.ts | 7 +++++ .../cases/compiler/reexportMissingDefault3.ts | 6 ++++ .../cases/compiler/reexportMissingDefault4.ts | 7 +++++ .../cases/compiler/reexportMissingDefault5.ts | 8 +++++ .../cases/compiler/reexportMissingDefault6.ts | 7 +++++ .../cases/compiler/reexportMissingDefault7.ts | 7 +++++ .../cases/compiler/reexportMissingDefault8.ts | 7 +++++ 44 files changed, 548 insertions(+), 3 deletions(-) create mode 100644 tests/baselines/reference/reexportMissingDefault.errors.txt create mode 100644 tests/baselines/reference/reexportMissingDefault.js create mode 100644 tests/baselines/reference/reexportMissingDefault.symbols create mode 100644 tests/baselines/reference/reexportMissingDefault.types create mode 100644 tests/baselines/reference/reexportMissingDefault1.errors.txt create mode 100644 tests/baselines/reference/reexportMissingDefault1.js create mode 100644 tests/baselines/reference/reexportMissingDefault1.symbols create mode 100644 tests/baselines/reference/reexportMissingDefault1.types create mode 100644 tests/baselines/reference/reexportMissingDefault2.errors.txt create mode 100644 tests/baselines/reference/reexportMissingDefault2.js create mode 100644 tests/baselines/reference/reexportMissingDefault2.symbols create mode 100644 tests/baselines/reference/reexportMissingDefault2.types create mode 100644 tests/baselines/reference/reexportMissingDefault3.errors.txt create mode 100644 tests/baselines/reference/reexportMissingDefault3.js create mode 100644 tests/baselines/reference/reexportMissingDefault3.symbols create mode 100644 tests/baselines/reference/reexportMissingDefault3.types create mode 100644 tests/baselines/reference/reexportMissingDefault4.errors.txt create mode 100644 tests/baselines/reference/reexportMissingDefault4.js create mode 100644 tests/baselines/reference/reexportMissingDefault4.symbols create mode 100644 tests/baselines/reference/reexportMissingDefault4.types create mode 100644 tests/baselines/reference/reexportMissingDefault5.js create mode 100644 tests/baselines/reference/reexportMissingDefault5.symbols create mode 100644 tests/baselines/reference/reexportMissingDefault5.types create mode 100644 tests/baselines/reference/reexportMissingDefault6.errors.txt create mode 100644 tests/baselines/reference/reexportMissingDefault6.js create mode 100644 tests/baselines/reference/reexportMissingDefault6.symbols create mode 100644 tests/baselines/reference/reexportMissingDefault6.types create mode 100644 tests/baselines/reference/reexportMissingDefault7.errors.txt create mode 100644 tests/baselines/reference/reexportMissingDefault7.js create mode 100644 tests/baselines/reference/reexportMissingDefault7.symbols create mode 100644 tests/baselines/reference/reexportMissingDefault7.types create mode 100644 tests/baselines/reference/reexportMissingDefault8.js create mode 100644 tests/baselines/reference/reexportMissingDefault8.symbols create mode 100644 tests/baselines/reference/reexportMissingDefault8.types create mode 100644 tests/cases/compiler/reexportMissingDefault.ts create mode 100644 tests/cases/compiler/reexportMissingDefault1.ts create mode 100644 tests/cases/compiler/reexportMissingDefault2.ts create mode 100644 tests/cases/compiler/reexportMissingDefault3.ts create mode 100644 tests/cases/compiler/reexportMissingDefault4.ts create mode 100644 tests/cases/compiler/reexportMissingDefault5.ts create mode 100644 tests/cases/compiler/reexportMissingDefault6.ts create mode 100644 tests/cases/compiler/reexportMissingDefault7.ts create mode 100644 tests/cases/compiler/reexportMissingDefault8.ts diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index a860c037c8939..16644c2c5dc34 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -2322,13 +2322,18 @@ namespace ts { else { symbolFromVariable = getPropertyOfVariable(targetSymbol, name.escapedText); } + // if symbolFromVariable is export - get its final target symbolFromVariable = resolveSymbol(symbolFromVariable, dontResolveAlias); + let symbolFromModule = getExportOfModule(targetSymbol, name.escapedText, dontResolveAlias); - // If the export member we're looking for is default, and there is no real default but allowSyntheticDefaultImports is on, return the entire module as the default - if (!symbolFromModule && allowSyntheticDefaultImports && name.escapedText === InternalSymbolName.Default) { - symbolFromModule = resolveExternalModuleSymbol(moduleSymbol, dontResolveAlias) || resolveSymbol(moduleSymbol, dontResolveAlias); + if (symbolFromModule === undefined && name.escapedText === InternalSymbolName.Default) { + const file = find(moduleSymbol.declarations, isSourceFile); + if (canHaveSyntheticDefault(file, moduleSymbol, dontResolveAlias)) { + symbolFromModule = resolveExternalModuleSymbol(moduleSymbol, dontResolveAlias) || resolveSymbol(moduleSymbol, dontResolveAlias); + } } + const symbol = symbolFromModule && symbolFromVariable && symbolFromModule !== symbolFromVariable ? combineValueAndTypeSymbols(symbolFromVariable, symbolFromModule) : symbolFromModule || symbolFromVariable; diff --git a/tests/baselines/reference/reexportMissingDefault.errors.txt b/tests/baselines/reference/reexportMissingDefault.errors.txt new file mode 100644 index 0000000000000..d5d534c73c304 --- /dev/null +++ b/tests/baselines/reference/reexportMissingDefault.errors.txt @@ -0,0 +1,11 @@ +tests/cases/compiler/a.ts(2,10): error TS2305: Module '"./b"' has no exported member 'default'. + + +==== tests/cases/compiler/b.ts (0 errors) ==== + export const b = null; + +==== tests/cases/compiler/a.ts (1 errors) ==== + export { b } from "./b"; + export { default } from "./b"; + ~~~~~~~ +!!! error TS2305: Module '"./b"' has no exported member 'default'. \ No newline at end of file diff --git a/tests/baselines/reference/reexportMissingDefault.js b/tests/baselines/reference/reexportMissingDefault.js new file mode 100644 index 0000000000000..7f2136946be5c --- /dev/null +++ b/tests/baselines/reference/reexportMissingDefault.js @@ -0,0 +1,20 @@ +//// [tests/cases/compiler/reexportMissingDefault.ts] //// + +//// [b.ts] +export const b = null; + +//// [a.ts] +export { b } from "./b"; +export { default } from "./b"; + +//// [b.js] +"use strict"; +exports.__esModule = true; +exports.b = null; +//// [a.js] +"use strict"; +exports.__esModule = true; +var b_1 = require("./b"); +exports.b = b_1.b; +var b_2 = require("./b"); +exports["default"] = b_2["default"]; diff --git a/tests/baselines/reference/reexportMissingDefault.symbols b/tests/baselines/reference/reexportMissingDefault.symbols new file mode 100644 index 0000000000000..82df7f21dec14 --- /dev/null +++ b/tests/baselines/reference/reexportMissingDefault.symbols @@ -0,0 +1,11 @@ +=== tests/cases/compiler/b.ts === +export const b = null; +>b : Symbol(b, Decl(b.ts, 0, 12)) + +=== tests/cases/compiler/a.ts === +export { b } from "./b"; +>b : Symbol(b, Decl(a.ts, 0, 8)) + +export { default } from "./b"; +>default : Symbol(default, Decl(a.ts, 1, 8)) + diff --git a/tests/baselines/reference/reexportMissingDefault.types b/tests/baselines/reference/reexportMissingDefault.types new file mode 100644 index 0000000000000..216dd41e6734c --- /dev/null +++ b/tests/baselines/reference/reexportMissingDefault.types @@ -0,0 +1,12 @@ +=== tests/cases/compiler/b.ts === +export const b = null; +>b : any +>null : null + +=== tests/cases/compiler/a.ts === +export { b } from "./b"; +>b : any + +export { default } from "./b"; +>default : any + diff --git a/tests/baselines/reference/reexportMissingDefault1.errors.txt b/tests/baselines/reference/reexportMissingDefault1.errors.txt new file mode 100644 index 0000000000000..ae88d06915483 --- /dev/null +++ b/tests/baselines/reference/reexportMissingDefault1.errors.txt @@ -0,0 +1,12 @@ +tests/cases/compiler/a.ts(2,10): error TS2305: Module '"./b"' has no exported member 'default'. + + +==== tests/cases/compiler/b.ts (0 errors) ==== + export const b = null; + +==== tests/cases/compiler/a.ts (1 errors) ==== + export { b } from "./b"; + export { default } from "./b"; + ~~~~~~~ +!!! error TS2305: Module '"./b"' has no exported member 'default'. + \ No newline at end of file diff --git a/tests/baselines/reference/reexportMissingDefault1.js b/tests/baselines/reference/reexportMissingDefault1.js new file mode 100644 index 0000000000000..9bde4148f0780 --- /dev/null +++ b/tests/baselines/reference/reexportMissingDefault1.js @@ -0,0 +1,21 @@ +//// [tests/cases/compiler/reexportMissingDefault1.ts] //// + +//// [b.ts] +export const b = null; + +//// [a.ts] +export { b } from "./b"; +export { default } from "./b"; + + +//// [b.js] +"use strict"; +exports.__esModule = true; +exports.b = null; +//// [a.js] +"use strict"; +exports.__esModule = true; +var b_1 = require("./b"); +exports.b = b_1.b; +var b_2 = require("./b"); +exports["default"] = b_2["default"]; diff --git a/tests/baselines/reference/reexportMissingDefault1.symbols b/tests/baselines/reference/reexportMissingDefault1.symbols new file mode 100644 index 0000000000000..82df7f21dec14 --- /dev/null +++ b/tests/baselines/reference/reexportMissingDefault1.symbols @@ -0,0 +1,11 @@ +=== tests/cases/compiler/b.ts === +export const b = null; +>b : Symbol(b, Decl(b.ts, 0, 12)) + +=== tests/cases/compiler/a.ts === +export { b } from "./b"; +>b : Symbol(b, Decl(a.ts, 0, 8)) + +export { default } from "./b"; +>default : Symbol(default, Decl(a.ts, 1, 8)) + diff --git a/tests/baselines/reference/reexportMissingDefault1.types b/tests/baselines/reference/reexportMissingDefault1.types new file mode 100644 index 0000000000000..216dd41e6734c --- /dev/null +++ b/tests/baselines/reference/reexportMissingDefault1.types @@ -0,0 +1,12 @@ +=== tests/cases/compiler/b.ts === +export const b = null; +>b : any +>null : null + +=== tests/cases/compiler/a.ts === +export { b } from "./b"; +>b : any + +export { default } from "./b"; +>default : any + diff --git a/tests/baselines/reference/reexportMissingDefault2.errors.txt b/tests/baselines/reference/reexportMissingDefault2.errors.txt new file mode 100644 index 0000000000000..d5d534c73c304 --- /dev/null +++ b/tests/baselines/reference/reexportMissingDefault2.errors.txt @@ -0,0 +1,11 @@ +tests/cases/compiler/a.ts(2,10): error TS2305: Module '"./b"' has no exported member 'default'. + + +==== tests/cases/compiler/b.ts (0 errors) ==== + export const b = null; + +==== tests/cases/compiler/a.ts (1 errors) ==== + export { b } from "./b"; + export { default } from "./b"; + ~~~~~~~ +!!! error TS2305: Module '"./b"' has no exported member 'default'. \ No newline at end of file diff --git a/tests/baselines/reference/reexportMissingDefault2.js b/tests/baselines/reference/reexportMissingDefault2.js new file mode 100644 index 0000000000000..bdc362e39a3b5 --- /dev/null +++ b/tests/baselines/reference/reexportMissingDefault2.js @@ -0,0 +1,20 @@ +//// [tests/cases/compiler/reexportMissingDefault2.ts] //// + +//// [b.ts] +export const b = null; + +//// [a.ts] +export { b } from "./b"; +export { default } from "./b"; + +//// [b.js] +"use strict"; +exports.__esModule = true; +exports.b = null; +//// [a.js] +"use strict"; +exports.__esModule = true; +var b_1 = require("./b"); +exports.b = b_1.b; +var b_2 = require("./b"); +exports["default"] = b_2["default"]; diff --git a/tests/baselines/reference/reexportMissingDefault2.symbols b/tests/baselines/reference/reexportMissingDefault2.symbols new file mode 100644 index 0000000000000..82df7f21dec14 --- /dev/null +++ b/tests/baselines/reference/reexportMissingDefault2.symbols @@ -0,0 +1,11 @@ +=== tests/cases/compiler/b.ts === +export const b = null; +>b : Symbol(b, Decl(b.ts, 0, 12)) + +=== tests/cases/compiler/a.ts === +export { b } from "./b"; +>b : Symbol(b, Decl(a.ts, 0, 8)) + +export { default } from "./b"; +>default : Symbol(default, Decl(a.ts, 1, 8)) + diff --git a/tests/baselines/reference/reexportMissingDefault2.types b/tests/baselines/reference/reexportMissingDefault2.types new file mode 100644 index 0000000000000..216dd41e6734c --- /dev/null +++ b/tests/baselines/reference/reexportMissingDefault2.types @@ -0,0 +1,12 @@ +=== tests/cases/compiler/b.ts === +export const b = null; +>b : any +>null : null + +=== tests/cases/compiler/a.ts === +export { b } from "./b"; +>b : any + +export { default } from "./b"; +>default : any + diff --git a/tests/baselines/reference/reexportMissingDefault3.errors.txt b/tests/baselines/reference/reexportMissingDefault3.errors.txt new file mode 100644 index 0000000000000..44338250a3d6a --- /dev/null +++ b/tests/baselines/reference/reexportMissingDefault3.errors.txt @@ -0,0 +1,11 @@ +tests/cases/compiler/a.ts(2,10): error TS2305: Module '"./b"' has no exported member 'default'. + + +==== tests/cases/compiler/b.ts (0 errors) ==== + export const b = null; + +==== tests/cases/compiler/a.ts (1 errors) ==== + export { b } from "./b"; + export { default as a } from "./b"; + ~~~~~~~ +!!! error TS2305: Module '"./b"' has no exported member 'default'. \ No newline at end of file diff --git a/tests/baselines/reference/reexportMissingDefault3.js b/tests/baselines/reference/reexportMissingDefault3.js new file mode 100644 index 0000000000000..546dabf24191b --- /dev/null +++ b/tests/baselines/reference/reexportMissingDefault3.js @@ -0,0 +1,20 @@ +//// [tests/cases/compiler/reexportMissingDefault3.ts] //// + +//// [b.ts] +export const b = null; + +//// [a.ts] +export { b } from "./b"; +export { default as a } from "./b"; + +//// [b.js] +"use strict"; +exports.__esModule = true; +exports.b = null; +//// [a.js] +"use strict"; +exports.__esModule = true; +var b_1 = require("./b"); +exports.b = b_1.b; +var b_2 = require("./b"); +exports.a = b_2["default"]; diff --git a/tests/baselines/reference/reexportMissingDefault3.symbols b/tests/baselines/reference/reexportMissingDefault3.symbols new file mode 100644 index 0000000000000..8625301636aba --- /dev/null +++ b/tests/baselines/reference/reexportMissingDefault3.symbols @@ -0,0 +1,11 @@ +=== tests/cases/compiler/b.ts === +export const b = null; +>b : Symbol(b, Decl(b.ts, 0, 12)) + +=== tests/cases/compiler/a.ts === +export { b } from "./b"; +>b : Symbol(b, Decl(a.ts, 0, 8)) + +export { default as a } from "./b"; +>a : Symbol(a, Decl(a.ts, 1, 8)) + diff --git a/tests/baselines/reference/reexportMissingDefault3.types b/tests/baselines/reference/reexportMissingDefault3.types new file mode 100644 index 0000000000000..bb7a3faaa0504 --- /dev/null +++ b/tests/baselines/reference/reexportMissingDefault3.types @@ -0,0 +1,13 @@ +=== tests/cases/compiler/b.ts === +export const b = null; +>b : any +>null : null + +=== tests/cases/compiler/a.ts === +export { b } from "./b"; +>b : any + +export { default as a } from "./b"; +>default : any +>a : any + diff --git a/tests/baselines/reference/reexportMissingDefault4.errors.txt b/tests/baselines/reference/reexportMissingDefault4.errors.txt new file mode 100644 index 0000000000000..012823fa945f1 --- /dev/null +++ b/tests/baselines/reference/reexportMissingDefault4.errors.txt @@ -0,0 +1,12 @@ +tests/cases/compiler/a.ts(2,10): error TS2305: Module '"./b"' has no exported member 'default'. + + +==== tests/cases/compiler/b.d.ts (0 errors) ==== + declare var b: number; + export { b }; + +==== tests/cases/compiler/a.ts (1 errors) ==== + export { b } from "./b"; + export { default } from "./b"; + ~~~~~~~ +!!! error TS2305: Module '"./b"' has no exported member 'default'. \ No newline at end of file diff --git a/tests/baselines/reference/reexportMissingDefault4.js b/tests/baselines/reference/reexportMissingDefault4.js new file mode 100644 index 0000000000000..d0c83b804d0f7 --- /dev/null +++ b/tests/baselines/reference/reexportMissingDefault4.js @@ -0,0 +1,17 @@ +//// [tests/cases/compiler/reexportMissingDefault4.ts] //// + +//// [b.d.ts] +declare var b: number; +export { b }; + +//// [a.ts] +export { b } from "./b"; +export { default } from "./b"; + +//// [a.js] +"use strict"; +exports.__esModule = true; +var b_1 = require("./b"); +exports.b = b_1.b; +var b_2 = require("./b"); +exports["default"] = b_2["default"]; diff --git a/tests/baselines/reference/reexportMissingDefault4.symbols b/tests/baselines/reference/reexportMissingDefault4.symbols new file mode 100644 index 0000000000000..f2b92b965d01f --- /dev/null +++ b/tests/baselines/reference/reexportMissingDefault4.symbols @@ -0,0 +1,14 @@ +=== tests/cases/compiler/b.d.ts === +declare var b: number; +>b : Symbol(b, Decl(b.d.ts, 0, 11)) + +export { b }; +>b : Symbol(b, Decl(b.d.ts, 1, 8)) + +=== tests/cases/compiler/a.ts === +export { b } from "./b"; +>b : Symbol(b, Decl(a.ts, 0, 8)) + +export { default } from "./b"; +>default : Symbol(default, Decl(a.ts, 1, 8)) + diff --git a/tests/baselines/reference/reexportMissingDefault4.types b/tests/baselines/reference/reexportMissingDefault4.types new file mode 100644 index 0000000000000..78049be14812b --- /dev/null +++ b/tests/baselines/reference/reexportMissingDefault4.types @@ -0,0 +1,14 @@ +=== tests/cases/compiler/b.d.ts === +declare var b: number; +>b : number + +export { b }; +>b : number + +=== tests/cases/compiler/a.ts === +export { b } from "./b"; +>b : number + +export { default } from "./b"; +>default : any + diff --git a/tests/baselines/reference/reexportMissingDefault5.js b/tests/baselines/reference/reexportMissingDefault5.js new file mode 100644 index 0000000000000..070c03e3fd729 --- /dev/null +++ b/tests/baselines/reference/reexportMissingDefault5.js @@ -0,0 +1,29 @@ +//// [tests/cases/compiler/reexportMissingDefault5.ts] //// + +//// [b.d.ts] +declare var b: number; +export { b }; + +//// [a.ts] +export { b } from "./b"; +export { default as Foo } from "./b"; + +//// [a.js] +System.register(["./b"], function (exports_1, context_1) { + "use strict"; + var __moduleName = context_1 && context_1.id; + return { + setters: [ + function (b_1_1) { + exports_1({ + "b": b_1_1["b"] + }); + exports_1({ + "Foo": b_1_1["default"] + }); + } + ], + execute: function () { + } + }; +}); diff --git a/tests/baselines/reference/reexportMissingDefault5.symbols b/tests/baselines/reference/reexportMissingDefault5.symbols new file mode 100644 index 0000000000000..72adbf12d0fe5 --- /dev/null +++ b/tests/baselines/reference/reexportMissingDefault5.symbols @@ -0,0 +1,15 @@ +=== tests/cases/compiler/b.d.ts === +declare var b: number; +>b : Symbol(b, Decl(b.d.ts, 0, 11)) + +export { b }; +>b : Symbol(b, Decl(b.d.ts, 1, 8)) + +=== tests/cases/compiler/a.ts === +export { b } from "./b"; +>b : Symbol(b, Decl(a.ts, 0, 8)) + +export { default as Foo } from "./b"; +>default : Symbol("tests/cases/compiler/b", Decl(b.d.ts, 0, 0)) +>Foo : Symbol(Foo, Decl(a.ts, 1, 8)) + diff --git a/tests/baselines/reference/reexportMissingDefault5.types b/tests/baselines/reference/reexportMissingDefault5.types new file mode 100644 index 0000000000000..516e4f3b1f294 --- /dev/null +++ b/tests/baselines/reference/reexportMissingDefault5.types @@ -0,0 +1,15 @@ +=== tests/cases/compiler/b.d.ts === +declare var b: number; +>b : number + +export { b }; +>b : number + +=== tests/cases/compiler/a.ts === +export { b } from "./b"; +>b : number + +export { default as Foo } from "./b"; +>default : typeof import("tests/cases/compiler/b") +>Foo : typeof import("tests/cases/compiler/b") + diff --git a/tests/baselines/reference/reexportMissingDefault6.errors.txt b/tests/baselines/reference/reexportMissingDefault6.errors.txt new file mode 100644 index 0000000000000..d5d534c73c304 --- /dev/null +++ b/tests/baselines/reference/reexportMissingDefault6.errors.txt @@ -0,0 +1,11 @@ +tests/cases/compiler/a.ts(2,10): error TS2305: Module '"./b"' has no exported member 'default'. + + +==== tests/cases/compiler/b.ts (0 errors) ==== + export const b = null; + +==== tests/cases/compiler/a.ts (1 errors) ==== + export { b } from "./b"; + export { default } from "./b"; + ~~~~~~~ +!!! error TS2305: Module '"./b"' has no exported member 'default'. \ No newline at end of file diff --git a/tests/baselines/reference/reexportMissingDefault6.js b/tests/baselines/reference/reexportMissingDefault6.js new file mode 100644 index 0000000000000..44a5ae7766b00 --- /dev/null +++ b/tests/baselines/reference/reexportMissingDefault6.js @@ -0,0 +1,20 @@ +//// [tests/cases/compiler/reexportMissingDefault6.ts] //// + +//// [b.ts] +export const b = null; + +//// [a.ts] +export { b } from "./b"; +export { default } from "./b"; + +//// [b.js] +"use strict"; +exports.__esModule = true; +exports.b = null; +//// [a.js] +"use strict"; +exports.__esModule = true; +var b_1 = require("./b"); +exports.b = b_1.b; +var b_2 = require("./b"); +exports["default"] = b_2["default"]; diff --git a/tests/baselines/reference/reexportMissingDefault6.symbols b/tests/baselines/reference/reexportMissingDefault6.symbols new file mode 100644 index 0000000000000..82df7f21dec14 --- /dev/null +++ b/tests/baselines/reference/reexportMissingDefault6.symbols @@ -0,0 +1,11 @@ +=== tests/cases/compiler/b.ts === +export const b = null; +>b : Symbol(b, Decl(b.ts, 0, 12)) + +=== tests/cases/compiler/a.ts === +export { b } from "./b"; +>b : Symbol(b, Decl(a.ts, 0, 8)) + +export { default } from "./b"; +>default : Symbol(default, Decl(a.ts, 1, 8)) + diff --git a/tests/baselines/reference/reexportMissingDefault6.types b/tests/baselines/reference/reexportMissingDefault6.types new file mode 100644 index 0000000000000..216dd41e6734c --- /dev/null +++ b/tests/baselines/reference/reexportMissingDefault6.types @@ -0,0 +1,12 @@ +=== tests/cases/compiler/b.ts === +export const b = null; +>b : any +>null : null + +=== tests/cases/compiler/a.ts === +export { b } from "./b"; +>b : any + +export { default } from "./b"; +>default : any + diff --git a/tests/baselines/reference/reexportMissingDefault7.errors.txt b/tests/baselines/reference/reexportMissingDefault7.errors.txt new file mode 100644 index 0000000000000..d5d534c73c304 --- /dev/null +++ b/tests/baselines/reference/reexportMissingDefault7.errors.txt @@ -0,0 +1,11 @@ +tests/cases/compiler/a.ts(2,10): error TS2305: Module '"./b"' has no exported member 'default'. + + +==== tests/cases/compiler/b.ts (0 errors) ==== + export const b = null; + +==== tests/cases/compiler/a.ts (1 errors) ==== + export { b } from "./b"; + export { default } from "./b"; + ~~~~~~~ +!!! error TS2305: Module '"./b"' has no exported member 'default'. \ No newline at end of file diff --git a/tests/baselines/reference/reexportMissingDefault7.js b/tests/baselines/reference/reexportMissingDefault7.js new file mode 100644 index 0000000000000..18923866fe695 --- /dev/null +++ b/tests/baselines/reference/reexportMissingDefault7.js @@ -0,0 +1,14 @@ +//// [tests/cases/compiler/reexportMissingDefault7.ts] //// + +//// [b.ts] +export const b = null; + +//// [a.ts] +export { b } from "./b"; +export { default } from "./b"; + +//// [b.js] +export var b = null; +//// [a.js] +export { b } from "./b"; +export { default } from "./b"; diff --git a/tests/baselines/reference/reexportMissingDefault7.symbols b/tests/baselines/reference/reexportMissingDefault7.symbols new file mode 100644 index 0000000000000..82df7f21dec14 --- /dev/null +++ b/tests/baselines/reference/reexportMissingDefault7.symbols @@ -0,0 +1,11 @@ +=== tests/cases/compiler/b.ts === +export const b = null; +>b : Symbol(b, Decl(b.ts, 0, 12)) + +=== tests/cases/compiler/a.ts === +export { b } from "./b"; +>b : Symbol(b, Decl(a.ts, 0, 8)) + +export { default } from "./b"; +>default : Symbol(default, Decl(a.ts, 1, 8)) + diff --git a/tests/baselines/reference/reexportMissingDefault7.types b/tests/baselines/reference/reexportMissingDefault7.types new file mode 100644 index 0000000000000..216dd41e6734c --- /dev/null +++ b/tests/baselines/reference/reexportMissingDefault7.types @@ -0,0 +1,12 @@ +=== tests/cases/compiler/b.ts === +export const b = null; +>b : any +>null : null + +=== tests/cases/compiler/a.ts === +export { b } from "./b"; +>b : any + +export { default } from "./b"; +>default : any + diff --git a/tests/baselines/reference/reexportMissingDefault8.js b/tests/baselines/reference/reexportMissingDefault8.js new file mode 100644 index 0000000000000..95d2c04c01867 --- /dev/null +++ b/tests/baselines/reference/reexportMissingDefault8.js @@ -0,0 +1,18 @@ +//// [tests/cases/compiler/reexportMissingDefault8.ts] //// + +//// [b.ts] +const b = null; +export = b; + +//// [a.ts] +export { default } from "./b"; + +//// [b.js] +"use strict"; +var b = null; +module.exports = b; +//// [a.js] +"use strict"; +exports.__esModule = true; +var b_1 = require("./b"); +exports["default"] = b_1["default"]; diff --git a/tests/baselines/reference/reexportMissingDefault8.symbols b/tests/baselines/reference/reexportMissingDefault8.symbols new file mode 100644 index 0000000000000..e20139c379066 --- /dev/null +++ b/tests/baselines/reference/reexportMissingDefault8.symbols @@ -0,0 +1,11 @@ +=== tests/cases/compiler/b.ts === +const b = null; +>b : Symbol(b, Decl(b.ts, 0, 5)) + +export = b; +>b : Symbol(b, Decl(b.ts, 0, 5)) + +=== tests/cases/compiler/a.ts === +export { default } from "./b"; +>default : Symbol(default, Decl(a.ts, 0, 8)) + diff --git a/tests/baselines/reference/reexportMissingDefault8.types b/tests/baselines/reference/reexportMissingDefault8.types new file mode 100644 index 0000000000000..7fee1c75dcfcc --- /dev/null +++ b/tests/baselines/reference/reexportMissingDefault8.types @@ -0,0 +1,12 @@ +=== tests/cases/compiler/b.ts === +const b = null; +>b : any +>null : null + +export = b; +>b : any + +=== tests/cases/compiler/a.ts === +export { default } from "./b"; +>default : any + diff --git a/tests/cases/compiler/reexportMissingDefault.ts b/tests/cases/compiler/reexportMissingDefault.ts new file mode 100644 index 0000000000000..e661788188c49 --- /dev/null +++ b/tests/cases/compiler/reexportMissingDefault.ts @@ -0,0 +1,6 @@ +// @filename: b.ts +export const b = null; + +// @filename: a.ts +export { b } from "./b"; +export { default } from "./b"; \ No newline at end of file diff --git a/tests/cases/compiler/reexportMissingDefault1.ts b/tests/cases/compiler/reexportMissingDefault1.ts new file mode 100644 index 0000000000000..22f1966c6d416 --- /dev/null +++ b/tests/cases/compiler/reexportMissingDefault1.ts @@ -0,0 +1,7 @@ +// @esModuleInterop: true +// @filename: b.ts +export const b = null; + +// @filename: a.ts +export { b } from "./b"; +export { default } from "./b"; diff --git a/tests/cases/compiler/reexportMissingDefault2.ts b/tests/cases/compiler/reexportMissingDefault2.ts new file mode 100644 index 0000000000000..e7649b88a4762 --- /dev/null +++ b/tests/cases/compiler/reexportMissingDefault2.ts @@ -0,0 +1,7 @@ +// @allowSyntheticDefaultImports: true +// @filename: b.ts +export const b = null; + +// @filename: a.ts +export { b } from "./b"; +export { default } from "./b"; \ No newline at end of file diff --git a/tests/cases/compiler/reexportMissingDefault3.ts b/tests/cases/compiler/reexportMissingDefault3.ts new file mode 100644 index 0000000000000..e28659c87f6ab --- /dev/null +++ b/tests/cases/compiler/reexportMissingDefault3.ts @@ -0,0 +1,6 @@ +// @filename: b.ts +export const b = null; + +// @filename: a.ts +export { b } from "./b"; +export { default as a } from "./b"; \ No newline at end of file diff --git a/tests/cases/compiler/reexportMissingDefault4.ts b/tests/cases/compiler/reexportMissingDefault4.ts new file mode 100644 index 0000000000000..96b3a1f030b07 --- /dev/null +++ b/tests/cases/compiler/reexportMissingDefault4.ts @@ -0,0 +1,7 @@ +// @filename: b.d.ts +declare var b: number; +export { b }; + +// @filename: a.ts +export { b } from "./b"; +export { default } from "./b"; \ No newline at end of file diff --git a/tests/cases/compiler/reexportMissingDefault5.ts b/tests/cases/compiler/reexportMissingDefault5.ts new file mode 100644 index 0000000000000..d3cc13fe229c9 --- /dev/null +++ b/tests/cases/compiler/reexportMissingDefault5.ts @@ -0,0 +1,8 @@ +// @module: system +// @filename: b.d.ts +declare var b: number; +export { b }; + +// @filename: a.ts +export { b } from "./b"; +export { default as Foo } from "./b"; \ No newline at end of file diff --git a/tests/cases/compiler/reexportMissingDefault6.ts b/tests/cases/compiler/reexportMissingDefault6.ts new file mode 100644 index 0000000000000..87debfc463f7a --- /dev/null +++ b/tests/cases/compiler/reexportMissingDefault6.ts @@ -0,0 +1,7 @@ +// @module: commonjs +// @filename: b.ts +export const b = null; + +// @filename: a.ts +export { b } from "./b"; +export { default } from "./b"; \ No newline at end of file diff --git a/tests/cases/compiler/reexportMissingDefault7.ts b/tests/cases/compiler/reexportMissingDefault7.ts new file mode 100644 index 0000000000000..249b7cb4d9233 --- /dev/null +++ b/tests/cases/compiler/reexportMissingDefault7.ts @@ -0,0 +1,7 @@ +// @module: ES2015 +// @filename: b.ts +export const b = null; + +// @filename: a.ts +export { b } from "./b"; +export { default } from "./b"; \ No newline at end of file diff --git a/tests/cases/compiler/reexportMissingDefault8.ts b/tests/cases/compiler/reexportMissingDefault8.ts new file mode 100644 index 0000000000000..2a8f19e9c114e --- /dev/null +++ b/tests/cases/compiler/reexportMissingDefault8.ts @@ -0,0 +1,7 @@ +// @esModuleInterop: true +// @filename: b.ts +const b = null; +export = b; + +// @filename: a.ts +export { default } from "./b"; \ No newline at end of file