@@ -2266,8 +2266,13 @@ namespace ts {
2266
2266
2267
2267
let redirectedPath : Path | undefined ;
2268
2268
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 ) ;
2271
2276
fileName = redirect ;
2272
2277
// Once we start redirecting to a file, we can potentially come back to it
2273
2278
// via a back-reference from another file in the .d.ts folder. If that happens we'll
@@ -2364,17 +2369,23 @@ namespace ts {
2364
2369
}
2365
2370
2366
2371
function getProjectReferenceRedirect ( fileName : string ) : string | undefined {
2372
+ const referencedProject = getProjectReferenceRedirectProject ( fileName ) ;
2373
+ return referencedProject && getProjectReferenceOutputName ( referencedProject , fileName ) ;
2374
+ }
2375
+
2376
+ function getProjectReferenceRedirectProject ( fileName : string ) {
2367
2377
// Ignore dts or any of the non ts files
2368
2378
if ( ! resolvedProjectReferences || ! resolvedProjectReferences . length || fileExtensionIs ( fileName , Extension . Dts ) || ! fileExtensionIsOneOf ( fileName , supportedTSExtensions ) ) {
2369
2379
return undefined ;
2370
2380
}
2371
2381
2372
2382
// If this file is produced by a referenced project, we need to rewrite it to
2373
2383
// 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 ) {
2378
2389
const out = referencedProject . commandLine . options . outFile || referencedProject . commandLine . options . out ;
2379
2390
return out ?
2380
2391
changeExtension ( out , Extension . Dts ) :
0 commit comments