From 8922a090397aafd224ed7219f70c58d9eed3b71e Mon Sep 17 00:00:00 2001 From: Jason Freeman Date: Wed, 13 May 2015 17:45:09 -0700 Subject: [PATCH] Only call getTypeOfSymbol recursively if it's a value --- src/compiler/checker.ts | 5 ++++- src/harness/fourslashRunner.ts | 4 ++-- tests/cases/fourslash/aliasMergingWithNamespace.ts | 9 +++++++++ 3 files changed, 15 insertions(+), 3 deletions(-) create mode 100644 tests/cases/fourslash/aliasMergingWithNamespace.ts diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index 7728c7d68e2..cb5bcbf0b7e 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -2414,7 +2414,10 @@ module ts { function getTypeOfAlias(symbol: Symbol): Type { let links = getSymbolLinks(symbol); if (!links.type) { - links.type = getTypeOfSymbol(resolveAlias(symbol)); + let targetSymbol = resolveAlias(symbol); + links.type = targetSymbol.flags & SymbolFlags.Value + ? getTypeOfSymbol(targetSymbol) + : unknownType; } return links.type; } diff --git a/src/harness/fourslashRunner.ts b/src/harness/fourslashRunner.ts index 1ab6e31cdbb..d11c5e639e5 100644 --- a/src/harness/fourslashRunner.ts +++ b/src/harness/fourslashRunner.ts @@ -35,9 +35,9 @@ class FourSlashRunner extends RunnerBase { this.tests = this.enumerateFiles(this.basePath, /\.ts/i, { recursive: false }); } - describe(this.testSuiteName, () => { this.tests.forEach((fn: string) => { - fn = ts.normalizeSlashes(fn); + describe(fn, () => { + fn = ts.normalizeSlashes(fn); var justName = fn.replace(/^.*[\\\/]/, ''); // Convert to relative path diff --git a/tests/cases/fourslash/aliasMergingWithNamespace.ts b/tests/cases/fourslash/aliasMergingWithNamespace.ts new file mode 100644 index 00000000000..66ab97890ce --- /dev/null +++ b/tests/cases/fourslash/aliasMergingWithNamespace.ts @@ -0,0 +1,9 @@ +/// + +////namespace bar { } +////import bar = bar/**/; + +goTo.marker(); +verify.quickInfoIs( +`namespace bar +import bar = bar`); \ No newline at end of file