Skip to content

Commit 25dfcec

Browse files
committed
Merge pull request #4290 from Microsoft/fix4277
Fix #4277: Ensure we are passing refEnd and not length to findSourceFile
2 parents c1bcb99 + 1749329 commit 25dfcec

File tree

1 file changed

+13
-14
lines changed

1 file changed

+13
-14
lines changed

src/compiler/program.ts

Lines changed: 13 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -599,13 +599,7 @@ namespace ts {
599599
}
600600

601601
function processSourceFile(fileName: string, isDefaultLib: boolean, refFile?: SourceFile, refPos?: number, refEnd?: number) {
602-
let start: number;
603-
let length: number;
604602
let diagnosticArgument: string[];
605-
if (refEnd !== undefined && refPos !== undefined) {
606-
start = refPos;
607-
length = refEnd - refPos;
608-
}
609603
let diagnostic: DiagnosticMessage;
610604
if (hasExtension(fileName)) {
611605
if (!options.allowNonTsExtensions && !forEach(supportedExtensions, extension => fileExtensionIs(host.getCanonicalFileName(fileName), extension))) {
@@ -637,8 +631,8 @@ namespace ts {
637631
}
638632

639633
if (diagnostic) {
640-
if (refFile) {
641-
diagnostics.add(createFileDiagnostic(refFile, start, length, diagnostic, ...diagnosticArgument));
634+
if (refFile !== undefined && refEnd !== undefined && refPos !== undefined) {
635+
diagnostics.add(createFileDiagnostic(refFile, refPos, refEnd - refPos, diagnostic, ...diagnosticArgument));
642636
}
643637
else {
644638
diagnostics.add(createCompilerDiagnostic(diagnostic, ...diagnosticArgument));
@@ -647,7 +641,7 @@ namespace ts {
647641
}
648642

649643
// Get source file from normalized fileName
650-
function findSourceFile(fileName: string, isDefaultLib: boolean, refFile?: SourceFile, refStart?: number, refLength?: number): SourceFile {
644+
function findSourceFile(fileName: string, isDefaultLib: boolean, refFile?: SourceFile, refPos?: number, refEnd?: number): SourceFile {
651645
let canonicalName = host.getCanonicalFileName(normalizeSlashes(fileName));
652646
if (filesByName.contains(canonicalName)) {
653647
// We've already looked for this file, use cached result
@@ -662,8 +656,8 @@ namespace ts {
662656

663657
// We haven't looked for this file, do so now and cache result
664658
let file = host.getSourceFile(fileName, options.target, hostErrorMessage => {
665-
if (refFile) {
666-
diagnostics.add(createFileDiagnostic(refFile, refStart, refLength,
659+
if (refFile !== undefined && refPos !== undefined && refEnd !== undefined) {
660+
diagnostics.add(createFileDiagnostic(refFile, refPos, refEnd - refPos,
667661
Diagnostics.Cannot_read_file_0_Colon_1, fileName, hostErrorMessage));
668662
}
669663
else {
@@ -699,8 +693,13 @@ namespace ts {
699693
if (file && host.useCaseSensitiveFileNames()) {
700694
let sourceFileName = useAbsolutePath ? getNormalizedAbsolutePath(file.fileName, host.getCurrentDirectory()) : file.fileName;
701695
if (canonicalName !== sourceFileName) {
702-
diagnostics.add(createFileDiagnostic(refFile, refStart, refLength,
703-
Diagnostics.File_name_0_differs_from_already_included_file_name_1_only_in_casing, fileName, sourceFileName));
696+
if (refFile !== undefined && refPos !== undefined && refEnd !== undefined) {
697+
diagnostics.add(createFileDiagnostic(refFile, refPos, refEnd - refPos,
698+
Diagnostics.File_name_0_differs_from_already_included_file_name_1_only_in_casing, fileName, sourceFileName));
699+
}
700+
else {
701+
diagnostics.add(createCompilerDiagnostic(Diagnostics.File_name_0_differs_from_already_included_file_name_1_only_in_casing, fileName, sourceFileName));
702+
}
704703
}
705704
}
706705
return file;
@@ -737,7 +736,7 @@ namespace ts {
737736
return;
738737

739738
function findModuleSourceFile(fileName: string, nameLiteral: Expression) {
740-
return findSourceFile(fileName, /* isDefaultLib */ false, file, nameLiteral.pos, nameLiteral.end - nameLiteral.pos);
739+
return findSourceFile(fileName, /* isDefaultLib */ false, file, nameLiteral.pos, nameLiteral.end);
741740
}
742741
}
743742

0 commit comments

Comments
 (0)