From: Daniel Jasper Date: Tue, 26 May 2015 07:18:56 +0000 (+0000) Subject: clang-format: [JS] Support ES6 spread operator. X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=86cd45525cbe6e1f2b18442110109f31109b6ee1;p=clang clang-format: [JS] Support ES6 spread operator. Specifically, don't add a space before it. Before: someFunction(... a); var x = [1, 2, ... a]; After: someFunction(...a); var x = [1, 2, ...a]; git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@238183 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Format/TokenAnnotator.cpp b/lib/Format/TokenAnnotator.cpp index c2e29080dc..8229471071 100644 --- a/lib/Format/TokenAnnotator.cpp +++ b/lib/Format/TokenAnnotator.cpp @@ -1874,6 +1874,8 @@ bool TokenAnnotator::spaceRequiredBefore(const AnnotatedLine &Line, if ((Left.is(tok::l_brace) || Right.is(tok::r_brace)) && Line.First->isOneOf(Keywords.kw_import, tok::kw_export)) return false; + if (Left.is(tok::ellipsis)) + return false; if (Left.is(TT_TemplateCloser) && !Right.isOneOf(tok::equal, tok::l_brace, tok::comma, tok::l_square, Keywords.kw_implements, Keywords.kw_extends)) diff --git a/unittests/Format/FormatTestJS.cpp b/unittests/Format/FormatTestJS.cpp index 1481ef0f28..d5625a2797 100644 --- a/unittests/Format/FormatTestJS.cpp +++ b/unittests/Format/FormatTestJS.cpp @@ -82,6 +82,10 @@ TEST_F(FormatTestJS, UnderstandsJavaScriptOperators) { verifyFormat("var b = a.map((x) => x + 1);"); verifyFormat("return ('aaa') in bbbb;"); + + // ES6 spread operator. + verifyFormat("someFunction(...a);"); + verifyFormat("var x = [1, ...a, 2];"); } TEST_F(FormatTestJS, UnderstandsAmpAmp) {