From: Daniel Jasper Date: Wed, 27 May 2015 05:37:40 +0000 (+0000) Subject: clang-format: [JS] Fix incorrect detection of ternary expressions. X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=7ab5dd8db79fbb34176672fb5a5ff1cea0f026ad;p=clang clang-format: [JS] Fix incorrect detection of ternary expressions. A definintion like this could not be formatted at all: constructor({aa}: { aa?: string, aaaaaaaa?: string, aaaaaaaaaaaaaaa?: boolean, aaaaaa?: List }) { } git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@238291 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Format/ContinuationIndenter.cpp b/lib/Format/ContinuationIndenter.cpp index 3234e084f2..4e8f5af263 100644 --- a/lib/Format/ContinuationIndenter.cpp +++ b/lib/Format/ContinuationIndenter.cpp @@ -143,11 +143,10 @@ bool ContinuationIndenter::mustBreak(const LineState &State) { if (Previous.is(tok::semi) && State.LineContainsContinuedForLoopSection) return true; if ((startsNextParameter(Current, Style) || Previous.is(tok::semi) || - (Style.BreakBeforeTernaryOperators && - (Current.is(tok::question) || - (Current.is(TT_ConditionalExpr) && Previous.isNot(tok::question)))) || + (Style.BreakBeforeTernaryOperators && Current.is(TT_ConditionalExpr) && + Previous.isNot(tok::question)) || (!Style.BreakBeforeTernaryOperators && - (Previous.is(tok::question) || Previous.is(TT_ConditionalExpr)))) && + Previous.is(TT_ConditionalExpr))) && State.Stack.back().BreakBeforeParameter && !Current.isTrailingComment() && !Current.isOneOf(tok::r_paren, tok::r_brace)) return true; diff --git a/unittests/Format/FormatTestJS.cpp b/unittests/Format/FormatTestJS.cpp index d5625a2797..a06daac24e 100644 --- a/unittests/Format/FormatTestJS.cpp +++ b/unittests/Format/FormatTestJS.cpp @@ -753,6 +753,13 @@ TEST_F(FormatTestJS, OptionalTypes) { " y?(): z;\n" "}"); verifyFormat("x ? 1 : 2;"); + verifyFormat("constructor({aa}: {\n" + " aa?: string,\n" + " aaaaaaaa?: string,\n" + " aaaaaaaaaaaaaaa?: boolean,\n" + " aaaaaa?: List\n" + "}) {\n" + "}"); } TEST_F(FormatTestJS, IndexSignature) {