[clangd] IncludeCleaner: Don't consider the definition as usage for function forward declarations
Reviewed By: kadircet Differential Revision: https://reviews.llvm.org/D111711
This commit is contained in:
parent
7812f510d2
commit
c521288ed3
|
|
@ -39,6 +39,13 @@ public:
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool VisitFunctionDecl(FunctionDecl *FD) {
|
||||||
|
// Function definition will require redeclarations to be included.
|
||||||
|
if (FD == FD->getDefinition())
|
||||||
|
add(FD);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
bool VisitCXXConstructExpr(CXXConstructExpr *CCE) {
|
bool VisitCXXConstructExpr(CXXConstructExpr *CCE) {
|
||||||
add(CCE->getConstructor());
|
add(CCE->getConstructor());
|
||||||
return true;
|
return true;
|
||||||
|
|
|
||||||
|
|
@ -79,6 +79,19 @@ TEST(IncludeCleaner, ReferencedLocations) {
|
||||||
"struct ^X { ^X(int) {} int ^foo(); };",
|
"struct ^X { ^X(int) {} int ^foo(); };",
|
||||||
"auto x = X(42); auto y = x.foo();",
|
"auto x = X(42); auto y = x.foo();",
|
||||||
},
|
},
|
||||||
|
// Function
|
||||||
|
{
|
||||||
|
"void ^foo();",
|
||||||
|
"void foo() {}",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"void foo() {}",
|
||||||
|
"void foo();",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"inline void ^foo() {}",
|
||||||
|
"void bar() { foo(); }",
|
||||||
|
},
|
||||||
// Static function
|
// Static function
|
||||||
{
|
{
|
||||||
"struct ^X { static bool ^foo(); }; bool X::^foo() {}",
|
"struct ^X { static bool ^foo(); }; bool X::^foo() {}",
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue