This revision was automatically updated to reflect the committed changes. Closed by commit rGc521288ed391: [clangd] IncludeCleaner: Don't consider the definition as usage for function… (authored by kbobyrev).
Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D111711/new/ https://reviews.llvm.org/D111711 Files: clang-tools-extra/clangd/IncludeCleaner.cpp clang-tools-extra/clangd/unittests/IncludeCleanerTests.cpp Index: clang-tools-extra/clangd/unittests/IncludeCleanerTests.cpp =================================================================== --- clang-tools-extra/clangd/unittests/IncludeCleanerTests.cpp +++ clang-tools-extra/clangd/unittests/IncludeCleanerTests.cpp @@ -79,6 +79,19 @@ "struct ^X { ^X(int) {} int ^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 { "struct ^X { static bool ^foo(); }; bool X::^foo() {}", Index: clang-tools-extra/clangd/IncludeCleaner.cpp =================================================================== --- clang-tools-extra/clangd/IncludeCleaner.cpp +++ clang-tools-extra/clangd/IncludeCleaner.cpp @@ -39,6 +39,13 @@ 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) { add(CCE->getConstructor()); return true;
Index: clang-tools-extra/clangd/unittests/IncludeCleanerTests.cpp =================================================================== --- clang-tools-extra/clangd/unittests/IncludeCleanerTests.cpp +++ clang-tools-extra/clangd/unittests/IncludeCleanerTests.cpp @@ -79,6 +79,19 @@ "struct ^X { ^X(int) {} int ^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 { "struct ^X { static bool ^foo(); }; bool X::^foo() {}", Index: clang-tools-extra/clangd/IncludeCleaner.cpp =================================================================== --- clang-tools-extra/clangd/IncludeCleaner.cpp +++ clang-tools-extra/clangd/IncludeCleaner.cpp @@ -39,6 +39,13 @@ 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) { add(CCE->getConstructor()); return true;
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits