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 <baz...@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()) _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits