@@ -805,6 +805,9 @@ module Harness {
805
805
return result ;
806
806
}
807
807
808
+ const NEWLINE_CRLF = "\r\n" ;
809
+ const NEWLINE_LF = "\n" ;
810
+
808
811
export var defaultLibFileName = 'lib.d.ts' ;
809
812
export var defaultLibSourceFile = createSourceFileAndAssertInvariants ( defaultLibFileName , IO . readFile ( libFolder + 'lib.core.d.ts' ) , /*languageVersion*/ ts . ScriptTarget . Latest ) ;
810
813
export var defaultES6LibSourceFile = createSourceFileAndAssertInvariants ( defaultLibFileName , IO . readFile ( libFolder + 'lib.core.es6.d.ts' ) , /*languageVersion*/ ts . ScriptTarget . Latest ) ;
@@ -822,7 +825,8 @@ module Harness {
822
825
scriptTarget : ts . ScriptTarget ,
823
826
useCaseSensitiveFileNames : boolean ,
824
827
// the currentDirectory is needed for rwcRunner to passed in specified current directory to compiler host
825
- currentDirectory ?: string ) : ts . CompilerHost {
828
+ currentDirectory ?: string ,
829
+ newLineKind ?: ts . NewLineKind ) : ts . CompilerHost {
826
830
827
831
// Local get canonical file name function, that depends on passed in parameter for useCaseSensitiveFileNames
828
832
function getCanonicalFileName ( fileName : string ) : string {
@@ -841,6 +845,11 @@ module Harness {
841
845
} ;
842
846
inputFiles . forEach ( register ) ;
843
847
848
+ let newLine =
849
+ newLineKind === ts . NewLineKind . CarriageReturnLineFeed ? NEWLINE_CRLF :
850
+ newLineKind === ts . NewLineKind . LineFeed ? NEWLINE_LF :
851
+ ts . sys . newLine ;
852
+
844
853
return {
845
854
getCurrentDirectory,
846
855
getSourceFile : ( fn , languageVersion ) => {
@@ -869,7 +878,7 @@ module Harness {
869
878
writeFile,
870
879
getCanonicalFileName,
871
880
useCaseSensitiveFileNames : ( ) => useCaseSensitiveFileNames ,
872
- getNewLine : ( ) => ts . sys . newLine
881
+ getNewLine : ( ) => newLine
873
882
} ;
874
883
}
875
884
@@ -1028,7 +1037,16 @@ module Harness {
1028
1037
1029
1038
case 'newline' :
1030
1039
case 'newlines' :
1031
- newLine = setting . value ;
1040
+ if ( setting . value . toLowerCase ( ) === 'crlf' ) {
1041
+ options . newLine = ts . NewLineKind . CarriageReturnLineFeed ;
1042
+ } else if ( setting . value . toLowerCase ( ) === 'lf' ) {
1043
+ options . newLine = ts . NewLineKind . LineFeed ;
1044
+ } else if ( setting . value === '\\n' ) {
1045
+ // Handle old usage, e.g. contextualTyping.ts:// @newline: \n
1046
+ newLine = setting . value ;
1047
+ } else {
1048
+ throw new Error ( 'Unknown option for newLine: ' + setting . value ) ;
1049
+ }
1032
1050
break ;
1033
1051
1034
1052
case 'comments' :
@@ -1081,7 +1099,7 @@ module Harness {
1081
1099
var programFiles = inputFiles . concat ( includeBuiltFiles ) . map ( file => file . unitName ) ;
1082
1100
var program = ts . createProgram ( programFiles , options , createCompilerHost ( inputFiles . concat ( includeBuiltFiles ) . concat ( otherFiles ) ,
1083
1101
( fn , contents , writeByteOrderMark ) => fileOutputs . push ( { fileName : fn , code : contents , writeByteOrderMark : writeByteOrderMark } ) ,
1084
- options . target , useCaseSensitiveFileNames , currentDirectory ) ) ;
1102
+ options . target , useCaseSensitiveFileNames , currentDirectory , options . newLine ) ) ;
1085
1103
1086
1104
var emitResult = program . emit ( ) ;
1087
1105
0 commit comments