From 81435dafe16aecbd7a34ed602cf45d86ef8f6617 Mon Sep 17 00:00:00 2001 From: Priyantha Lankapura Date: Sat, 10 Feb 2018 10:51:29 +0530 Subject: [PATCH 1/3] add test for type infer formatting --- tests/cases/fourslash/formattingTypeInfer.ts | 45 ++++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 tests/cases/fourslash/formattingTypeInfer.ts diff --git a/tests/cases/fourslash/formattingTypeInfer.ts b/tests/cases/fourslash/formattingTypeInfer.ts new file mode 100644 index 0000000000000..f7a0ba9f2f205 --- /dev/null +++ b/tests/cases/fourslash/formattingTypeInfer.ts @@ -0,0 +1,45 @@ +/// + +//// +/////*L1*/type C = T extends Array; +//// +/////*L2*/ type C < T > = T extends Array < infer U >; +//// +/////*L3*/type C = T extends Array ? U : T; +//// +/////*L4*/ type C < T > = T extends Array < infer U > ? U : T ; +//// +/////*L5*/type Foo = T extends { a: infer U, b: infer U } ? U : never; +//// +/////*L6*/ type Foo < T > = T extends { a : infer U , b : infer U } ? U : never ; +//// +/////*L7*/type Bar = T extends { a: (x: infer U) => void, b: (x: infer U) => void } ? U : never; +//// +/////*L8*/ type Bar < T > = T extends { a : (x : infer U ) => void , b : (x : infer U ) => void } ? U : never ; +//// + +format.document(); + +goTo.marker("L1"); +verify.currentLineContentIs("type C = T extends Array;"); + +goTo.marker("L2"); +verify.currentLineContentIs("type C = T extends Array;"); + +goTo.marker("L3"); +verify.currentLineContentIs("type C = T extends Array ? U : T;"); + +goTo.marker("L4"); +verify.currentLineContentIs("type C = T extends Array ? U : T;"); + +goTo.marker("L5"); +verify.currentLineContentIs("type Foo = T extends { a: infer U, b: infer U } ? U : never;"); + +goTo.marker("L6"); +verify.currentLineContentIs("type Foo = T extends { a: infer U, b: infer U } ? U : never;"); + +goTo.marker("L7"); +verify.currentLineContentIs("type Bar = T extends { a: (x: infer U) => void, b: (x: infer U) => void } ? U : never;"); + +goTo.marker("L8"); +verify.currentLineContentIs("type Bar = T extends { a: (x: infer U) => void, b: (x: infer U) => void } ? U : never;"); \ No newline at end of file From 53c898fd9bd3da77b434a42a2d2c11bc2dca147a Mon Sep 17 00:00:00 2001 From: Priyantha Lankapura Date: Sat, 10 Feb 2018 10:51:54 +0530 Subject: [PATCH 2/3] Fix type infer formatting --- src/services/formatting/rules.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/src/services/formatting/rules.ts b/src/services/formatting/rules.ts index 0371fff09c442..75182d9bb003e 100644 --- a/src/services/formatting/rules.ts +++ b/src/services/formatting/rules.ts @@ -162,6 +162,7 @@ namespace ts.formatting { SyntaxKind.TypeKeyword, SyntaxKind.FromKeyword, SyntaxKind.KeyOfKeyword, + SyntaxKind.InferKeyword, ], anyToken, [isNonJsxSameLineTokenContext], From 80258b0ff1f9288cf4e3830445c43b899d8475c6 Mon Sep 17 00:00:00 2001 From: Priyantha Lankapura Date: Sat, 10 Feb 2018 11:04:14 +0530 Subject: [PATCH 3/3] update test to use condtional --- tests/cases/fourslash/formattingTypeInfer.ts | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/tests/cases/fourslash/formattingTypeInfer.ts b/tests/cases/fourslash/formattingTypeInfer.ts index f7a0ba9f2f205..f41a4ef19a828 100644 --- a/tests/cases/fourslash/formattingTypeInfer.ts +++ b/tests/cases/fourslash/formattingTypeInfer.ts @@ -1,9 +1,9 @@ /// //// -/////*L1*/type C = T extends Array; +/////*L1*/type C = T extends Array ? U : never; //// -/////*L2*/ type C < T > = T extends Array < infer U >; +/////*L2*/ type C < T > = T extends Array < infer U > ? U : never ; //// /////*L3*/type C = T extends Array ? U : T; //// @@ -21,10 +21,10 @@ format.document(); goTo.marker("L1"); -verify.currentLineContentIs("type C = T extends Array;"); +verify.currentLineContentIs("type C = T extends Array ? U : never;"); goTo.marker("L2"); -verify.currentLineContentIs("type C = T extends Array;"); +verify.currentLineContentIs("type C = T extends Array ? U : never;"); goTo.marker("L3"); verify.currentLineContentIs("type C = T extends Array ? U : T;");