From 94a05058965068c93223691ee461064129b0038a Mon Sep 17 00:00:00 2001 From: Andy Hanson Date: Mon, 16 Jul 2018 10:18:08 -0700 Subject: [PATCH] Simplify rules for `isControlFlowEndingStatement` --- src/services/formatting/smartIndenter.ts | 11 ++--------- tests/cases/fourslash/smartIndentReturn.ts | 13 +++++++++++++ 2 files changed, 15 insertions(+), 9 deletions(-) create mode 100644 tests/cases/fourslash/smartIndentReturn.ts diff --git a/src/services/formatting/smartIndenter.ts b/src/services/formatting/smartIndenter.ts index c578c38cbc117..b506dd5269ff9 100644 --- a/src/services/formatting/smartIndenter.ts +++ b/src/services/formatting/smartIndenter.ts @@ -579,17 +579,10 @@ namespace ts.formatting { function isControlFlowEndingStatement(kind: SyntaxKind, parent: TextRangeWithKind): boolean { switch (kind) { case SyntaxKind.ReturnStatement: - case SyntaxKind.ThrowStatement: { - if (parent.kind !== SyntaxKind.Block) { - return true; - } - const grandParent = (parent as Node).parent; - // In a function, we may want to write inner functions after this. - return !(grandParent && grandParent.kind === SyntaxKind.FunctionExpression || grandParent.kind === SyntaxKind.FunctionDeclaration); - } + case SyntaxKind.ThrowStatement: case SyntaxKind.ContinueStatement: case SyntaxKind.BreakStatement: - return true; + return parent.kind !== SyntaxKind.Block; default: return false; } diff --git a/tests/cases/fourslash/smartIndentReturn.ts b/tests/cases/fourslash/smartIndentReturn.ts new file mode 100644 index 0000000000000..b419ecf4ea346 --- /dev/null +++ b/tests/cases/fourslash/smartIndentReturn.ts @@ -0,0 +1,13 @@ +/// + +//// function foo() { +//// if (true) { +//// {| "indentation": 8|} +//// return; +//// {| "indentation": 8|} +//// } +//// } + +for (const marker of test.markers()) { + verify.indentationAtPositionIs(marker.fileName, marker.position, marker.data.indentation); +}