[cfe-commits] r171390 - in /cfe/trunk: lib/Format/Format.cpp unittests/Format/FormatTest.cpp
Daniel Jasper
djasper at google.com
Wed Jan 2 07:47:02 PST 2013
Author: djasper
Date: Wed Jan 2 09:46:59 2013
New Revision: 171390
URL: http://llvm.org/viewvc/llvm-project?rev=171390&view=rev
Log:
Correctly format pointers and references in casts.
This fixes llvm.org/PR14747.
Before: Type *A = (Type * ) P;
After: Type *A = (Type *) P;
Modified:
cfe/trunk/lib/Format/Format.cpp
cfe/trunk/unittests/Format/FormatTest.cpp
Modified: cfe/trunk/lib/Format/Format.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Format/Format.cpp?rev=171390&r1=171389&r2=171390&view=diff
==============================================================================
--- cfe/trunk/lib/Format/Format.cpp (original)
+++ cfe/trunk/lib/Format/Format.cpp Wed Jan 2 09:46:59 2013
@@ -822,19 +822,23 @@
TokenAnnotation::TokenType determineStarAmpUsage(unsigned Index, bool IsRHS) {
if (Index == Annotations.size())
return TokenAnnotation::TT_Unknown;
+ const FormatToken &PrevToken = Line.Tokens[Index - 1];
+ const FormatToken &NextToken = Line.Tokens[Index + 1];
- if (Index == 0 || Line.Tokens[Index - 1].Tok.is(tok::l_paren) ||
- Line.Tokens[Index - 1].Tok.is(tok::comma) ||
- Line.Tokens[Index - 1].Tok.is(tok::kw_return) ||
- Line.Tokens[Index - 1].Tok.is(tok::colon) ||
+ if (Index == 0 || PrevToken.Tok.is(tok::l_paren) ||
+ PrevToken.Tok.is(tok::comma) || PrevToken.Tok.is(tok::kw_return) ||
+ PrevToken.Tok.is(tok::colon) ||
Annotations[Index - 1].Type == TokenAnnotation::TT_BinaryOperator)
return TokenAnnotation::TT_UnaryOperator;
- if (Line.Tokens[Index - 1].Tok.isLiteral() ||
- Line.Tokens[Index + 1].Tok.isLiteral() ||
- Line.Tokens[Index + 1].Tok.is(tok::kw_sizeof))
+ if (PrevToken.Tok.isLiteral() || NextToken.Tok.isLiteral() ||
+ NextToken.Tok.is(tok::kw_sizeof))
return TokenAnnotation::TT_BinaryOperator;
+ if (NextToken.Tok.is(tok::comma) || NextToken.Tok.is(tok::r_paren) ||
+ NextToken.Tok.is(tok::greater))
+ return TokenAnnotation::TT_PointerOrReference;
+
// It is very unlikely that we are going to find a pointer or reference type
// definition on the RHS of an assignment.
if (IsRHS)
Modified: cfe/trunk/unittests/Format/FormatTest.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/unittests/Format/FormatTest.cpp?rev=171390&r1=171389&r2=171390&view=diff
==============================================================================
--- cfe/trunk/unittests/Format/FormatTest.cpp (original)
+++ cfe/trunk/unittests/Format/FormatTest.cpp Wed Jan 2 09:46:59 2013
@@ -699,6 +699,9 @@
verifyFormat("A<int **> a;");
verifyFormat("A<int *, int *> a;");
verifyFormat("A<int **, int **> a;");
+ verifyFormat("Type *A = static_cast<Type *>(P);");
+ verifyFormat("Type *A = (Type *) P;");
+ verifyFormat("Type *A = (vector<Type *, int *>) P;");
verifyGoogleFormat("int main(int argc, char** argv) {\n}");
verifyGoogleFormat("A<int*> a;");
More information about the cfe-commits
mailing list