forked from OSchip/llvm-project
[clang-tidy] Fix bugprone-argument-comment bug if there are marcos.
Summary: Fix bugprone-argument-comment bug if there are marcos. For example: ``` void j(int a, int b, int c); j(X(1), /*b=*/1, X(1)); ``` clang-tidy can't recognize comment "/*b=*/". It suggests fix like this: ``` j(X(1), /*b=*//*b=*/1, X(1)); ``` This change tries to fix this issue. Reviewers: alexfh, hokein, aaron.ballman Reviewed By: alexfh Subscribers: xazax.hun, cfe-commits Tags: #clang, #clang-tools-extra Patch by Yubo Xie. Differential Revision: https://reviews.llvm.org/D67080 llvm-svn: 370919
This commit is contained in:
parent
80913a70f5
commit
240a2e25c6
|
@ -286,8 +286,8 @@ void ArgumentCommentCheck::checkCallArgs(ASTContext *Ctx,
|
|||
Comments = getCommentsInRange(Ctx, BeforeArgument);
|
||||
} else {
|
||||
// Fall back to parsing back from the start of the argument.
|
||||
CharSourceRange ArgsRange = MakeFileCharRange(
|
||||
Args[I]->getBeginLoc(), Args[NumArgs - 1]->getEndLoc());
|
||||
CharSourceRange ArgsRange =
|
||||
MakeFileCharRange(Args[I]->getBeginLoc(), Args[I]->getEndLoc());
|
||||
Comments = getCommentsBeforeLoc(Ctx, ArgsRange.getBegin());
|
||||
}
|
||||
|
||||
|
|
|
@ -15,10 +15,12 @@ struct A {
|
|||
};
|
||||
|
||||
#define FOO 1
|
||||
#define X(x) (x)
|
||||
|
||||
void g(int a);
|
||||
void h(double b);
|
||||
void i(const char *c);
|
||||
void j(int a, int b, int c);
|
||||
|
||||
double operator"" _km(long double);
|
||||
|
||||
|
@ -106,6 +108,39 @@ void test() {
|
|||
// CHECK-FIXES: h(/*b=*/1.0f);
|
||||
i(__FILE__);
|
||||
|
||||
j(1, X(1), X(1));
|
||||
// CHECK-MESSAGES: [[@LINE-1]]:5: warning: argument comment missing for literal argument 'a' [bugprone-argument-comment]
|
||||
// CHECK-FIXES: j(/*a=*/1, X(1), X(1));
|
||||
j(/*a=*/1, X(1), X(1));
|
||||
|
||||
j(X(1), 1, X(1));
|
||||
// CHECK-MESSAGES: [[@LINE-1]]:11: warning: argument comment missing for literal argument 'b' [bugprone-argument-comment]
|
||||
// CHECK-FIXES: j(X(1), /*b=*/1, X(1));
|
||||
j(X(1), /*b=*/1, X(1));
|
||||
|
||||
j(X(1), X(1), 1);
|
||||
// CHECK-MESSAGES: [[@LINE-1]]:17: warning: argument comment missing for literal argument 'c' [bugprone-argument-comment]
|
||||
// CHECK-FIXES: j(X(1), X(1), /*c=*/1);
|
||||
j(X(1), X(1), /*c=*/1);
|
||||
|
||||
j(X(1), 1, 1);
|
||||
// CHECK-MESSAGES: [[@LINE-1]]:11: warning: argument comment missing for literal argument 'b' [bugprone-argument-comment]
|
||||
// CHECK-MESSAGES: [[@LINE-2]]:14: warning: argument comment missing for literal argument 'c' [bugprone-argument-comment]
|
||||
// CHECK-FIXES: j(X(1), /*b=*/1, /*c=*/1);
|
||||
j(X(1), /*b=*/1, /*c=*/1);
|
||||
|
||||
j(1, X(1), 1);
|
||||
// CHECK-MESSAGES: [[@LINE-1]]:5: warning: argument comment missing for literal argument 'a' [bugprone-argument-comment]
|
||||
// CHECK-MESSAGES: [[@LINE-2]]:14: warning: argument comment missing for literal argument 'c' [bugprone-argument-comment]
|
||||
// CHECK-FIXES: j(/*a=*/1, X(1), /*c=*/1);
|
||||
j(/*a=*/1, X(1), /*c=*/1);
|
||||
|
||||
j(1, 1, X(1));
|
||||
// CHECK-MESSAGES: [[@LINE-1]]:5: warning: argument comment missing for literal argument 'a' [bugprone-argument-comment]
|
||||
// CHECK-MESSAGES: [[@LINE-2]]:8: warning: argument comment missing for literal argument 'b' [bugprone-argument-comment]
|
||||
// CHECK-FIXES: j(/*a=*/1, /*b=*/1, X(1));
|
||||
j(/*a=*/1, /*b=*/1, X(1));
|
||||
|
||||
// FIXME Would like the below to add argument comments.
|
||||
g((1));
|
||||
// FIXME But we should not add argument comments here.
|
||||
|
|
Loading…
Reference in New Issue