From a732ff6b35731bc7c4844dec2ac0f0443adb97b9 Mon Sep 17 00:00:00 2001 From: Priyantha Lankapura <403912+lankaapura@users.noreply.github.com> Date: Sun, 11 Feb 2018 02:06:04 +0530 Subject: [PATCH] Add type infer formatting (#21850) * add test for type infer formatting * Fix type infer formatting * update test to use condtional --- src/services/formatting/rules.ts | 1 + tests/cases/fourslash/formattingTypeInfer.ts | 45 ++++++++++++++++++++ 2 files changed, 46 insertions(+) create mode 100644 tests/cases/fourslash/formattingTypeInfer.ts diff --git a/src/services/formatting/rules.ts b/src/services/formatting/rules.ts index 0371fff09c4..75182d9bb00 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], diff --git a/tests/cases/fourslash/formattingTypeInfer.ts b/tests/cases/fourslash/formattingTypeInfer.ts new file mode 100644 index 00000000000..f41a4ef19a8 --- /dev/null +++ b/tests/cases/fourslash/formattingTypeInfer.ts @@ -0,0 +1,45 @@ +/// + +//// +/////*L1*/type C = T extends Array ? U : never; +//// +/////*L2*/ type C < T > = T extends Array < infer U > ? U : never ; +//// +/////*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 ? U : never;"); + +goTo.marker("L2"); +verify.currentLineContentIs("type C = T extends Array ? U : never;"); + +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