@@ -1086,14 +1086,12 @@ namespace ts {
10861086 return ( directoryName , callback ) => fsWatchFile ( directoryName , ( ) => callback ( directoryName ) , PollingInterval . Medium ) ;
10871087 }
10881088
1089- function readFile ( fileName : string , _encoding ?: string ) : string | undefined {
1090- perfLogger . logStartReadFile ( fileName ) ;
1089+ function readFileWorker ( fileName : string , _encoding ?: string ) : string | undefined {
10911090 if ( ! fileExists ( fileName ) ) {
10921091 return undefined ;
10931092 }
10941093 const buffer = _fs . readFileSync ( fileName ) ;
10951094 let len = buffer . length ;
1096- let result : string ;
10971095 if ( len >= 2 && buffer [ 0 ] === 0xFE && buffer [ 1 ] === 0xFF ) {
10981096 // Big endian UTF-16 byte order mark detected. Since big endian is not supported by node.js,
10991097 // flip all byte pairs and treat as little endian.
@@ -1103,22 +1101,25 @@ namespace ts {
11031101 buffer [ i ] = buffer [ i + 1 ] ;
11041102 buffer [ i + 1 ] = temp ;
11051103 }
1106- result = buffer . toString ( "utf16le" , 2 ) ;
1104+ return buffer . toString ( "utf16le" , 2 ) ;
11071105 }
1108- else if ( len >= 2 && buffer [ 0 ] === 0xFF && buffer [ 1 ] === 0xFE ) {
1106+ if ( len >= 2 && buffer [ 0 ] === 0xFF && buffer [ 1 ] === 0xFE ) {
11091107 // Little endian UTF-16 byte order mark detected
1110- result = buffer . toString ( "utf16le" , 2 ) ;
1108+ return buffer . toString ( "utf16le" , 2 ) ;
11111109 }
1112- else if ( len >= 3 && buffer [ 0 ] === 0xEF && buffer [ 1 ] === 0xBB && buffer [ 2 ] === 0xBF ) {
1110+ if ( len >= 3 && buffer [ 0 ] === 0xEF && buffer [ 1 ] === 0xBB && buffer [ 2 ] === 0xBF ) {
11131111 // UTF-8 byte order mark detected
1114- result = buffer . toString ( "utf8" , 3 ) ;
1115- }
1116- else {
1117- // Default is UTF-8 with no byte order mark
1118- result = buffer . toString ( "utf8" ) ;
1112+ return buffer . toString ( "utf8" , 3 ) ;
11191113 }
1114+ // Default is UTF-8 with no byte order mark
1115+ return buffer . toString ( "utf8" ) ;
1116+ }
1117+
1118+ function readFile ( fileName : string , _encoding ?: string ) : string | undefined {
1119+ perfLogger . logStartReadFile ( fileName ) ;
1120+ const file = readFileWorker ( fileName , _encoding ) ;
11201121 perfLogger . logStopReadFile ( ) ;
1121- return result ;
1122+ return file ;
11221123 }
11231124
11241125 function writeFile ( fileName : string , data : string , writeByteOrderMark ?: boolean ) : void {
0 commit comments