[clang] [Sema] Diagnose use of if/else-if condition variable inside else-if/else branch(s) (PR #156436)
Erich Keane via cfe-commits
cfe-commits at lists.llvm.org
Mon Oct 6 06:39:07 PDT 2025
================
@@ -2371,6 +2371,24 @@ NonOdrUseReason Sema::getNonOdrUseReasonInCurrentContext(ValueDecl *D) {
return NOUR_None;
}
+bool Sema::isConditionVarReference(const DeclRefExpr *DRE) {
+ if (!DRE)
+ return false;
+
+ const VarDecl *VD = dyn_cast<VarDecl>(DRE->getDecl());
+
+ if (!VD)
+ return false;
+
+ for (Scope *S = getCurScope(); S; S = S->getParent()) {
+ if (VarDecl *CV = S->getConditionVar())
+ if (VD == CV)
----------------
erichkeane wrote:
hmm... those shouldn't be the same entity, but I see the ASTContext function is doing a lot of assuming for the purposes of deserialization, so that is probably why. It just doesn't do what I think it should be doing.
I think we actually want `Sema::DeclaresSameEntity` which'll handle it correctly.
https://github.com/llvm/llvm-project/pull/156436
More information about the cfe-commits
mailing list