From 0f7f9783dc41ee4af2e0cb431d0d08f9c7f781f9 Mon Sep 17 00:00:00 2001 From: Armando Aguirre Date: Fri, 18 May 2018 17:07:58 -0700 Subject: [PATCH] Fixed test regression, removed nodeContentIsAlwaysIndented --- src/services/formatting/smartIndenter.ts | 18 ++++++------------ 1 file changed, 6 insertions(+), 12 deletions(-) diff --git a/src/services/formatting/smartIndenter.ts b/src/services/formatting/smartIndenter.ts index f71c6108d37..48b1e3a66a7 100644 --- a/src/services/formatting/smartIndenter.ts +++ b/src/services/formatting/smartIndenter.ts @@ -482,8 +482,10 @@ namespace ts.formatting { return findFirstNonWhitespaceCharacterAndColumn(startPos, endPos, sourceFile, options).column; } - function nodeContentIsAlwaysIndented(kind: SyntaxKind): boolean { - switch (kind) { + export function nodeWillIndentChild(settings: FormatCodeSettings | undefined, parent: TextRangeWithKind, child: TextRangeWithKind | undefined, sourceFile: SourceFileLike | undefined, indentByDefault: boolean): boolean { + const childKind = child ? child.kind : SyntaxKind.Unknown; + + switch (parent.kind) { case SyntaxKind.ExpressionStatement: case SyntaxKind.ClassDeclaration: case SyntaxKind.ClassExpression: @@ -529,20 +531,12 @@ namespace ts.formatting { case SyntaxKind.ImportSpecifier: case SyntaxKind.PropertyDeclaration: return true; - } - return false; - } - - export function nodeWillIndentChild(settings: FormatCodeSettings | undefined, parent: TextRangeWithKind, child: TextRangeWithKind | undefined, sourceFile: SourceFileLike | undefined, indentByDefault: boolean): boolean { - const childKind = child ? child.kind : SyntaxKind.Unknown; - - switch (parent.kind) { case SyntaxKind.VariableDeclaration: case SyntaxKind.PropertyAssignment: if (!settings.indentMultiLineObjectLiteralBeginningOnBlankLine && sourceFile && childKind === SyntaxKind.ObjectLiteralExpression) { return rangeIsOnOneLine(sourceFile, child); } - break; + return true; case SyntaxKind.DoStatement: case SyntaxKind.WhileStatement: case SyntaxKind.ForInStatement: @@ -595,7 +589,7 @@ namespace ts.formatting { * @param isNextChild If true, we are judging indent of a hypothetical child *after* this one, not the current child. */ export function shouldIndentChildNode(settings: FormatCodeSettings | undefined, parent: TextRangeWithKind, child?: Node, sourceFile?: SourceFileLike, isNextChild = false): boolean { - return (nodeContentIsAlwaysIndented(parent.kind) || nodeWillIndentChild(settings, parent, child, sourceFile, /*indentByDefault*/ false)) + return nodeWillIndentChild(settings, parent, child, sourceFile, /*indentByDefault*/ false) && !(isNextChild && child && isControlFlowEndingStatement(child.kind, parent)); }