From 1d78218053332e0a7de3cadcea53a64f3b0beff1 Mon Sep 17 00:00:00 2001 From: Orta Therox Date: Mon, 15 Jul 2019 10:48:10 -0400 Subject: [PATCH] Handle feedback from #32359 --- src/services/formatting/formatting.ts | 2 +- src/services/formatting/smartIndenter.ts | 13 ++++++------- 2 files changed, 7 insertions(+), 8 deletions(-) diff --git a/src/services/formatting/formatting.ts b/src/services/formatting/formatting.ts index e4b6459a31..ed6b71efb7 100644 --- a/src/services/formatting/formatting.ts +++ b/src/services/formatting/formatting.ts @@ -490,7 +490,7 @@ namespace ts.formatting { else if (SmartIndenter.childStartsOnTheSameLineWithElseInIfStatement(parent, node, startLine, sourceFile)) { return { indentation: parentDynamicIndentation.getIndentation(), delta }; } - else if (SmartIndenter.childStartsInlineWithPreviousObject(parent, node, startLine, sourceFile)) { + else if (SmartIndenter.argumentStartsOnSameLineAsPreviousArgument(parent, node, startLine, sourceFile)) { return { indentation: parentDynamicIndentation.getIndentation(), delta }; } else { diff --git a/src/services/formatting/smartIndenter.ts b/src/services/formatting/smartIndenter.ts index 766228c1f0..7a8bfb5f5d 100644 --- a/src/services/formatting/smartIndenter.ts +++ b/src/services/formatting/smartIndenter.ts @@ -322,16 +322,15 @@ namespace ts.formatting { return false; } - export function childStartsInlineWithPreviousObject(parent: Node, child: TextRangeWithKind, childStartLine: number, sourceFile: SourceFileLike): boolean { - if (parent.kind === SyntaxKind.CallExpression) { - const parentCallExpression = parent; - const currentNode = find(parentCallExpression.arguments, arg => arg.pos === child.pos); - if (!currentNode) return false; // Shouldn't happen + export function argumentStartsOnSameLineAsPreviousArgument(parent: Node, child: TextRangeWithKind, childStartLine: number, sourceFile: SourceFileLike): boolean { + if (isCallOrNewExpression(parent)) { + if (!parent.arguments) return false; - const currentIndex = parentCallExpression.arguments.indexOf(currentNode); + const currentNode = Debug.assertDefined(find(parent.arguments, arg => arg.pos === child.pos)); + const currentIndex = parent.arguments.indexOf(currentNode); if (currentIndex === 0) return false; // Can't look at previous node if first - const previousNode = parentCallExpression.arguments[currentIndex - 1]; + const previousNode = parent.arguments[currentIndex - 1]; const lineOfPreviousNode = getLineAndCharacterOfPosition(sourceFile, previousNode.getEnd()).line; if (childStartLine === lineOfPreviousNode) {