Author: Nathan Ridge Date: 2025-01-27T19:51:30-05:00 New Revision: 194c74e0166876ef2c5e0ff5e98a4b5a5442138c
URL: https://github.com/llvm/llvm-project/commit/194c74e0166876ef2c5e0ff5e98a4b5a5442138c DIFF: https://github.com/llvm/llvm-project/commit/194c74e0166876ef2c5e0ff5e98a4b5a5442138c.diff LOG: [clang][Sema] Null-check type in resolveMemberExpr() before checking for auto type (#124628) Fixes https://github.com/clangd/clangd/issues/2301 Added: Modified: clang/lib/Sema/HeuristicResolver.cpp Removed: ################################################################################ diff --git a/clang/lib/Sema/HeuristicResolver.cpp b/clang/lib/Sema/HeuristicResolver.cpp index 87c7274e7aefa6..947cf3f2f0a02b 100644 --- a/clang/lib/Sema/HeuristicResolver.cpp +++ b/clang/lib/Sema/HeuristicResolver.cpp @@ -231,15 +231,17 @@ std::vector<const NamedDecl *> HeuristicResolverImpl::resolveMemberExpr( QualType BaseType = ME->getBaseType(); if (ME->isArrow()) { BaseType = getPointeeType(BaseType); + if (BaseType.isNull()) + return {}; } - if (BaseType.isNull()) - return {}; if (const auto *BT = BaseType->getAs<BuiltinType>()) { // If BaseType is the type of a dependent expression, it's just // represented as BuiltinType::Dependent which gives us no information. We // can get further by analyzing the dependent expression. if (Base && BT->getKind() == BuiltinType::Dependent) { BaseType = resolveExprToType(Base); + if (BaseType.isNull()) + return {}; } } if (const auto *AT = BaseType->getContainedAutoType()) { _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits