From ddc5cc722ccbf068c0e6dd4ffa2be6f4163694b9 Mon Sep 17 00:00:00 2001 From: Andrew Branch Date: Wed, 19 Sep 2018 22:05:50 -0700 Subject: [PATCH] Theoretically protect against getProjectReferences changes in typescript@master --- src/utils.ts | 32 +++++++++++++++++++++----------- 1 file changed, 21 insertions(+), 11 deletions(-) diff --git a/src/utils.ts b/src/utils.ts index a24860585..caf1e7d42 100644 --- a/src/utils.ts +++ b/src/utils.ts @@ -259,7 +259,7 @@ export function supportsProjectReferences(instance: TSInstance) { export function isUsingProjectReferences(instance: TSInstance) { if (supportsProjectReferences(instance)) { const program = ensureProgram(instance); - return program && program.getProjectReferences(); + return Boolean(program && program.getProjectReferences()); } return false; } @@ -285,21 +285,31 @@ export function getAndCacheProjectReference( return projectReference; } +function getResolvedProjectReferences( + program: typescript.Program +): typescript.ResolvedProjectReference[] | undefined { + const getProjectReferences = + (program as any).getResolvedProjectReferences || + program.getProjectReferences; + if (getProjectReferences) { + return getProjectReferences(); + } + return; +} + function getProjectReferenceForFile(filePath: string, instance: TSInstance) { if (isUsingProjectReferences(instance)) { const program = ensureProgram(instance); return ( program && - program - .getProjectReferences()! - .find( - ref => - (ref && - ref.commandLine.fileNames.some( - file => path.normalize(file) === filePath - )) || - false - ) + getResolvedProjectReferences(program)!.find( + ref => + (ref && + ref.commandLine.fileNames.some( + file => path.normalize(file) === filePath + )) || + false + ) ); }