Merge pull request #2123 from Microsoft/fixExportStarMerging

Fix export * merging to not overwrite original members
This commit is contained in:
Anders Hejlsberg 2015-02-24 15:14:28 -08:00
commit a0eff6033e

View file

@ -727,24 +727,24 @@ module ts {
return symbol.flags & SymbolFlags.Module ? getExportsOfModule(symbol) : symbol.exports; return symbol.flags & SymbolFlags.Module ? getExportsOfModule(symbol) : symbol.exports;
} }
function getExportsOfModule(symbol: Symbol): SymbolTable { function getExportsOfModule(moduleSymbol: Symbol): SymbolTable {
var links = getSymbolLinks(symbol); var links = getSymbolLinks(moduleSymbol);
return links.resolvedExports || (links.resolvedExports = getExportsForModule(symbol)); return links.resolvedExports || (links.resolvedExports = getExportsForModule(moduleSymbol));
} }
function getExportsForModule(symbol: Symbol): SymbolTable { function getExportsForModule(moduleSymbol: Symbol): SymbolTable {
var result: SymbolTable; var result: SymbolTable;
var visitedSymbols: Symbol[] = []; var visitedSymbols: Symbol[] = [];
visit(symbol); visit(moduleSymbol);
return result; return result || moduleSymbol.exports;
function visit(symbol: Symbol) { function visit(symbol: Symbol) {
if (!contains(visitedSymbols, symbol)) { if (!contains(visitedSymbols, symbol)) {
visitedSymbols.push(symbol); visitedSymbols.push(symbol);
if (!result) { if (symbol !== moduleSymbol) {
result = symbol.exports; if (!result) {
} result = cloneSymbolTable(moduleSymbol.exports);
else { }
extendSymbolTable(result, symbol.exports); extendSymbolTable(result, symbol.exports);
} }
forEach(symbol.declarations, node => { forEach(symbol.declarations, node => {