From 6338e2b1927fe525286ca98b23a2131789684cad Mon Sep 17 00:00:00 2001 From: Anders Hejlsberg Date: Tue, 5 May 2015 09:50:11 -0700 Subject: [PATCH 1/2] Fix 'resolveName' to correctly obtain local name of export default --- src/compiler/checker.ts | 4 ++-- src/compiler/utilities.ts | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index 04766f22c4e..5e599a27c6e 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -350,9 +350,9 @@ module ts { } else if (location.kind === SyntaxKind.SourceFile || (location.kind === SyntaxKind.ModuleDeclaration && (location).name.kind === SyntaxKind.StringLiteral)) { - result = getSymbol(getSymbolOfNode(location).exports, "default", meaning & SymbolFlags.ModuleMember); + result = getSymbolOfNode(location).exports["default"]; let localSymbol = getLocalSymbolForExportDefault(result); - if (result && (result.flags & meaning) && localSymbol && localSymbol.name === name) { + if (result && localSymbol && (result.flags & meaning) && localSymbol.name === name) { break loop; } result = undefined; diff --git a/src/compiler/utilities.ts b/src/compiler/utilities.ts index 3ddd8338960..0bb0065d1b0 100644 --- a/src/compiler/utilities.ts +++ b/src/compiler/utilities.ts @@ -1695,7 +1695,7 @@ module ts { } export function getLocalSymbolForExportDefault(symbol: Symbol) { - return symbol && symbol.valueDeclaration && (symbol.valueDeclaration.flags & NodeFlags.Default) ? symbol.valueDeclaration.localSymbol : undefined; + return symbol && symbol.valueDeclaration && (symbol.valueDeclaration.flags & NodeFlags.Default) ? symbol.valueDeclaration.localSymbol : undefined; } /** From f08d3793a3df0057c6ad82efdca7fcc6e5d65579 Mon Sep 17 00:00:00 2001 From: Anders Hejlsberg Date: Tue, 5 May 2015 10:02:29 -0700 Subject: [PATCH 2/2] Adding regression test --- tests/baselines/reference/exportDefaultVariable.js | 12 ++++++++++++ .../reference/exportDefaultVariable.symbols | 11 +++++++++++ .../baselines/reference/exportDefaultVariable.types | 11 +++++++++++ tests/cases/compiler/exportDefaultVariable.ts | 7 +++++++ 4 files changed, 41 insertions(+) create mode 100644 tests/baselines/reference/exportDefaultVariable.js create mode 100644 tests/baselines/reference/exportDefaultVariable.symbols create mode 100644 tests/baselines/reference/exportDefaultVariable.types create mode 100644 tests/cases/compiler/exportDefaultVariable.ts diff --git a/tests/baselines/reference/exportDefaultVariable.js b/tests/baselines/reference/exportDefaultVariable.js new file mode 100644 index 00000000000..beb8bb84a80 --- /dev/null +++ b/tests/baselines/reference/exportDefaultVariable.js @@ -0,0 +1,12 @@ +//// [exportDefaultVariable.ts] +// Regression test for #3018 + +declare var io: any; + +declare module 'module' { + export default io; +} + + +//// [exportDefaultVariable.js] +// Regression test for #3018 diff --git a/tests/baselines/reference/exportDefaultVariable.symbols b/tests/baselines/reference/exportDefaultVariable.symbols new file mode 100644 index 00000000000..cd7ebed926c --- /dev/null +++ b/tests/baselines/reference/exportDefaultVariable.symbols @@ -0,0 +1,11 @@ +=== tests/cases/compiler/exportDefaultVariable.ts === +// Regression test for #3018 + +declare var io: any; +>io : Symbol(io, Decl(exportDefaultVariable.ts, 2, 11)) + +declare module 'module' { + export default io; +>io : Symbol(default, Decl(exportDefaultVariable.ts, 2, 11)) +} + diff --git a/tests/baselines/reference/exportDefaultVariable.types b/tests/baselines/reference/exportDefaultVariable.types new file mode 100644 index 00000000000..a61c64b4685 --- /dev/null +++ b/tests/baselines/reference/exportDefaultVariable.types @@ -0,0 +1,11 @@ +=== tests/cases/compiler/exportDefaultVariable.ts === +// Regression test for #3018 + +declare var io: any; +>io : any + +declare module 'module' { + export default io; +>io : any +} + diff --git a/tests/cases/compiler/exportDefaultVariable.ts b/tests/cases/compiler/exportDefaultVariable.ts new file mode 100644 index 00000000000..95fd503dfc4 --- /dev/null +++ b/tests/cases/compiler/exportDefaultVariable.ts @@ -0,0 +1,7 @@ +// Regression test for #3018 + +declare var io: any; + +declare module 'module' { + export default io; +}