diff --git a/clang/lib/Format/ContinuationIndenter.cpp b/clang/lib/Format/ContinuationIndenter.cpp index aed86c1fb9955..9ffdc044e6784 100644 --- a/clang/lib/Format/ContinuationIndenter.cpp +++ b/clang/lib/Format/ContinuationIndenter.cpp @@ -826,8 +826,10 @@ void ContinuationIndenter::addTokenOnCurrentLine(LineState &State, bool DryRun, for (const auto *Prev = &Tok; Prev; Prev = Prev->Previous) { if (Prev->is(TT_TemplateString) && Prev->opensScope()) return true; - if (Prev->is(TT_TemplateString) && Prev->closesScope()) + if (Prev->opensScope() || + (Prev->is(TT_TemplateString) && Prev->closesScope())) { break; + } } return false; }; diff --git a/clang/unittests/Format/FormatTestJS.cpp b/clang/unittests/Format/FormatTestJS.cpp index 4b15e7b7da339..4f41e4779f6ed 100644 --- a/clang/unittests/Format/FormatTestJS.cpp +++ b/clang/unittests/Format/FormatTestJS.cpp @@ -2157,6 +2157,13 @@ TEST_F(FormatTestJS, TemplateStringMultiLineExpression) { " aaaa: aaaaa,\n" " bbbb: bbbbb,\n" " })}`;"); + + verifyFormat("`${\n" + " (\n" + " FOOFOOFOOFOO____FOO_FOO_FO_FOO_FOOO -\n" + " (barbarbarbar____bar_bar_bar_bar_bar_bar +\n" + " bar_bar_bar_barbarbar___bar_bar_bar + 1),\n" + " )}`;"); } TEST_F(FormatTestJS, TemplateStringASI) {