https://github.com/zyn0217 updated 
https://github.com/llvm/llvm-project/pull/191654

>From d48dd3b909e1c3ce2e830008a931197651a96fca Mon Sep 17 00:00:00 2001
From: Younan Zhang <[email protected]>
Date: Sun, 12 Apr 2026 02:27:40 +0800
Subject: [PATCH] [Clangd] Don't traverse ConceptDecl in typeForNode

ConceptDecl doesn't have an associated template declaration, and it
doesn't introduce a type either.
---
 clang-tools-extra/clangd/XRefs.cpp                | 3 +++
 clang-tools-extra/clangd/unittests/XRefsTests.cpp | 9 +++++++--
 2 files changed, 10 insertions(+), 2 deletions(-)

diff --git a/clang-tools-extra/clangd/XRefs.cpp 
b/clang-tools-extra/clangd/XRefs.cpp
index 4b685b7bf793e..8019ae4fda4ae 100644
--- a/clang-tools-extra/clangd/XRefs.cpp
+++ b/clang-tools-extra/clangd/XRefs.cpp
@@ -2058,6 +2058,9 @@ static QualType typeForNode(const ASTContext &Ctx, const 
HeuristicResolver *H,
       }
       // Look inside templates.
       QualType VisitTemplateDecl(const TemplateDecl *D) {
+        // ConceptDecl doesn't have any associated types.
+        if (isa<ConceptDecl>(D))
+          return QualType();
         return Visit(D->getTemplatedDecl());
       }
     } V(Ctx);
diff --git a/clang-tools-extra/clangd/unittests/XRefsTests.cpp 
b/clang-tools-extra/clangd/unittests/XRefsTests.cpp
index 8e97db7ab17c5..00ead63050c8d 100644
--- a/clang-tools-extra/clangd/unittests/XRefsTests.cpp
+++ b/clang-tools-extra/clangd/unittests/XRefsTests.cpp
@@ -2094,14 +2094,19 @@ TEST(FindType, All) {
 TEST(FindType, Definition) {
   Annotations A(R"cpp(
     class $decl[[X]];
-    X *^x;
+    X *$x^x;
     class $def[[X]] {};
+
+    template <class T>
+    concept $Concept^True = true;
   )cpp");
   auto TU = TestTU::withCode(A.code().str());
+  TU.ExtraArgs.push_back("-std=c++20");
   ParsedAST AST = TU.build();
 
-  EXPECT_THAT(findType(AST, A.point(), nullptr),
+  EXPECT_THAT(findType(AST, A.point("x"), nullptr),
               ElementsAre(sym("X", A.range("decl"), A.range("def"))));
+  EXPECT_THAT(findType(AST, A.point("Concept"), nullptr), IsEmpty());
 }
 
 TEST(FindType, Index) {

_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to