[clang] Return available function types for BindingDecls. (PR #102196)
Samira Bazuzi via cfe-commits
cfe-commits at lists.llvm.org
Tue Aug 6 11:39:11 PDT 2024
https://github.com/bazuzi created https://github.com/llvm/llvm-project/pull/102196
Only return nullptr when we don't have an available QualType.
>From 052eff82638bdfbc8c7b8a2b90bcd9a0c46e52c4 Mon Sep 17 00:00:00 2001
From: Samira Bazuzi <bazuzi at google.com>
Date: Tue, 6 Aug 2024 14:11:46 -0400
Subject: [PATCH] Return available function types for BindingDecls.
Only return nullptr when we don't have an available QualType.
---
clang/lib/AST/DeclBase.cpp | 11 ++++++++---
1 file changed, 8 insertions(+), 3 deletions(-)
diff --git a/clang/lib/AST/DeclBase.cpp b/clang/lib/AST/DeclBase.cpp
index 98a7746b7d997..129a119267890 100644
--- a/clang/lib/AST/DeclBase.cpp
+++ b/clang/lib/AST/DeclBase.cpp
@@ -1161,15 +1161,20 @@ int64_t Decl::getID() const {
const FunctionType *Decl::getFunctionType(bool BlocksToo) const {
QualType Ty;
- if (isa<BindingDecl>(this))
- return nullptr;
- else if (const auto *D = dyn_cast<ValueDecl>(this))
+ if (const auto *D = dyn_cast<ValueDecl>(this))
Ty = D->getType();
else if (const auto *D = dyn_cast<TypedefNameDecl>(this))
Ty = D->getUnderlyingType();
else
return nullptr;
+ if (Ty.isNull()) {
+ // BindingDecls do not have types during parsing, so return nullptr. This is
+ // the only known case where `Ty` is null.
+ assert(isa<BindingDecl>(this));
+ return nullptr;
+ }
+
if (Ty->isFunctionPointerType())
Ty = Ty->castAs<PointerType>()->getPointeeType();
else if (Ty->isFunctionReferenceType())
More information about the cfe-commits
mailing list