Visit the children of an import type/require call/dynamic import when looking for those (#24663)

This commit is contained in:
Wesley Wigham 2018-06-04 14:31:56 -07:00 committed by GitHub
parent cbbf2e4e6f
commit 7eaa78846e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 74 additions and 5 deletions

View File

@ -1819,11 +1819,9 @@ namespace ts {
else if (isLiteralImportTypeNode(node)) {
imports = append(imports, node.argument.literal);
}
else {
collectDynamicImportOrRequireCallsForEachChild(node);
if (hasJSDocNodes(node)) {
forEach(node.jsDoc, collectDynamicImportOrRequireCallsForEachChild);
}
collectDynamicImportOrRequireCallsForEachChild(node);
if (hasJSDocNodes(node)) {
forEach(node.jsDoc, collectDynamicImportOrRequireCallsForEachChild);
}
}

View File

@ -0,0 +1,17 @@
//// [tests/cases/compiler/importUsedInGenericImportResolves.ts] ////
//// [test1.d.ts]
export interface T<P> {
a: P;
}
//// [test2.d.ts]
export declare const theme: { a: string }
//// [test3.ts]
export const a: import("./test1").T<typeof import("./test2").theme> = null as any;
//// [test3.js]
"use strict";
exports.__esModule = true;
exports.a = null;

View File

@ -0,0 +1,21 @@
=== tests/cases/compiler/test1.d.ts ===
export interface T<P> {
>T : Symbol(T, Decl(test1.d.ts, 0, 0))
>P : Symbol(P, Decl(test1.d.ts, 0, 19))
a: P;
>a : Symbol(T.a, Decl(test1.d.ts, 0, 23))
>P : Symbol(P, Decl(test1.d.ts, 0, 19))
}
=== tests/cases/compiler/test2.d.ts ===
export declare const theme: { a: string }
>theme : Symbol(theme, Decl(test2.d.ts, 0, 20))
>a : Symbol(a, Decl(test2.d.ts, 0, 29))
=== tests/cases/compiler/test3.ts ===
export const a: import("./test1").T<typeof import("./test2").theme> = null as any;
>a : Symbol(a, Decl(test3.ts, 0, 12))
>T : Symbol(T, Decl(test1.d.ts, 0, 0))
>theme : Symbol(theme, Decl(test2.d.ts, 0, 20))

View File

@ -0,0 +1,23 @@
=== tests/cases/compiler/test1.d.ts ===
export interface T<P> {
>T : T<P>
>P : P
a: P;
>a : P
>P : P
}
=== tests/cases/compiler/test2.d.ts ===
export declare const theme: { a: string }
>theme : { a: string; }
>a : string
=== tests/cases/compiler/test3.ts ===
export const a: import("./test1").T<typeof import("./test2").theme> = null as any;
>a : import("tests/cases/compiler/test1").T<{ a: string; }>
>T : import("tests/cases/compiler/test1").T<P>
>theme : any
>null as any : any
>null : null

View File

@ -0,0 +1,10 @@
// @filename: test1.d.ts
export interface T<P> {
a: P;
}
// @filename: test2.d.ts
export declare const theme: { a: string }
// @filename: test3.ts
export const a: import("./test1").T<typeof import("./test2").theme> = null as any;