Merge pull request #8539 from Microsoft/resolveTargetForVarSymbol

resolve target of alias when getting member from the module
This commit is contained in:
Vladimir Matveev 2016-05-09 17:08:36 -07:00
commit 747924a3c5
5 changed files with 114 additions and 0 deletions

View File

@ -1057,6 +1057,8 @@ namespace ts {
else {
symbolFromVariable = getPropertyOfVariable(targetSymbol, name.text);
}
// if symbolFromVariable is export - get its final target
symbolFromVariable = resolveSymbol(symbolFromVariable);
const symbolFromModule = getExportOfModule(targetSymbol, name.text);
const symbol = symbolFromModule && symbolFromVariable ?
combineValueAndTypeSymbols(symbolFromVariable, symbolFromModule) :

View File

@ -0,0 +1,23 @@
//// [exportEqualsOfModule.ts]
declare module '~popsicle/dist/request' {
export class Request {}
}
declare module '~popsicle/dist/common' {
import { Request } from '~popsicle/dist/request';
export { Request };
}
declare module 'popsicle' {
import alias = require('~popsicle/dist/common');
export = alias;
}
declare module 'popsicle-proxy-agent' {
import { Request } from 'popsicle';
function proxy(): (request: Request) => any;
export = proxy;
}
//// [exportEqualsOfModule.js]

View File

@ -0,0 +1,35 @@
=== tests/cases/compiler/exportEqualsOfModule.ts ===
declare module '~popsicle/dist/request' {
export class Request {}
>Request : Symbol(Request, Decl(exportEqualsOfModule.ts, 0, 41))
}
declare module '~popsicle/dist/common' {
import { Request } from '~popsicle/dist/request';
>Request : Symbol(Request, Decl(exportEqualsOfModule.ts, 5, 12))
export { Request };
>Request : Symbol(Request, Decl(exportEqualsOfModule.ts, 6, 12))
}
declare module 'popsicle' {
import alias = require('~popsicle/dist/common');
>alias : Symbol(alias, Decl(exportEqualsOfModule.ts, 9, 27))
export = alias;
>alias : Symbol(alias, Decl(exportEqualsOfModule.ts, 9, 27))
}
declare module 'popsicle-proxy-agent' {
import { Request } from 'popsicle';
>Request : Symbol(Request, Decl(exportEqualsOfModule.ts, 15, 12))
function proxy(): (request: Request) => any;
>proxy : Symbol(proxy, Decl(exportEqualsOfModule.ts, 15, 39))
>request : Symbol(request, Decl(exportEqualsOfModule.ts, 16, 23))
>Request : Symbol(Request, Decl(exportEqualsOfModule.ts, 15, 12))
export = proxy;
>proxy : Symbol(proxy, Decl(exportEqualsOfModule.ts, 15, 39))
}

View File

@ -0,0 +1,35 @@
=== tests/cases/compiler/exportEqualsOfModule.ts ===
declare module '~popsicle/dist/request' {
export class Request {}
>Request : Request
}
declare module '~popsicle/dist/common' {
import { Request } from '~popsicle/dist/request';
>Request : typeof Request
export { Request };
>Request : typeof Request
}
declare module 'popsicle' {
import alias = require('~popsicle/dist/common');
>alias : typeof alias
export = alias;
>alias : typeof alias
}
declare module 'popsicle-proxy-agent' {
import { Request } from 'popsicle';
>Request : typeof Request
function proxy(): (request: Request) => any;
>proxy : () => (request: Request) => any
>request : Request
>Request : Request
export = proxy;
>proxy : () => (request: Request) => any
}

View File

@ -0,0 +1,19 @@
declare module '~popsicle/dist/request' {
export class Request {}
}
declare module '~popsicle/dist/common' {
import { Request } from '~popsicle/dist/request';
export { Request };
}
declare module 'popsicle' {
import alias = require('~popsicle/dist/common');
export = alias;
}
declare module 'popsicle-proxy-agent' {
import { Request } from 'popsicle';
function proxy(): (request: Request) => any;
export = proxy;
}