================ @@ -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