From 0acd005affb7b1f36ee3289be2fd788f0e8e6b1e Mon Sep 17 00:00:00 2001 From: Daniel Jasper Date: Fri, 3 Jul 2015 10:12:53 +0000 Subject: [PATCH] clang-format: [Java/JS] Properly support instanceof and its precedence. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@241337 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Format/TokenAnnotator.cpp | 9 +++++++-- unittests/Format/FormatTestJava.cpp | 2 ++ 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/lib/Format/TokenAnnotator.cpp b/lib/Format/TokenAnnotator.cpp index bbe776fcc7..48dedeaef6 100644 --- a/lib/Format/TokenAnnotator.cpp +++ b/lib/Format/TokenAnnotator.cpp @@ -1008,7 +1008,7 @@ private: if (Tok.isNot(tok::identifier) || !Tok.Previous) return false; - if (Tok.Previous->is(TT_LeadingJavaAnnotation)) + if (Tok.Previous->isOneOf(TT_LeadingJavaAnnotation, Keywords.kw_instanceof)) return false; // Skip "const" as it does not have an influence on whether this is a name. @@ -1336,6 +1336,10 @@ private: return 0; if (Current->is(TT_RangeBasedForLoopColon)) return prec::Comma; + if ((Style.Language == FormatStyle::LK_Java || + Style.Language == FormatStyle::LK_JavaScript) && + Current->is(Keywords.kw_instanceof)) + return prec::Relational; if (Current->is(TT_BinaryOperator) || Current->is(tok::comma)) return Current->getPrecedence(); if (Current->isOneOf(tok::period, tok::arrow)) @@ -2238,7 +2242,8 @@ bool TokenAnnotator::canBreakBefore(const AnnotatedLine &Line, return true; if (Right.is(tok::kw_typename) && Left.isNot(tok::kw_const)) return true; - if (Left.isBinaryOperator() && !Left.isOneOf(tok::arrowstar, tok::lessless) && + if ((Left.isBinaryOperator() || Left.is(TT_BinaryOperator)) && + !Left.isOneOf(tok::arrowstar, tok::lessless) && Style.BreakBeforeBinaryOperators != FormatStyle::BOS_All && (Style.BreakBeforeBinaryOperators == FormatStyle::BOS_None || Left.getPrecedence() == prec::Assignment)) diff --git a/unittests/Format/FormatTestJava.cpp b/unittests/Format/FormatTestJava.cpp index 4c161e0180..8e590879f6 100644 --- a/unittests/Format/FormatTestJava.cpp +++ b/unittests/Format/FormatTestJava.cpp @@ -67,6 +67,8 @@ TEST_F(FormatTestJava, FormatsInstanceOfLikeOperators) { verifyFormat("return aaaaaaaaaaaaaaaaaaaaaaaaaaaaa instanceof\n" " bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb;", Style); + verifyFormat("return aaaaaaaaaaaaaaaaaaa instanceof bbbbbbbbbbbbbbbbbbbbbbb\n" + " && ccccccccccccccccccc instanceof dddddddddddddddddddddd;"); } TEST_F(FormatTestJava, Chromium) { -- 2.40.0