summaryrefslogtreecommitdiffstats
path: root/clang/lib/Format
diff options
context:
space:
mode:
authorNico Weber <nicolasweber@gmx.de>2017-04-11 15:50:04 +0000
committerNico Weber <nicolasweber@gmx.de>2017-04-11 15:50:04 +0000
commit48c94a6164192b05c5c19d07c0fda4b38e8eed5a (patch)
tree66961b967d4b81e78f8a02c6be48ff97f4e42f65 /clang/lib/Format
parent46103e0ede41cef3ddce5f5194c258f6de607acd (diff)
downloadbcm5719-llvm-48c94a6164192b05c5c19d07c0fda4b38e8eed5a.tar.gz
bcm5719-llvm-48c94a6164192b05c5c19d07c0fda4b38e8eed5a.zip
[clang-format] Recognize Java logical shift assignment operator
At present, clang-format mangles Java containing logical right shift operators ('>>>=' or '>>>'), splitting them in two, resulting in invalid code: public class Minimal { public void func(String args) { int i = 42; - i >>>= 1; + i >> >= 1; return i; } } This adds both forms of logical right shift to the FormatTokenLexer, so clang-format won't attempt to split them and insert bogus whitespace. https://reviews.llvm.org/D31652 Patch from Richard Bradfield <bradfier@fstab.me>! llvm-svn: 299952
Diffstat (limited to 'clang/lib/Format')
-rw-r--r--clang/lib/Format/FormatTokenLexer.cpp13
1 files changed, 13 insertions, 0 deletions
diff --git a/clang/lib/Format/FormatTokenLexer.cpp b/clang/lib/Format/FormatTokenLexer.cpp
index 9415dbe9ab3..4ee43d6937e 100644
--- a/clang/lib/Format/FormatTokenLexer.cpp
+++ b/clang/lib/Format/FormatTokenLexer.cpp
@@ -84,6 +84,19 @@ void FormatTokenLexer::tryMergePreviousTokens() {
if (tryMergeTokens(JSRightArrow, TT_JsFatArrow))
return;
}
+
+ if (Style.Language == FormatStyle::LK_Java) {
+ static const tok::TokenKind JavaRightLogicalShift[] = {tok::greater,
+ tok::greater,
+ tok::greater};
+ static const tok::TokenKind JavaRightLogicalShiftAssign[] = {tok::greater,
+ tok::greater,
+ tok::greaterequal};
+ if (tryMergeTokens(JavaRightLogicalShift, TT_BinaryOperator))
+ return;
+ if (tryMergeTokens(JavaRightLogicalShiftAssign, TT_BinaryOperator))
+ return;
+ }
}
bool FormatTokenLexer::tryMergeNSStringLiteral() {
OpenPOWER on IntegriCloud