================
@@ -5218,18 +5218,31 @@ static bool EvaluateVarDecl(EvalInfo &Info, const 
VarDecl *VD) {
   return true;
 }
 
-static bool EvaluateDecl(EvalInfo &Info, const Decl *D) {
-  bool OK = true;
+static bool EvaluateDecompositionDeclInit(EvalInfo &Info,
+                                          const DecompositionDecl *DD);
 
+static bool EvaluateDecl(EvalInfo &Info, const Decl *D,
+                         bool EvaluateConditionDecl = false) {
   if (const VarDecl *VD = dyn_cast<VarDecl>(D))
-    OK &= EvaluateVarDecl(Info, VD);
+    if (!EvaluateVarDecl(Info, VD))
+      return false;
 
-  if (const DecompositionDecl *DD = dyn_cast<DecompositionDecl>(D))
-    for (auto *BD : DD->flat_bindings())
-      if (auto *VD = BD->getHoldingVar())
-        OK &= EvaluateDecl(Info, VD);
+  if (const DecompositionDecl *DD = dyn_cast<DecompositionDecl>(D);
+      EvaluateConditionDecl && DD)
+    if (!EvaluateDecompositionDeclInit(Info, DD))
+      return false;
 
-  return OK;
+  return true;
+}
+
+static bool EvaluateDecompositionDeclInit(EvalInfo &Info,
+                                          const DecompositionDecl *DD) {
+  for (auto *BD : DD->flat_bindings())
+    if (auto *VD = BD->getHoldingVar())
+      if (!EvaluateDecl(Info, VD, /*EvaluateConditionDecl=*/true))
+        return false;
----------------
mizvekov wrote:

Nit:
```suggestion
  for (auto *BD : DD->flat_bindings())
    if (auto *VD = BD->getHoldingVar(); VD && !EvaluateDecl(Info, VD, 
/*EvaluateConditionDecl=*/true))
        return false;
```
There are other instances in this patch where this is applicable as well.

https://github.com/llvm/llvm-project/pull/130228
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to