From 889e3939f5451e6915c8b3e7e2285f51ca9fd87a Mon Sep 17 00:00:00 2001 From: Priyantha Lankapura Date: Thu, 8 Feb 2018 21:39:06 +0530 Subject: [PATCH 1/2] Add test for formatting of conditional types --- .../cases/fourslash/formattingConditionalOperator.ts | 2 +- tests/cases/fourslash/formattingConditionalTypes.ts | 12 ++++++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) create mode 100644 tests/cases/fourslash/formattingConditionalTypes.ts diff --git a/tests/cases/fourslash/formattingConditionalOperator.ts b/tests/cases/fourslash/formattingConditionalOperator.ts index 545adb572b152..308f39315a3c7 100644 --- a/tests/cases/fourslash/formattingConditionalOperator.ts +++ b/tests/cases/fourslash/formattingConditionalOperator.ts @@ -3,4 +3,4 @@ ////var x=true?1:2 format.document(); goTo.bof(); -verify.currentLineContentIs("var x = true ? 1 : 2");; \ No newline at end of file +verify.currentLineContentIs("var x = true ? 1 : 2"); \ No newline at end of file diff --git a/tests/cases/fourslash/formattingConditionalTypes.ts b/tests/cases/fourslash/formattingConditionalTypes.ts new file mode 100644 index 0000000000000..1d9526ef7bc11 --- /dev/null +++ b/tests/cases/fourslash/formattingConditionalTypes.ts @@ -0,0 +1,12 @@ +/// + +/////*L1*/type Diff1 = T extends U?never:T; +/////*L2*/type Diff2 = T extends U ? never : T; + +format.document(); + +goTo.marker("L1"); +verify.currentLineContentIs("type Diff1 = T extends U ? never : T;"); + +goTo.marker("L2"); +verify.currentLineContentIs("type Diff2 = T extends U ? never : T;"); \ No newline at end of file From 7aeec40129087dbe2a4fc7545f27a877347ae328 Mon Sep 17 00:00:00 2001 From: Priyantha Lankapura Date: Thu, 8 Feb 2018 21:39:38 +0530 Subject: [PATCH 2/2] Fix formatting of conditional types --- src/services/formatting/rules.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/services/formatting/rules.ts b/src/services/formatting/rules.ts index d8c94e8c7729a..0371fff09c442 100644 --- a/src/services/formatting/rules.ts +++ b/src/services/formatting/rules.ts @@ -409,6 +409,7 @@ namespace ts.formatting { switch (context.contextNode.kind) { case SyntaxKind.BinaryExpression: case SyntaxKind.ConditionalExpression: + case SyntaxKind.ConditionalType: case SyntaxKind.AsExpression: case SyntaxKind.ExportSpecifier: case SyntaxKind.ImportSpecifier: @@ -461,7 +462,8 @@ namespace ts.formatting { } function isConditionalOperatorContext(context: FormattingContext): boolean { - return context.contextNode.kind === SyntaxKind.ConditionalExpression; + return context.contextNode.kind === SyntaxKind.ConditionalExpression || + context.contextNode.kind === SyntaxKind.ConditionalType; } function isSameLineTokenOrBeforeBlockContext(context: FormattingContext): boolean {