[clang-tools-extra] [Clangd] [NFC] Fix dereference of null value (PR #159566)
Zahira Ammarguellat via cfe-commits
cfe-commits at lists.llvm.org
Thu Sep 18 09:17:24 PDT 2025
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 <zahira.ammarguellat at intel.com>
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 <zahira.ammarguellat at intel.com>
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 <zahira.ammarguellat at intel.com>
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();
More information about the cfe-commits
mailing list