@@ -2266,8 +2266,13 @@ namespace ts {
22662266
22672267 let redirectedPath : Path | undefined ;
22682268 if ( refFile ) {
2269- const redirect = getProjectReferenceRedirect ( fileName ) ;
2270- if ( redirect ) {
2269+ const redirectProject = getProjectReferenceRedirectProject ( fileName ) ;
2270+ if ( redirectProject ) {
2271+ if ( redirectProject . commandLine . options . outFile || redirectProject . commandLine . options . out ) {
2272+ // Shouldnt create many to 1 mapping file in --out scenario
2273+ return undefined ;
2274+ }
2275+ const redirect = getProjectReferenceOutputName ( redirectProject , fileName ) ;
22712276 fileName = redirect ;
22722277 // Once we start redirecting to a file, we can potentially come back to it
22732278 // via a back-reference from another file in the .d.ts folder. If that happens we'll
@@ -2364,17 +2369,23 @@ namespace ts {
23642369 }
23652370
23662371 function getProjectReferenceRedirect ( fileName : string ) : string | undefined {
2372+ const referencedProject = getProjectReferenceRedirectProject ( fileName ) ;
2373+ return referencedProject && getProjectReferenceOutputName ( referencedProject , fileName ) ;
2374+ }
2375+
2376+ function getProjectReferenceRedirectProject ( fileName : string ) {
23672377 // Ignore dts or any of the non ts files
23682378 if ( ! resolvedProjectReferences || ! resolvedProjectReferences . length || fileExtensionIs ( fileName , Extension . Dts ) || ! fileExtensionIsOneOf ( fileName , supportedTSExtensions ) ) {
23692379 return undefined ;
23702380 }
23712381
23722382 // If this file is produced by a referenced project, we need to rewrite it to
23732383 // look in the output folder of the referenced project rather than the input
2374- const referencedProject = getResolvedProjectReferenceToRedirect ( fileName ) ;
2375- if ( ! referencedProject ) {
2376- return undefined ;
2377- }
2384+ return getResolvedProjectReferenceToRedirect ( fileName ) ;
2385+ }
2386+
2387+
2388+ function getProjectReferenceOutputName ( referencedProject : ResolvedProjectReference , fileName : string ) {
23782389 const out = referencedProject . commandLine . options . outFile || referencedProject . commandLine . options . out ;
23792390 return out ?
23802391 changeExtension ( out , Extension . Dts ) :
0 commit comments