Merge pull request #3041 from Microsoft/fixCircularAliasError

Fix circular alias error
This commit is contained in:
Anders Hejlsberg 2015-05-05 12:24:14 -07:00
commit 69de046074
6 changed files with 44 additions and 3 deletions

View file

@ -350,9 +350,9 @@ module ts {
}
else if (location.kind === SyntaxKind.SourceFile ||
(location.kind === SyntaxKind.ModuleDeclaration && (<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;

View file

@ -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;
}
/**

View file

@ -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

View file

@ -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))
}

View file

@ -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
}

View file

@ -0,0 +1,7 @@
// Regression test for #3018
declare var io: any;
declare module 'module' {
export default io;
}