https://github.com/zahiraam updated 
https://github.com/llvm/llvm-project/pull/159566

>From 5b78181faf98d419ad96b95c089e6046e604a104 Mon Sep 17 00:00:00 2001
From: Zahira Ammarguellat <[email protected]>
Date: Thu, 18 Sep 2025 05:50:57 -0700
Subject: [PATCH 1/3] [Clangd] Fix dereference of null value

---
 clang-tools-extra/clangd/AST.cpp | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/clang-tools-extra/clangd/AST.cpp b/clang-tools-extra/clangd/AST.cpp
index 2f46ecc92576c..55055cd3f8f11 100644
--- a/clang-tools-extra/clangd/AST.cpp
+++ b/clang-tools-extra/clangd/AST.cpp
@@ -145,8 +145,11 @@ std::string getQualification(ASTContext &Context,
   for (const auto *CurD : llvm::reverse(Parents)) {
     if (auto *TD = llvm::dyn_cast<TagDecl>(CurD)) {
       QualType T;
-      if (const auto *RD = dyn_cast<CXXRecordDecl>(TD);
-          ClassTemplateDecl *CTD = RD->getDescribedClassTemplate()) {
+      const auto *RD = dyn_cast<CXXRecordDecl>(TD);
+      ClassTemplateDecl *CTD = nullptr;
+      if (RD)
+        CTD = RD->getDescribedClassTemplate();
+      if (RD && CTD) {
         ArrayRef<TemplateArgument> Args;
         if (const auto *SD = dyn_cast<ClassTemplateSpecializationDecl>(RD))
           Args = SD->getTemplateArgs().asArray();

>From f12b34f8f85e9c4a82b4920c126e0c6f5cf11825 Mon Sep 17 00:00:00 2001
From: Zahira Ammarguellat <[email protected]>
Date: Thu, 18 Sep 2025 09:11:04 -0700
Subject: [PATCH 2/3] Addressed review comments

---
 clang-tools-extra/clangd/AST.cpp | 7 ++-----
 1 file changed, 2 insertions(+), 5 deletions(-)

diff --git a/clang-tools-extra/clangd/AST.cpp b/clang-tools-extra/clangd/AST.cpp
index 55055cd3f8f11..d541e51e56d87 100644
--- a/clang-tools-extra/clangd/AST.cpp
+++ b/clang-tools-extra/clangd/AST.cpp
@@ -145,11 +145,8 @@ std::string getQualification(ASTContext &Context,
   for (const auto *CurD : llvm::reverse(Parents)) {
     if (auto *TD = llvm::dyn_cast<TagDecl>(CurD)) {
       QualType T;
-      const auto *RD = dyn_cast<CXXRecordDecl>(TD);
-      ClassTemplateDecl *CTD = nullptr;
-      if (RD)
-        CTD = RD->getDescribedClassTemplate();
-      if (RD && CTD) {
+      if (const auto *RD = cast<CXXRecordDecl>(TD);
+          ClassTemplateDecl *CTD = RD->getDescribedClassTemplate()) {
         ArrayRef<TemplateArgument> Args;
         if (const auto *SD = dyn_cast<ClassTemplateSpecializationDecl>(RD))
           Args = SD->getTemplateArgs().asArray();

>From d1fcc4d7aa46a498da306f76f10b63d9bb7193d8 Mon Sep 17 00:00:00 2001
From: Zahira Ammarguellat <[email protected]>
Date: Thu, 18 Sep 2025 09:17:10 -0700
Subject: [PATCH 3/3] Addressed review comments

---
 clang-tools-extra/clangd/AST.cpp | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/clang-tools-extra/clangd/AST.cpp b/clang-tools-extra/clangd/AST.cpp
index d541e51e56d87..db6a996d832ab 100644
--- a/clang-tools-extra/clangd/AST.cpp
+++ b/clang-tools-extra/clangd/AST.cpp
@@ -145,8 +145,9 @@ std::string getQualification(ASTContext &Context,
   for (const auto *CurD : llvm::reverse(Parents)) {
     if (auto *TD = llvm::dyn_cast<TagDecl>(CurD)) {
       QualType T;
-      if (const auto *RD = cast<CXXRecordDecl>(TD);
-          ClassTemplateDecl *CTD = RD->getDescribedClassTemplate()) {
+      if (const auto *RD = dyn_cast<CXXRecordDecl>(TD);
+          ClassTemplateDecl *CTD =
+              RD ? RD->getDescribedClassTemplate() : nullptr) {
         ArrayRef<TemplateArgument> Args;
         if (const auto *SD = dyn_cast<ClassTemplateSpecializationDecl>(RD))
           Args = SD->getTemplateArgs().asArray();

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

Reply via email to