diff --git a/verifier/src/main/java/dev/cel/verifier/CelAstToZ3Translator.java b/verifier/src/main/java/dev/cel/verifier/CelAstToZ3Translator.java index 255658136..4a0086b16 100644 --- a/verifier/src/main/java/dev/cel/verifier/CelAstToZ3Translator.java +++ b/verifier/src/main/java/dev/cel/verifier/CelAstToZ3Translator.java @@ -644,6 +644,12 @@ private T withScope(String varName, TranslatedValue value, Supplier actio private TranslatedValue translateComprehension(CelExpr celExpr, CelAbstractSyntaxTree ast) { CelComprehension comp = celExpr.comprehension(); CelExpr iterRangeExpr = comp.iterRange(); + if (iterRangeExpr.exprKind().getKind() == ExprKind.Kind.IDENT) { + TranslatedValue boundTv = symbolTable.get(iterRangeExpr.ident().name()); + if (boundTv != null) { + iterRangeExpr = boundTv.celExpr().orElse(iterRangeExpr); + } + } List iterationElements = new ArrayList<>(); List taints = new ArrayList<>(); List> allRangeElems = new ArrayList<>();