On Wed, Jan 2, 2013 at 7:47 AM, Daniel Jasper <[email protected]> wrote: > 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.
Cool! > > This fixes llvm.org/PR14747. > > Before: Type *A = (Type * ) P; > After: Type *A = (Type *) P; Shouldn't this be "(Type*)P" though? At least for google style? (It feels like that's more common in clang too, but I haven't checked if that's true.) > > 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;"); > > > _______________________________________________ > cfe-commits mailing list > [email protected] > http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits _______________________________________________ cfe-commits mailing list [email protected] http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
