diff --git a/packages/ts-morph/src/tests/compiler/ast/module/sourceFileTests.ts b/packages/ts-morph/src/tests/compiler/ast/module/sourceFileTests.ts index e83c3cab5..c9cf9e91b 100644 --- a/packages/ts-morph/src/tests/compiler/ast/module/sourceFileTests.ts +++ b/packages/ts-morph/src/tests/compiler/ast/module/sourceFileTests.ts @@ -1281,12 +1281,14 @@ function myFunction(param: MyClass) { const file2 = project.createSourceFile("/file2.ts", `import {MyInterface} from "./MyInterface";`); const file3 = project.createSourceFile("/file3.ts", `export * from "./MyInterface";`); const file4 = project.createSourceFile("/file4.ts", `const t = import("./MyInterface");`); + const file5 = project.createSourceFile("/file5.ts", `declare const t: import("./MyInterface").MyInterface;`); expectResult(sourceFile, []); expectResult(file1, [sourceFile]); expectResult(file2, [sourceFile]); expectResult(file3, [sourceFile]); expectResult(file4, [sourceFile]); + expectResult(file5, [sourceFile]); }); }); diff --git a/packages/ts-morph/src/utils/references/SourceFileReferenceContainer.ts b/packages/ts-morph/src/utils/references/SourceFileReferenceContainer.ts index f8fbe3c48..6493806ac 100644 --- a/packages/ts-morph/src/utils/references/SourceFileReferenceContainer.ts +++ b/packages/ts-morph/src/utils/references/SourceFileReferenceContainer.ts @@ -84,7 +84,11 @@ export class SourceFileReferenceContainer { return parent.getModuleSpecifierSourceFile(); else if (grandParent != null && Node.isImportEqualsDeclaration(grandParent)) return grandParent.getExternalModuleReferenceSourceFile(); - else if (Node.isCallExpression(parent)) { + else if (grandParent != null && Node.isImportTypeNode(grandParent)) { + const importTypeSymbol = grandParent.getSymbol() + if (importTypeSymbol != null) + return ModuleUtils.getReferencedSourceFileFromSymbol(importTypeSymbol); + } else if (Node.isCallExpression(parent)) { const literalSymbol = literal.getSymbol(); if (literalSymbol != null) return ModuleUtils.getReferencedSourceFileFromSymbol(literalSymbol);