diff options
author | Daniel Jasper <djasper@google.com> | 2016-12-20 15:27:46 +0000 |
---|---|---|
committer | Daniel Jasper <djasper@google.com> | 2016-12-20 15:27:46 +0000 |
commit | f789f05ee2e39b5fee20b7dd1d0bd5141bbf662f (patch) | |
tree | d155cb0e03949c1ae68749757062e51cf471a7b3 /clang/lib/Format | |
parent | e3f35e4db67f08c14521fc1e4e8f360260bf34bb (diff) | |
download | bcm5719-llvm-f789f05ee2e39b5fee20b7dd1d0bd5141bbf662f.tar.gz bcm5719-llvm-f789f05ee2e39b5fee20b7dd1d0bd5141bbf662f.zip |
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
Diffstat (limited to 'clang/lib/Format')
-rw-r--r-- | clang/lib/Format/TokenAnnotator.cpp | 7 |
1 files changed, 5 insertions, 2 deletions
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)) { |