mirror of
https://github.com/capstone-engine/llvm-capstone.git
synced 2025-02-24 20:44:09 +00:00
Improve identification of c-style casts.
A ")" before any of "=", "{" or ";" won't be a cast. This fixes issues with the formatting of unnamed parameters. Before: void f(int *){} After: void f(int *) {} llvm-svn: 172349
This commit is contained in:
parent
40e45eeae2
commit
ef906a9c67
@ -976,7 +976,11 @@ private:
|
||||
Current.Type = TT_BlockComment;
|
||||
} else if (Current.is(tok::r_paren) &&
|
||||
(Current.Parent->Type == TT_PointerOrReference ||
|
||||
Current.Parent->Type == TT_TemplateCloser)) {
|
||||
Current.Parent->Type == TT_TemplateCloser) &&
|
||||
(Current.Children.empty() ||
|
||||
(Current.Children[0].isNot(tok::equal) &&
|
||||
Current.Children[0].isNot(tok::semi) &&
|
||||
Current.Children[0].isNot(tok::l_brace)))) {
|
||||
// FIXME: We need to get smarter and understand more cases of casts.
|
||||
Current.Type = TT_CastRParen;
|
||||
} else if (Current.is(tok::at) && Current.Children.size()) {
|
||||
|
@ -1045,9 +1045,6 @@ TEST_F(FormatTest, UnderstandsUsesOfStarAndAmp) {
|
||||
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;");
|
||||
|
||||
verifyFormat(
|
||||
"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa(\n"
|
||||
@ -1062,6 +1059,25 @@ TEST_F(FormatTest, UnderstandsUsesOfStarAndAmp) {
|
||||
verifyGoogleFormat("int a = b ? *c : *d;");
|
||||
}
|
||||
|
||||
TEST_F(FormatTest, FormatsCasts) {
|
||||
verifyFormat("Type *A = static_cast<Type *>(P);");
|
||||
verifyFormat("Type *A = (Type *)P;");
|
||||
verifyFormat("Type *A = (vector<Type *, int *>)P;");
|
||||
verifyFormat("int a = (int)(2.0f);");
|
||||
|
||||
// FIXME: These also need to be identified.
|
||||
verifyFormat("int a = (int) 2.0f;");
|
||||
verifyFormat("int a = (int) * b;");
|
||||
|
||||
// These are not casts.
|
||||
verifyFormat("void f(int *) {}");
|
||||
verifyFormat("void f(int *);");
|
||||
verifyFormat("void f(int *) = 0;");
|
||||
verifyFormat("void f(SmallVector<int>) {}");
|
||||
verifyFormat("void f(SmallVector<int>);");
|
||||
verifyFormat("void f(SmallVector<int>) = 0;");
|
||||
}
|
||||
|
||||
TEST_F(FormatTest, FormatsFunctionTypes) {
|
||||
// FIXME: Determine the cases that need a space after the return type and fix.
|
||||
verifyFormat("A<bool()> a;");
|
||||
|
Loading…
x
Reference in New Issue
Block a user