From effa032d5dcdfbf2909fb12b4f6993385cceda90 Mon Sep 17 00:00:00 2001 From: Nathan Shively-Sanders Date: Tue, 18 Apr 2017 16:18:27 -0700 Subject: [PATCH 1/2] mergeSymbol error uses first decl not valueDecl Previously it assumed valueDeclaration was present, which is not true for type aliases. --- src/compiler/checker.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index 6e249c3977d..81ea34b0510 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -574,7 +574,7 @@ namespace ts { recordMergedSymbol(target, source); } else if (target.flags & SymbolFlags.NamespaceModule) { - error(source.valueDeclaration.name, Diagnostics.Cannot_augment_module_0_with_value_exports_because_it_resolves_to_a_non_module_entity, symbolToString(target)); + error(source.declarations[0].name, Diagnostics.Cannot_augment_module_0_with_value_exports_because_it_resolves_to_a_non_module_entity, symbolToString(target)); } else { const message = target.flags & SymbolFlags.BlockScopedVariable || source.flags & SymbolFlags.BlockScopedVariable From eba15f41e4f6696fa4a2807a77538466cda33712 Mon Sep 17 00:00:00 2001 From: Nathan Shively-Sanders Date: Tue, 18 Apr 2017 16:19:05 -0700 Subject: [PATCH 2/2] Test:type alias merged w/interface-namespace errors Previously it crashed when it assumed valueDeclaration was always defined. --- .../reference/noSymbolForMergeCrash.errors.txt | 12 ++++++++++++ tests/baselines/reference/noSymbolForMergeCrash.js | 12 ++++++++++++ tests/cases/compiler/noSymbolForMergeCrash.ts | 6 ++++++ 3 files changed, 30 insertions(+) create mode 100644 tests/baselines/reference/noSymbolForMergeCrash.errors.txt create mode 100644 tests/baselines/reference/noSymbolForMergeCrash.js create mode 100644 tests/cases/compiler/noSymbolForMergeCrash.ts diff --git a/tests/baselines/reference/noSymbolForMergeCrash.errors.txt b/tests/baselines/reference/noSymbolForMergeCrash.errors.txt new file mode 100644 index 00000000000..1f8cd7897e0 --- /dev/null +++ b/tests/baselines/reference/noSymbolForMergeCrash.errors.txt @@ -0,0 +1,12 @@ +tests/cases/compiler/final.ts(1,6): error TS2649: Cannot augment module 'A' with value exports because it resolves to a non-module entity. + + +==== tests/cases/compiler/initial.ts (0 errors) ==== + interface A { } + namespace A {} + +==== tests/cases/compiler/final.ts (1 errors) ==== + type A = {} + ~ +!!! error TS2649: Cannot augment module 'A' with value exports because it resolves to a non-module entity. + \ No newline at end of file diff --git a/tests/baselines/reference/noSymbolForMergeCrash.js b/tests/baselines/reference/noSymbolForMergeCrash.js new file mode 100644 index 00000000000..341c9313982 --- /dev/null +++ b/tests/baselines/reference/noSymbolForMergeCrash.js @@ -0,0 +1,12 @@ +//// [tests/cases/compiler/noSymbolForMergeCrash.ts] //// + +//// [initial.ts] +interface A { } +namespace A {} + +//// [final.ts] +type A = {} + + +//// [initial.js] +//// [final.js] diff --git a/tests/cases/compiler/noSymbolForMergeCrash.ts b/tests/cases/compiler/noSymbolForMergeCrash.ts new file mode 100644 index 00000000000..a4e5eec8a19 --- /dev/null +++ b/tests/cases/compiler/noSymbolForMergeCrash.ts @@ -0,0 +1,6 @@ +// @Filename: initial.ts +interface A { } +namespace A {} + +// @Filename: final.ts +type A = {}