From 06e858ff40cf7ff366c574b930a50ce386600d36 Mon Sep 17 00:00:00 2001 From: Adam Freidin Date: Fri, 15 Aug 2014 20:12:04 -0700 Subject: [PATCH 1/2] fix --declaration typechecking (complex case) This fixes generation of typescriptServices.d.ts, although this is not a current requirement ( https://github.com/Microsoft/TypeScript/issues/465 ). --- src/compiler/checker.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index 99c21d9ff15..cba51e8fd86 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -780,7 +780,7 @@ module ts { // But it cant, hence the accessible is going to be undefined, but that doesnt mean m.c is accessible // It is accessible if the parent m is accessible because then m.c can be accessed through qualification meaningToLook = getQualifiedLeftMeaning(meaning); - symbol = symbol.parent; + symbol = getParentOfSymbol(symbol); } // This could be a symbol that is not exported in the external module @@ -903,7 +903,7 @@ module ts { if (accessibleSymbolChain && !needsQualification(accessibleSymbolChain[0], enclosingDeclaration, accessibleSymbolChain.length === 1 ? meaning : getQualifiedLeftMeaning(meaning))) { break; } - symbol = accessibleSymbolChain ? accessibleSymbolChain[0].parent : symbol.parent; + symbol = getParentOfSymbol(accessibleSymbolChain ? accessibleSymbolChain[0] : symbol); meaning = getQualifiedLeftMeaning(meaning); } From d43f28d3a0b7bdb331e14a2acac84cf085220a3d Mon Sep 17 00:00:00 2001 From: Adam Freidin Date: Fri, 15 Aug 2014 21:14:33 -0700 Subject: [PATCH 2/2] baseline for typechecking --declaration --- .../reference/moduleSymbolMerging.js | 42 +++++++++++++++++++ tests/cases/compiler/moduleSymbolMerging.ts | 12 ++++++ 2 files changed, 54 insertions(+) create mode 100644 tests/baselines/reference/moduleSymbolMerging.js create mode 100644 tests/cases/compiler/moduleSymbolMerging.ts diff --git a/tests/baselines/reference/moduleSymbolMerging.js b/tests/baselines/reference/moduleSymbolMerging.js new file mode 100644 index 00000000000..4b35f939873 --- /dev/null +++ b/tests/baselines/reference/moduleSymbolMerging.js @@ -0,0 +1,42 @@ +//// [tests/cases/compiler/moduleSymbolMerging.ts] //// + +//// [A.ts] + +module A { export interface I {} } + +//// [B.ts] +/// +module A { ; } +module B { + export function f(): A.I { return null; } +} + + + +//// [A.js] +//// [B.js] +var A; +(function (A) { + ; +})(A || (A = {})); +var B; +(function (B) { + function f() { + return null; + } + B.f = f; +})(B || (B = {})); + + +//// [A.d.ts] +declare module A { + interface I { + } +} +//// [B.d.ts] +/// +declare module A { +} +declare module B { + function f(): A.I; +} diff --git a/tests/cases/compiler/moduleSymbolMerging.ts b/tests/cases/compiler/moduleSymbolMerging.ts new file mode 100644 index 00000000000..03df2c5e596 --- /dev/null +++ b/tests/cases/compiler/moduleSymbolMerging.ts @@ -0,0 +1,12 @@ +// @declaration: true + +// @Filename: A.ts +module A { export interface I {} } + +// @Filename: B.ts +/// +module A { ; } +module B { + export function f(): A.I { return null; } +} +