aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Jasper <djasper@google.com>2013-02-06 10:57:42 +0000
committerDaniel Jasper <djasper@google.com>2013-02-06 10:57:42 +0000
commit6b5ba8be528bf614d5f4477a4cdbd7c3b19714a6 (patch)
treea567bf57c019b190b83dc138e024119f2b7837f7
parentcf87bffc346244f0ed8eae7fffb52a0f03cd0413 (diff)
Fix an issue with the formatting of stars in default values.
Before: void f(int *a = d *e, int b = 0); After: void f(int *a = d * e, int b = 0); git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174500 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r--lib/Format/TokenAnnotator.cpp2
-rw-r--r--unittests/Format/FormatTest.cpp1
2 files changed, 2 insertions, 1 deletions
diff --git a/lib/Format/TokenAnnotator.cpp b/lib/Format/TokenAnnotator.cpp
index ca8d595df7..1a55985905 100644
--- a/lib/Format/TokenAnnotator.cpp
+++ b/lib/Format/TokenAnnotator.cpp
@@ -519,7 +519,7 @@ private:
if (getPrecedence(Current) == prec::Assignment) {
Contexts.back().IsExpression = true;
AnnotatedToken *Previous = Current.Parent;
- while (Previous != NULL) {
+ while (Previous != NULL && Previous->isNot(tok::comma)) {
if (Previous->Type == TT_BinaryOperator &&
(Previous->is(tok::star) || Previous->is(tok::amp))) {
Previous->Type = TT_PointerOrReference;
diff --git a/unittests/Format/FormatTest.cpp b/unittests/Format/FormatTest.cpp
index 56f39e88a2..f5250bc4df 100644
--- a/unittests/Format/FormatTest.cpp
+++ b/unittests/Format/FormatTest.cpp
@@ -1549,6 +1549,7 @@ TEST_F(FormatTest, UnderstandsUsesOfStarAndAmp) {
verifyIndependentOfContext(
"const char *const p = reinterpret_cast<const char *const>(q);");
verifyIndependentOfContext("A<int **, int **> a;");
+ verifyIndependentOfContext("void f(int *a = d * e, int *b = c * d);");
verifyFormat(
"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa(\n"