diff --git a/lib/Format/TokenAnnotator.cpp b/lib/Format/TokenAnnotator.cpp index 48dedeaef6b9d8122d11e6ab863bee09d211096a..0e1f14ad05f2798a2c7232813039c58538892b48 100644 --- a/lib/Format/TokenAnnotator.cpp +++ b/lib/Format/TokenAnnotator.cpp @@ -2136,6 +2136,8 @@ bool TokenAnnotator::canBreakBefore(const AnnotatedLine &Line, } else if (Style.Language == FormatStyle::LK_JavaScript) { if (Left.is(TT_JsFatArrow) && Right.is(tok::l_brace)) return false; + if (Left.is(TT_JsTypeColon)) + return true; } if (Left.is(tok::at)) diff --git a/unittests/Format/FormatTestJS.cpp b/unittests/Format/FormatTestJS.cpp index b3e0f68ac3b2bb58efdaba2ef798c9dd0ce7f1bd..e6c12f4ce0f17fd85867ecc94ce2b65faa28f089 100644 --- a/unittests/Format/FormatTestJS.cpp +++ b/unittests/Format/FormatTestJS.cpp @@ -883,6 +883,8 @@ TEST_F(FormatTestJS, TypeArguments) { verifyFormat("class C extends D<E> implements F<G>, H<I> {}"); verifyFormat("function f(a: List<any> = null) {}"); verifyFormat("function f(): List<any> {}"); + verifyFormat("function aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa():\n" + " bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb {}"); } TEST_F(FormatTestJS, OptionalTypes) {