Fix a bug with reexport-all

The prior code wasn't extracting the member part of the token name
when reexporting symbols, meaning the member was fully qualified.  For
example, when reexporting a class "C" from another module "other",
the resulting name was "other:C".  This is correct for the export node's
token -- so it can be resolved correctly to its source -- however,
clearly the identifier for the export should not contain the module
part.  This change strips it in the appropriate place.
This commit is contained in:
joeduffy 2017-01-16 12:15:02 -08:00
parent ae8284e86e
commit f226392051
2 changed files with 16 additions and 7 deletions

View file

@ -282,6 +282,15 @@ export class Transformer {
return path;
}
// extractMemberToken returns just the member part of a fully qualified token, leaving off the module part.
private extractMemberToken(token: symbols.Token): symbols.Token {
let sepIndex: number = token.indexOf(symbols.moduleSep);
if (sepIndex !== -1) {
token = token.substring(sepIndex+1);
}
return token;
}
// resolveModuleSymbol binds either a name or a path to an associated module symbol.
private resolveModuleSymbol(node: ts.Node, name?: string, path?: string): ts.Symbol {
// Resolve the module name to a real symbol.
@ -601,7 +610,7 @@ export class Transformer {
kind: ast.exportKind,
name: <ast.Identifier>{
kind: ast.identifierKind,
ident: name,
ident: this.extractMemberToken(name),
},
token: name,
});

View file

@ -188,27 +188,27 @@
"ident": "index"
},
"members": {
"other:C": {
"C": {
"kind": "Export",
"name": {
"kind": "Identifier",
"ident": "other:C"
"ident": "C"
},
"token": "other:C"
},
"other:I": {
"I": {
"kind": "Export",
"name": {
"kind": "Identifier",
"ident": "other:I"
"ident": "I"
},
"token": "other:I"
},
"other:v": {
"v": {
"kind": "Export",
"name": {
"kind": "Identifier",
"ident": "other:v"
"ident": "v"
},
"token": "other:v"
}