Get resolved module exports in symbol chain and not raw exports (#20661)
* Actually get module exports and not module exports sans export stars * style update * Trim test a bit
This commit is contained in:
parent
2c6501db52
commit
e1278f091c
|
@ -2216,7 +2216,8 @@ namespace ts {
|
|||
|
||||
// Look in the exported members, if we can find accessibleSymbolChain, symbol is accessible using this chain
|
||||
// but only if the symbolFromSymbolTable can be qualified
|
||||
const accessibleSymbolsFromExports = resolvedImportedSymbol.exports ? getAccessibleSymbolChainFromSymbolTable(resolvedImportedSymbol.exports) : undefined;
|
||||
const candidateTable = getExportsOfSymbol(resolvedImportedSymbol);
|
||||
const accessibleSymbolsFromExports = candidateTable && getAccessibleSymbolChainFromSymbolTable(candidateTable);
|
||||
if (accessibleSymbolsFromExports && canQualifySymbol(symbolFromSymbolTable, getQualifiedLeftMeaning(meaning))) {
|
||||
return [symbolFromSymbolTable].concat(accessibleSymbolsFromExports);
|
||||
}
|
||||
|
|
31
tests/baselines/reference/declarationEmitAliasExportStar.js
Normal file
31
tests/baselines/reference/declarationEmitAliasExportStar.js
Normal file
|
@ -0,0 +1,31 @@
|
|||
//// [tests/cases/compiler/declarationEmitAliasExportStar.ts] ////
|
||||
|
||||
//// [thingB.ts]
|
||||
export interface ThingB { }
|
||||
//// [things.ts]
|
||||
export * from "./thingB";
|
||||
//// [index.ts]
|
||||
import * as things from "./things";
|
||||
export const thing2 = (param: things.ThingB) => null;
|
||||
|
||||
|
||||
//// [thingB.js]
|
||||
"use strict";
|
||||
exports.__esModule = true;
|
||||
//// [things.js]
|
||||
"use strict";
|
||||
exports.__esModule = true;
|
||||
//// [index.js]
|
||||
"use strict";
|
||||
exports.__esModule = true;
|
||||
exports.thing2 = function (param) { return null; };
|
||||
|
||||
|
||||
//// [thingB.d.ts]
|
||||
export interface ThingB {
|
||||
}
|
||||
//// [things.d.ts]
|
||||
export * from "./thingB";
|
||||
//// [index.d.ts]
|
||||
import * as things from "./things";
|
||||
export declare const thing2: (param: things.ThingB) => any;
|
|
@ -0,0 +1,16 @@
|
|||
=== tests/cases/compiler/thingB.ts ===
|
||||
export interface ThingB { }
|
||||
>ThingB : Symbol(ThingB, Decl(thingB.ts, 0, 0))
|
||||
|
||||
=== tests/cases/compiler/things.ts ===
|
||||
export * from "./thingB";
|
||||
No type information for this code.=== tests/cases/compiler/index.ts ===
|
||||
import * as things from "./things";
|
||||
>things : Symbol(things, Decl(index.ts, 0, 6))
|
||||
|
||||
export const thing2 = (param: things.ThingB) => null;
|
||||
>thing2 : Symbol(thing2, Decl(index.ts, 1, 12))
|
||||
>param : Symbol(param, Decl(index.ts, 1, 23))
|
||||
>things : Symbol(things, Decl(index.ts, 0, 6))
|
||||
>ThingB : Symbol(things.ThingB, Decl(thingB.ts, 0, 0))
|
||||
|
|
@ -0,0 +1,18 @@
|
|||
=== tests/cases/compiler/thingB.ts ===
|
||||
export interface ThingB { }
|
||||
>ThingB : ThingB
|
||||
|
||||
=== tests/cases/compiler/things.ts ===
|
||||
export * from "./thingB";
|
||||
No type information for this code.=== tests/cases/compiler/index.ts ===
|
||||
import * as things from "./things";
|
||||
>things : typeof things
|
||||
|
||||
export const thing2 = (param: things.ThingB) => null;
|
||||
>thing2 : (param: things.ThingB) => any
|
||||
>(param: things.ThingB) => null : (param: things.ThingB) => any
|
||||
>param : things.ThingB
|
||||
>things : any
|
||||
>ThingB : things.ThingB
|
||||
>null : null
|
||||
|
8
tests/cases/compiler/declarationEmitAliasExportStar.ts
Normal file
8
tests/cases/compiler/declarationEmitAliasExportStar.ts
Normal file
|
@ -0,0 +1,8 @@
|
|||
// @declaration: true
|
||||
// @filename: thingB.ts
|
||||
export interface ThingB { }
|
||||
// @filename: things.ts
|
||||
export * from "./thingB";
|
||||
// @filename: index.ts
|
||||
import * as things from "./things";
|
||||
export const thing2 = (param: things.ThingB) => null;
|
Loading…
Reference in a new issue