@@ -1273,7 +1273,7 @@ namespace ts {
1273
1273
}
1274
1274
1275
1275
function processRootFile ( fileName : string , isDefaultLib : boolean ) {
1276
- processSourceFile ( normalizePath ( fileName ) , isDefaultLib ) ;
1276
+ processSourceFile ( normalizePath ( fileName ) , isDefaultLib , true ) ;
1277
1277
}
1278
1278
1279
1279
function fileReferenceIsEqualTo ( a : FileReference , b : FileReference ) : boolean {
@@ -1367,15 +1367,15 @@ namespace ts {
1367
1367
}
1368
1368
}
1369
1369
1370
- function processSourceFile ( fileName : string , isDefaultLib : boolean , refFile ?: SourceFile , refPos ?: number , refEnd ?: number ) {
1370
+ function processSourceFile ( fileName : string , isDefaultLib : boolean , isReference : boolean , refFile ?: SourceFile , refPos ?: number , refEnd ?: number ) {
1371
1371
let diagnosticArgument : string [ ] ;
1372
1372
let diagnostic : DiagnosticMessage ;
1373
1373
if ( hasExtension ( fileName ) ) {
1374
1374
if ( ! options . allowNonTsExtensions && ! forEach ( supportedExtensions , extension => fileExtensionIs ( host . getCanonicalFileName ( fileName ) , extension ) ) ) {
1375
1375
diagnostic = Diagnostics . File_0_has_unsupported_extension_The_only_supported_extensions_are_1 ;
1376
1376
diagnosticArgument = [ fileName , "'" + supportedExtensions . join ( "', '" ) + "'" ] ;
1377
1377
}
1378
- else if ( ! findSourceFile ( fileName , toPath ( fileName , currentDirectory , getCanonicalFileName ) , isDefaultLib , refFile , refPos , refEnd ) ) {
1378
+ else if ( ! findSourceFile ( fileName , toPath ( fileName , currentDirectory , getCanonicalFileName ) , isDefaultLib , isReference , refFile , refPos , refEnd ) ) {
1379
1379
diagnostic = Diagnostics . File_0_not_found ;
1380
1380
diagnosticArgument = [ fileName ] ;
1381
1381
}
@@ -1385,13 +1385,13 @@ namespace ts {
1385
1385
}
1386
1386
}
1387
1387
else {
1388
- const nonTsFile : SourceFile = options . allowNonTsExtensions && findSourceFile ( fileName , toPath ( fileName , currentDirectory , getCanonicalFileName ) , isDefaultLib , refFile , refPos , refEnd ) ;
1388
+ const nonTsFile : SourceFile = options . allowNonTsExtensions && findSourceFile ( fileName , toPath ( fileName , currentDirectory , getCanonicalFileName ) , isDefaultLib , isReference , refFile , refPos , refEnd ) ;
1389
1389
if ( ! nonTsFile ) {
1390
1390
if ( options . allowNonTsExtensions ) {
1391
1391
diagnostic = Diagnostics . File_0_not_found ;
1392
1392
diagnosticArgument = [ fileName ] ;
1393
1393
}
1394
- else if ( ! forEach ( supportedExtensions , extension => findSourceFile ( fileName + extension , toPath ( fileName + extension , currentDirectory , getCanonicalFileName ) , isDefaultLib , refFile , refPos , refEnd ) ) ) {
1394
+ else if ( ! forEach ( supportedExtensions , extension => findSourceFile ( fileName + extension , toPath ( fileName + extension , currentDirectory , getCanonicalFileName ) , isDefaultLib , isReference , refFile , refPos , refEnd ) ) ) {
1395
1395
diagnostic = Diagnostics . File_0_not_found ;
1396
1396
fileName += ".ts" ;
1397
1397
diagnosticArgument = [ fileName ] ;
@@ -1420,7 +1420,7 @@ namespace ts {
1420
1420
}
1421
1421
1422
1422
// Get source file from normalized fileName
1423
- function findSourceFile ( fileName : string , path : Path , isDefaultLib : boolean , refFile ?: SourceFile , refPos ?: number , refEnd ?: number ) : SourceFile {
1423
+ function findSourceFile ( fileName : string , path : Path , isDefaultLib : boolean , isReference : boolean , refFile ?: SourceFile , refPos ?: number , refEnd ?: number ) : SourceFile {
1424
1424
if ( filesByName . contains ( path ) ) {
1425
1425
const file = filesByName . get ( path ) ;
1426
1426
// try to check if we've already seen this file but with a different casing in path
@@ -1429,6 +1429,10 @@ namespace ts {
1429
1429
reportFileNamesDifferOnlyInCasingError ( fileName , file . fileName , refFile , refPos , refEnd ) ;
1430
1430
}
1431
1431
1432
+ if ( file ) {
1433
+ file . wasReferenced = file . wasReferenced || isReference ;
1434
+ }
1435
+
1432
1436
return file ;
1433
1437
}
1434
1438
@@ -1445,6 +1449,7 @@ namespace ts {
1445
1449
1446
1450
filesByName . set ( path , file ) ;
1447
1451
if ( file ) {
1452
+ file . wasReferenced = file . wasReferenced || isReference ;
1448
1453
file . path = path ;
1449
1454
1450
1455
if ( host . useCaseSensitiveFileNames ( ) ) {
@@ -1482,7 +1487,7 @@ namespace ts {
1482
1487
function processReferencedFiles ( file : SourceFile , basePath : string ) {
1483
1488
forEach ( file . referencedFiles , ref => {
1484
1489
const referencedFileName = resolveTripleslashReference ( ref . fileName , file . fileName ) ;
1485
- processSourceFile ( referencedFileName , /*isDefaultLib*/ false , file , ref . pos , ref . end ) ;
1490
+ processSourceFile ( referencedFileName , /*isDefaultLib*/ false , /*isReference*/ true , file , ref . pos , ref . end ) ;
1486
1491
} ) ;
1487
1492
}
1488
1493
@@ -1508,7 +1513,7 @@ namespace ts {
1508
1513
i < file . imports . length ;
1509
1514
1510
1515
if ( shouldAddFile ) {
1511
- const importedFile = findSourceFile ( resolution . resolvedFileName , toPath ( resolution . resolvedFileName , currentDirectory , getCanonicalFileName ) , /*isDefaultLib*/ false , file , skipTrivia ( file . text , file . imports [ i ] . pos ) , file . imports [ i ] . end ) ;
1516
+ const importedFile = findSourceFile ( resolution . resolvedFileName , toPath ( resolution . resolvedFileName , currentDirectory , getCanonicalFileName ) , /*isDefaultLib*/ false , /*isReference*/ false , file , skipTrivia ( file . text , file . imports [ i ] . pos ) , file . imports [ i ] . end ) ;
1512
1517
1513
1518
if ( importedFile && resolution . isExternalLibraryImport ) {
1514
1519
// Since currently irrespective of allowJs, we only look for supportedTypeScript extension external module files,
0 commit comments