From: Daniel Jasper Date: Sun, 15 Mar 2015 13:59:51 +0000 (+0000) Subject: clang-format: [JS] support cast syntax and type arguments. X-Git-Tag: llvmorg-3.7.0-rc1~9178 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=bc46b939e647b9ded4ccad7de7694b388369291a;p=platform%2Fupstream%2Fllvm.git clang-format: [JS] support cast syntax and type arguments. Casts in TS syntax (foo = bar;) should not be followed by whitespace. Patch by Martin Probst. Thank you. llvm-svn: 232321 --- diff --git a/clang/lib/Format/TokenAnnotator.cpp b/clang/lib/Format/TokenAnnotator.cpp index c6c81a48..911d52d 100644 --- a/clang/lib/Format/TokenAnnotator.cpp +++ b/clang/lib/Format/TokenAnnotator.cpp @@ -1779,6 +1779,13 @@ 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(TT_TemplateCloser) && + !Right.isOneOf(tok::l_brace, tok::comma, tok::l_square, + Keywords.kw_implements, Keywords.kw_extends)) + // Type assertions ('expr') are not followed by whitespace. Other + // locations that should have whitespace following are identified by the + // above set of follower tokens. + return false; } else if (Style.Language == FormatStyle::LK_Java) { if (Left.is(tok::r_square) && Right.is(tok::l_brace)) return true; diff --git a/clang/unittests/Format/FormatTestJS.cpp b/clang/unittests/Format/FormatTestJS.cpp index 045b280..5707024 100644 --- a/clang/unittests/Format/FormatTestJS.cpp +++ b/clang/unittests/Format/FormatTestJS.cpp @@ -616,5 +616,17 @@ TEST_F(FormatTestJS, TemplateStrings) { verifyFormat("var x = `hello` == `hello`;"); } +TEST_F(FormatTestJS, CastSyntax) { + verifyFormat("var x = foo;"); +} + +TEST_F(FormatTestJS, TypeArguments) { + verifyFormat("class X {}"); + verifyFormat("new X();"); + verifyFormat("foo(a);"); + verifyFormat("var x: X[];"); + verifyFormat("class C extends D implements F, H {}"); +} + } // end namespace tooling } // end namespace clang