From f789f05ee2e39b5fee20b7dd1d0bd5141bbf662f Mon Sep 17 00:00:00 2001 From: Daniel Jasper Date: Tue, 20 Dec 2016 15:27:46 +0000 Subject: clang-format: Fix bug in understanding string-label&value analysis. While for <<-operators often used in log statments, a single key value pair is always on the second operator, e.g. llvm::errs() << "aaaaa=" << aaaaa; It is on the first operator for plus- or comma-concatenated strings: string s = "aaaaaaaaaa: " + aaaaaaaa; (the "=" not counting because that's a different operator precedence) llvm-svn: 290177 --- clang/lib/Format/TokenAnnotator.cpp | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) (limited to 'clang/lib/Format/TokenAnnotator.cpp') diff --git a/clang/lib/Format/TokenAnnotator.cpp b/clang/lib/Format/TokenAnnotator.cpp index 5dcaf2651ff..7f573061594 100644 --- a/clang/lib/Format/TokenAnnotator.cpp +++ b/clang/lib/Format/TokenAnnotator.cpp @@ -2000,11 +2000,14 @@ unsigned TokenAnnotator::splitPenalty(const AnnotatedLine &Line, if (Left.isOneOf(tok::plus, tok::comma) && Left.Previous && Left.Previous->isLabelString() && - (Left.NextOperator || Left.OperatorIndex != 1)) + (Left.NextOperator || Left.OperatorIndex != 0)) return 100; + if (Right.is(tok::plus) && Left.isLabelString() && + (Right.NextOperator || Right.OperatorIndex != 0)) + return 25; if (Left.is(tok::comma)) return 1; - if (Right.isOneOf(tok::lessless, tok::plus) && Left.isLabelString() && + if (Right.is(tok::lessless) && Left.isLabelString() && (Right.NextOperator || Right.OperatorIndex != 1)) return 25; if (Right.is(tok::lessless)) { -- cgit v1.2.3