Skip to content

Commit f95b0bc

Browse files
committed
resolve target of alias when getting member from the module
1 parent d17450d commit f95b0bc

File tree

5 files changed

+114
-0
lines changed

5 files changed

+114
-0
lines changed

src/compiler/checker.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1057,6 +1057,8 @@ namespace ts {
10571057
else {
10581058
symbolFromVariable = getPropertyOfVariable(targetSymbol, name.text);
10591059
}
1060+
// if symbolFromVariable is export - get its final target
1061+
symbolFromVariable = resolveSymbol(symbolFromVariable);
10601062
const symbolFromModule = getExportOfModule(targetSymbol, name.text);
10611063
const symbol = symbolFromModule && symbolFromVariable ?
10621064
combineValueAndTypeSymbols(symbolFromVariable, symbolFromModule) :
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
//// [exportEqualsOfModule.ts]
2+
declare module '~popsicle/dist/request' {
3+
export class Request {}
4+
}
5+
6+
declare module '~popsicle/dist/common' {
7+
import { Request } from '~popsicle/dist/request';
8+
export { Request };
9+
}
10+
11+
declare module 'popsicle' {
12+
import alias = require('~popsicle/dist/common');
13+
export = alias;
14+
}
15+
16+
declare module 'popsicle-proxy-agent' {
17+
import { Request } from 'popsicle';
18+
function proxy(): (request: Request) => any;
19+
export = proxy;
20+
}
21+
22+
23+
//// [exportEqualsOfModule.js]
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
=== tests/cases/compiler/exportEqualsOfModule.ts ===
2+
declare module '~popsicle/dist/request' {
3+
export class Request {}
4+
>Request : Symbol(Request, Decl(exportEqualsOfModule.ts, 0, 41))
5+
}
6+
7+
declare module '~popsicle/dist/common' {
8+
import { Request } from '~popsicle/dist/request';
9+
>Request : Symbol(Request, Decl(exportEqualsOfModule.ts, 5, 12))
10+
11+
export { Request };
12+
>Request : Symbol(Request, Decl(exportEqualsOfModule.ts, 6, 12))
13+
}
14+
15+
declare module 'popsicle' {
16+
import alias = require('~popsicle/dist/common');
17+
>alias : Symbol(alias, Decl(exportEqualsOfModule.ts, 9, 27))
18+
19+
export = alias;
20+
>alias : Symbol(alias, Decl(exportEqualsOfModule.ts, 9, 27))
21+
}
22+
23+
declare module 'popsicle-proxy-agent' {
24+
import { Request } from 'popsicle';
25+
>Request : Symbol(Request, Decl(exportEqualsOfModule.ts, 15, 12))
26+
27+
function proxy(): (request: Request) => any;
28+
>proxy : Symbol(proxy, Decl(exportEqualsOfModule.ts, 15, 39))
29+
>request : Symbol(request, Decl(exportEqualsOfModule.ts, 16, 23))
30+
>Request : Symbol(Request, Decl(exportEqualsOfModule.ts, 15, 12))
31+
32+
export = proxy;
33+
>proxy : Symbol(proxy, Decl(exportEqualsOfModule.ts, 15, 39))
34+
}
35+
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
=== tests/cases/compiler/exportEqualsOfModule.ts ===
2+
declare module '~popsicle/dist/request' {
3+
export class Request {}
4+
>Request : Request
5+
}
6+
7+
declare module '~popsicle/dist/common' {
8+
import { Request } from '~popsicle/dist/request';
9+
>Request : typeof Request
10+
11+
export { Request };
12+
>Request : typeof Request
13+
}
14+
15+
declare module 'popsicle' {
16+
import alias = require('~popsicle/dist/common');
17+
>alias : typeof alias
18+
19+
export = alias;
20+
>alias : typeof alias
21+
}
22+
23+
declare module 'popsicle-proxy-agent' {
24+
import { Request } from 'popsicle';
25+
>Request : typeof Request
26+
27+
function proxy(): (request: Request) => any;
28+
>proxy : () => (request: Request) => any
29+
>request : Request
30+
>Request : Request
31+
32+
export = proxy;
33+
>proxy : () => (request: Request) => any
34+
}
35+
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
declare module '~popsicle/dist/request' {
2+
export class Request {}
3+
}
4+
5+
declare module '~popsicle/dist/common' {
6+
import { Request } from '~popsicle/dist/request';
7+
export { Request };
8+
}
9+
10+
declare module 'popsicle' {
11+
import alias = require('~popsicle/dist/common');
12+
export = alias;
13+
}
14+
15+
declare module 'popsicle-proxy-agent' {
16+
import { Request } from 'popsicle';
17+
function proxy(): (request: Request) => any;
18+
export = proxy;
19+
}

0 commit comments

Comments
 (0)