diff --git a/clang/lib/Format/TokenAnnotator.cpp b/clang/lib/Format/TokenAnnotator.cpp --- a/clang/lib/Format/TokenAnnotator.cpp +++ b/clang/lib/Format/TokenAnnotator.cpp @@ -3853,6 +3853,9 @@ Left.isOneOf(tok::r_square, tok::r_paren)) && Right.isOneOf(tok::l_square, tok::l_paren)) return false; // Otherwise automatic semicolon insertion would trigger. + if (NonComment && NonComment->is(tok::identifier) && + NonComment->TokenText == "asserts") + return false; if (Left.is(TT_JsFatArrow) && Right.is(tok::l_brace)) return false; if (Left.is(TT_JsTypeColon)) diff --git a/clang/unittests/Format/FormatTestJS.cpp b/clang/unittests/Format/FormatTestJS.cpp --- a/clang/unittests/Format/FormatTestJS.cpp +++ b/clang/unittests/Format/FormatTestJS.cpp @@ -2589,5 +2589,20 @@ "}\n"); } +TEST_F(FormatTestJS, NoBreakAfterAsserts) { + verifyFormat( + "interface Assertable {\n" + " assert(\n" + " callback: Callback):\n" + " asserts this is ExtendedState;\n" + "}\n", + "interface Assertable {\n" + " assert(callback: Callback): asserts " + "this is ExtendedState;\n" + "}\n"); +} + } // namespace format } // end namespace clang