diff --git a/tests/cases/fourslash/formattingOnChainedCallbacks.ts b/tests/cases/fourslash/formattingOnChainedCallbacks.ts
index b8dbc55d8b6..5c1eafbbd24 100644
--- a/tests/cases/fourslash/formattingOnChainedCallbacks.ts
+++ b/tests/cases/fourslash/formattingOnChainedCallbacks.ts
@@ -20,6 +20,50 @@
//// /*n2*/
//// .then();
+// @Filename: listSmart.ts
+////Promise
+//// .resolve().then(
+//// /*listSmart1*/
+//// 3,
+//// /*listSmart2*/
+//// [
+//// 3
+//// /*listSmart3*/
+//// ]
+//// /*listSmart4*/
+//// );
+
+// @Filename: listZeroIndent.ts
+////Promise.resolve([
+////]).then(
+//// /*listZeroIndent1*/
+//// [
+//// /*listZeroIndent2*/
+//// 3
+//// ]
+//// );
+
+// @Filename: listTypeParameter1.ts
+////foo.then
+//// <
+//// /*listTypeParameter1*/
+//// void
+//// /*listTypeParameter2*/
+//// >(
+//// function (): void {
+//// },
+//// function (): void {
+//// }
+//// );
+
+// @Filename: listComment.ts
+////Promise
+//// .then(
+//// // euphonium
+//// "k"
+//// // oboe
+//// );
+
goTo.marker('1');
edit.insertLine('');
@@ -49,4 +93,68 @@ verify.currentLineContentIs(' });');
goTo.marker('n1');
verify.indentationIs(8);
goTo.marker('n2');
-verify.indentationIs(4);
\ No newline at end of file
+verify.indentationIs(4);
+
+goTo.file(1);
+format.document();
+verify.currentFileContentIs(`Promise
+ .resolve().then(
+
+ 3,
+
+ [
+ 3
+
+ ]
+
+ );`);
+goTo.marker("listSmart1");
+verify.indentationIs(8);
+goTo.marker("listSmart2");
+verify.indentationIs(8);
+goTo.marker("listSmart3");
+verify.indentationIs(12);
+goTo.marker("listSmart4");
+verify.indentationIs(8);
+
+goTo.file(2);
+format.document();
+verify.currentFileContentIs(`Promise.resolve([
+]).then(
+
+ [
+
+ 3
+ ]
+);`);
+goTo.marker("listZeroIndent1");
+verify.indentationIs(4);
+goTo.marker("listZeroIndent2");
+verify.indentationIs(8);
+
+goTo.file(3);
+format.document();
+verify.currentFileContentIs(`foo.then
+ <
+
+ void
+
+ >(
+ function(): void {
+ },
+ function(): void {
+ }
+ );`);
+goTo.marker("listTypeParameter1");
+verify.indentationIs(8);
+goTo.marker("listTypeParameter2");
+verify.indentationIs(8);
+
+goTo.file(4);
+format.document();
+verify.currentFileContentIs(`Promise
+ .then(
+ // euphonium
+ "k"
+ // oboe
+ );`)
diff --git a/tests/cases/fourslash/formattingOnTypeLiteral.ts b/tests/cases/fourslash/formattingOnTypeLiteral.ts
new file mode 100644
index 00000000000..9b7929a5f5e
--- /dev/null
+++ b/tests/cases/fourslash/formattingOnTypeLiteral.ts
@@ -0,0 +1,37 @@
+///
( +//// minority: Pinned
>, +//// majorityCounter: number, +//// majority: Pinned
> +////): { +//// /*start*/ +//// majorityCounter: number; +//// vertecis: Pinned
; +//// }>; +//// /*end*/ +//// } { +////} + +format.document(); +verify.currentFileContentIs(`function _uniteVertices
( + minority: Pinned
>, + majorityCounter: number, + majority: Pinned
> +): { + + majorityCounter: number; + vertecis: Pinned
;
+ }>;
+
+} {
+}`);
+
+goTo.marker("start");
+verify.indentationIs(4);
+goTo.marker("end");
+verify.indentationIs(4);
\ No newline at end of file
diff --git a/tests/cases/fourslash/smartIndentOnListEnd.ts b/tests/cases/fourslash/smartIndentOnListEnd.ts
new file mode 100644
index 00000000000..21c6653fa95
--- /dev/null
+++ b/tests/cases/fourslash/smartIndentOnListEnd.ts
@@ -0,0 +1,12 @@
+///