summaryrefslogtreecommitdiff
path: root/eval.c
diff options
context:
space:
mode:
Diffstat (limited to 'eval.c')
-rw-r--r--eval.c25
1 files changed, 15 insertions, 10 deletions
diff --git a/eval.c b/eval.c
index 46d737d..850984e 100644
--- a/eval.c
+++ b/eval.c
@@ -726,17 +726,22 @@ static bool eval_expr_ptr_at_index(Evaluator *ev, Expression *e, void **ptr, Typ
static Value *ident_val(Identifier i) {
switch (i->decl_kind) {
- case IDECL_FOR: {
- ForExpr *fo = i->for_;
- Value *v = *(Value **)arr_last(fo->val_stack);
- if (i == fo->index) {
- if (fo->value)
- v = &v->tuple[0];
- } else {
- if (fo->index)
- v = &v->tuple[1];
+ case IDECL_EXPR: {
+ switch (i->decl_expr->kind) {
+ case EXPR_FOR: {
+ ForExpr *fo = i->decl_expr->for_;
+ Value *v = *(Value **)arr_last(fo->val_stack);
+ if (i == fo->index) {
+ if (fo->value)
+ v = &v->tuple[0];
+ } else {
+ if (fo->index)
+ v = &v->tuple[1];
+ }
+ return v;
+ }
+ default: assert(0); return NULL;
}
- return v;
}
case IDECL_DECL: {
Declaration *decl = i->decl;