fix newline handling

This commit is contained in:
Gabriela Araujo Britto
2021-10-14 16:09:24 -07:00
parent 00dc206d29
commit 28539b6cdf
10 changed files with 41 additions and 62 deletions

View File

@@ -829,6 +829,7 @@ namespace ts.Completions {
target: options.target,
omitTrailingSemicolon: true,
hasSnippet: true,
newLine: getNewLineKind(getNewLineCharacter(options, host.getNewLine)),
});
const importAdder = codefix.createImportAdder(sourceFile, program, preferences, host);

View File

@@ -1037,7 +1037,7 @@ namespace ts.textChanges {
/** Note: output node may be mutated input node. */
export function getNonformattedText(node: Node, sourceFile: SourceFile | undefined, newLineCharacter: string): { text: string, node: Node } {
const writer = createWriter(newLineCharacter);
const newLine = newLineCharacter === "\n" ? NewLineKind.LineFeed : NewLineKind.CarriageReturnLineFeed;
const newLine = getNewLineKind(newLineCharacter);
createPrinter({
newLine,
neverAsciiEscape: true,

View File

@@ -3262,5 +3262,9 @@ namespace ts {
return decisionFromFile ?? program.usesUriStyleNodeCoreModules;
}
export function getNewLineKind(newLineCharacter: string): NewLineKind {
return newLineCharacter === "\n" ? NewLineKind.LineFeed : NewLineKind.CarriageReturnLineFeed;
}
// #endregion
}

View File

@@ -1,5 +1,6 @@
/// <reference path="fourslash.ts" />
// @newline: LF
// @Filename: a.ts
// Case: Concrete class implements abstract method
////abstract class ABase {
@@ -111,12 +112,6 @@
////}
// format.setFormatOptions({
// newLineCharacter: "\n",
// });
// format.setOption("newline", "\n");
verify.completions({
marker: "a",
isNewIdentifierLocation: true,
@@ -134,7 +129,7 @@ verify.completions({
end: 0,
},
insertText:
"foo(param1: string, param2: boolean): Promise<void> {\r\n}\r\n",
"foo(param1: string, param2: boolean): Promise<void> {\n}\n",
}
],
});
@@ -156,7 +151,7 @@ verify.completions({
end: 0,
},
insertText:
"foo(a: string, b: string): string {\r\n}\r\n",
"foo(a: string, b: string): string {\n}\n",
}
],
});
@@ -178,7 +173,7 @@ verify.completions({
end: 0,
},
insertText:
"foo(a: string): string {\r\n}\r\n",
"foo(a: string): string {\n}\n",
}
],
});
@@ -200,7 +195,7 @@ verify.completions({
end: 0,
},
insertText:
"foo(a: string): string {\r\n}\r\n",
"foo(a: string): string {\n}\n",
}
],
});
@@ -222,7 +217,7 @@ verify.completions({
end: 0,
},
insertText:
"foo(a: string): string {\r\n}\r\n",
"foo(a: string): string {\n}\n",
}
],
});
@@ -244,7 +239,7 @@ verify.completions({
end: 0,
},
insertText:
"foo(a: string): string {\r\n}\r\n",
"foo(a: string): string {\n}\n",
}
],
});
@@ -266,9 +261,9 @@ verify.completions({
end: 0,
},
insertText:
"foo(a: string): string;\r\n\
foo(a: undefined, b: number): string;\r\n\
foo(a: any, b?: any): string {\r\n}\r\n",
"foo(a: string): string;\n\
foo(a: undefined, b: number): string;\n\
foo(a: any, b?: any): string {\n}\n",
}
],
});
@@ -299,7 +294,7 @@ verify.completions({
end: 0,
},
insertText:
"met(n: number): number {\r\n}\r\n",
"met(n: number): number {\n}\n",
}
],
});
@@ -321,7 +316,7 @@ verify.completions({
end: 0,
},
insertText:
"met<T>(t: T): T {\r\n}\r\n",
"met<T>(t: T): T {\n}\n",
},
{
name: "metcons",
@@ -332,7 +327,7 @@ verify.completions({
end: 0,
},
insertText:
"metcons<T extends string | number>(t: T): T {\r\n}\r\n",
"metcons<T extends string | number>(t: T): T {\n}\n",
}
],
});

View File

@@ -1,5 +1,6 @@
/// <reference path="fourslash.ts" />
// @newline: LF
// @Filename: h.ts
// @noImplicitOverride: true
// Case: Suggested method needs `override` modifier
@@ -11,10 +12,6 @@
//// f/*h*/
////}
// format.setFormatOptions({
// newLineCharacter: "\n",
// });
// format.setOption("newline", "\n");
verify.completions({
marker: "h",
@@ -33,7 +30,7 @@ verify.completions({
end: 0,
},
insertText:
"override foo(a: string): void {\r\n}\r\n",
"override foo(a: string): void {\n}\n",
}
],
});

View File

@@ -1,5 +1,6 @@
/// <reference path="fourslash.ts" />
// @newline: LF
// @Filename: a.ts
// Case: Snippet text needs escaping
////interface DollarSign {
@@ -9,10 +10,6 @@
//// /*a*/
////}
// format.setFormatOptions({
// newLineCharacter: "\n",
// });
// format.setOption("newline", "\n");
verify.completions({
marker: "a",
@@ -32,7 +29,7 @@ verify.completions({
},
isSnippet: true,
insertText:
"\"\\$usd\"(${1:a}: ${2:number}): ${3:number} {\r\n $0\r\n}\r\n",
"\"\\$usd\"(${1:a}: ${2:number}): ${3:number} {\n $0\n}\n",
}
],
});

View File

@@ -1,5 +1,6 @@
/// <reference path="fourslash.ts" />
// @newline: LF
// @Filename: boo.d.ts
// Case: Declaration files
////interface Ghost {
@@ -10,10 +11,6 @@
//// /*b*/
////}
// format.setFormatOptions({
// newLineCharacter: "\n",
// });
// format.setOption("newline", "\n");
verify.completions({
marker: "b",
@@ -32,7 +29,7 @@ verify.completions({
end: 0,
},
insertText:
"boo(): string;\r\n",
"boo(): string;\n",
}
],
});

View File

@@ -1,5 +1,6 @@
/// <reference path="fourslash.ts" />
// @newline: LF
// @Filename: secret.ts
// Case: accessibility modifier inheritance
////class Secret {
@@ -26,11 +27,6 @@
////}
// format.setFormatOptions({
// newLineCharacter: "\n",
// });
// format.setOption("newline", "\n");
verify.completions({
marker: "a",
isNewIdentifierLocation: true,
@@ -51,7 +47,7 @@ verify.completions({
pos: 0,
end: 0,
},
insertText: "protected hint(): string {\r\n}\r\n",
insertText: "protected hint(): string {\n}\n",
},
{
name: "refuse",
@@ -61,7 +57,7 @@ verify.completions({
pos: 0,
end: 0,
},
insertText: "public refuse(): string {\r\n}\r\n",
insertText: "public refuse(): string {\n}\n",
}
],
});

View File

@@ -1,5 +1,6 @@
/// <reference path="fourslash.ts" />
// @newline: LF
// @Filename: a.ts
// Case: abstract methods
////abstract class Ab {
@@ -15,10 +16,6 @@
//// abstract m/*c*/
////}
// format.setFormatOptions({
// newLineCharacter: "\n",
// });
// format.setOption("newline", "\n");
verify.completions({
marker: "a",
@@ -36,7 +33,7 @@ verify.completions({
pos: 0,
end: 0,
},
insertText: "met(n: string): void {\r\n}\r\n",
insertText: "met(n: string): void {\n}\n",
},
{
name: "met2",
@@ -46,7 +43,7 @@ verify.completions({
pos: 0,
end: 0,
},
insertText: "met2(n: number): void {\r\n}\r\n",
insertText: "met2(n: number): void {\n}\n",
}
],
});
@@ -67,7 +64,7 @@ verify.completions({
pos: 0,
end: 0,
},
insertText: "met(n: string): void;\r\n",
insertText: "met(n: string): void;\n",
},
{
name: "met2",
@@ -77,7 +74,7 @@ verify.completions({
pos: 0,
end: 0,
},
insertText: "met2(n: number): void;\r\n",
insertText: "met2(n: number): void;\n",
}
],
});
@@ -98,7 +95,7 @@ verify.completions({
pos: 0,
end: 0,
},
insertText: "met(n: string): void;\r\n",
insertText: "met(n: string): void;\n",
},
{
name: "met2",
@@ -108,7 +105,7 @@ verify.completions({
pos: 0,
end: 0,
},
insertText: "met2(n: number): void;\r\n",
insertText: "met2(n: number): void;\n",
}
],
});

View File

@@ -1,6 +1,7 @@
/// <reference path="fourslash.ts" />
// @Filename: a.ts
// @newline: LF
// Case: modifier inheritance/deduplication
////class A {
//// public method(): number {
@@ -25,12 +26,6 @@
//// public f/*c*/
////}
// format.setFormatOptions({
// newLineCharacter: "\n",
// });
// format.setOption("newline", "\n");
verify.completions({
marker: "a",
isNewIdentifierLocation: true,
@@ -47,7 +42,7 @@ verify.completions({
pos: 0,
end: 0,
},
insertText: "method(): number {\r\n}\r\n",
insertText: "method(): number {\n}\n",
},
],
});
@@ -68,7 +63,7 @@ verify.completions({
pos: 0,
end: 0,
},
insertText: "method(): number;\r\n",
insertText: "method(): number;\n",
},
],
});
@@ -90,9 +85,9 @@ verify.completions({
end: 0,
},
insertText:
"fun(a: number): number;\r\n\
public fun(a: undefined, b: string): number;\r\n\
public fun(a: any, b?: any): number {\r\n}\r\n",
"fun(a: number): number;\n\
public fun(a: undefined, b: string): number;\n\
public fun(a: any, b?: any): number {\n}\n",
},
],
});