[PATCH] D85291: [clangd] Fix a crash in DefineInline
Kadir Cetinkaya via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Wed Aug 5 08:38:29 PDT 2020
This revision was automatically updated to reflect the committed changes.
Closed by commit rG011732852c2c: [clangd] Fix a crash in DefineInline (authored by kadircet).
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D85291/new/
https://reviews.llvm.org/D85291
Files:
clang-tools-extra/clangd/refactor/tweaks/DefineInline.cpp
clang-tools-extra/clangd/unittests/TweakTests.cpp
Index: clang-tools-extra/clangd/unittests/TweakTests.cpp
===================================================================
--- clang-tools-extra/clangd/unittests/TweakTests.cpp
+++ clang-tools-extra/clangd/unittests/TweakTests.cpp
@@ -1093,6 +1093,11 @@
template<> void f^oo<int>() {
bar();
})cpp");
+ EXPECT_UNAVAILABLE(R"cpp(
+ namespace bar {
+ template <typename T> void f^oo() {}
+ template void foo<int>();
+ })cpp");
}
TEST_F(DefineInlineTest, CheckForCanonDecl) {
Index: clang-tools-extra/clangd/refactor/tweaks/DefineInline.cpp
===================================================================
--- clang-tools-extra/clangd/refactor/tweaks/DefineInline.cpp
+++ clang-tools-extra/clangd/refactor/tweaks/DefineInline.cpp
@@ -339,7 +339,7 @@
// specialization.
const FunctionDecl *findTarget(const FunctionDecl *FD) {
auto CanonDecl = FD->getCanonicalDecl();
- if (!FD->isFunctionTemplateSpecialization())
+ if (!FD->isFunctionTemplateSpecialization() || CanonDecl == FD)
return CanonDecl;
// For specializations CanonicalDecl is the TemplatedDecl, which is not the
// target we want to inline into. Instead we traverse previous decls to find
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D85291.283257.patch
Type: text/x-patch
Size: 1208 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20200805/c81262a6/attachment.bin>
More information about the cfe-commits
mailing list