@@ -127,7 +127,7 @@ class ProjectRunner extends RunnerBase {
127127 }
128128
129129 function compileProjectFiles ( moduleKind : ts . ModuleKind , getInputFiles : ( ) => string [ ] ,
130- getSourceFileText : ( fileName : string ) => string ,
130+ getSourceFileTextImpl : ( fileName : string ) => string ,
131131 writeFile : ( fileName : string , data : string , writeByteOrderMark : boolean ) => void ) : CompileProjectFilesResult {
132132
133133 let program = ts . createProgram ( getInputFiles ( ) , createCompilerOptions ( ) , createCompilerHost ( ) ) ;
@@ -170,6 +170,11 @@ class ProjectRunner extends RunnerBase {
170170 } ;
171171 }
172172
173+ function getSourceFileText ( fileName : string ) : string {
174+ const text = getSourceFileTextImpl ( fileName ) ;
175+ return text !== undefined ? text : getSourceFileTextImpl ( ts . getNormalizedAbsolutePath ( fileName , getCurrentDirectory ( ) ) ) ;
176+ }
177+
173178 function getSourceFile ( fileName : string , languageVersion : ts . ScriptTarget ) : ts . SourceFile {
174179 let sourceFile : ts . SourceFile = undefined ;
175180 if ( fileName === Harness . Compiler . defaultLibFileName ) {
@@ -194,7 +199,7 @@ class ProjectRunner extends RunnerBase {
194199 getCanonicalFileName : Harness . Compiler . getCanonicalFileName ,
195200 useCaseSensitiveFileNames : ( ) => Harness . IO . useCaseSensitiveFileNames ( ) ,
196201 getNewLine : ( ) => Harness . IO . newLine ( ) ,
197- fileExists : fileName => getSourceFile ( fileName , ts . ScriptTarget . ES5 ) !== undefined ,
202+ fileExists : fileName => fileName === Harness . Compiler . defaultLibFileName || getSourceFileText ( fileName ) !== undefined ,
198203 readFile : fileName => Harness . IO . readFile ( fileName )
199204 } ;
200205 }
@@ -318,7 +323,16 @@ class ProjectRunner extends RunnerBase {
318323 return ts . map ( allInputFiles , outputFile => outputFile . emittedFileName ) ;
319324 }
320325 function getSourceFileText ( fileName : string ) : string {
321- return ts . forEach ( allInputFiles , inputFile => inputFile . emittedFileName === fileName ? inputFile . code : undefined ) ;
326+ for ( const inputFile of allInputFiles ) {
327+ const isMatchingFile = ts . isRootedDiskPath ( fileName )
328+ ? ts . getNormalizedAbsolutePath ( inputFile . emittedFileName , getCurrentDirectory ( ) ) === fileName
329+ : inputFile . emittedFileName === fileName ;
330+
331+ if ( isMatchingFile ) {
332+ return inputFile . code ;
333+ }
334+ }
335+ return undefined ;
322336 }
323337
324338 function writeFile ( fileName : string , data : string , writeByteOrderMark : boolean ) {
0 commit comments