summaryrefslogtreecommitdiff
path: root/typedefs_cgen.c
diff options
context:
space:
mode:
authorLeo Tenenbaum <pommicket@gmail.com>2019-11-04 17:40:11 -0500
committerLeo Tenenbaum <pommicket@gmail.com>2019-11-04 17:40:11 -0500
commit16db3a715f4af41c9c66952d459ffed723e186fc (patch)
tree80383e9b3b05582da8b6eec51bf4673604f539ce /typedefs_cgen.c
parent376fe21bba246b0bdbd90b9a4101e15c5411b505 (diff)
each loops!
Diffstat (limited to 'typedefs_cgen.c')
-rw-r--r--typedefs_cgen.c13
1 files changed, 13 insertions, 0 deletions
diff --git a/typedefs_cgen.c b/typedefs_cgen.c
index 2051acb..937be4a 100644
--- a/typedefs_cgen.c
+++ b/typedefs_cgen.c
@@ -56,6 +56,19 @@ static bool typedefs_expr(CGenerator *g, Expression *e) {
if (!typedefs_block(g, &e->while_.body))
return false;
break;
+ case EXPR_EACH: {
+ EachExpr *ea = &e->each;
+ if (ea->flags & EACH_IS_RANGE) {
+ if (!typedefs_expr(g, ea->range.from))
+ return false;
+ if (ea->range.to && !typedefs_expr(g, ea->range.to))
+ return false;
+ /* step is a value, not an expression */
+ } else {
+ if (!typedefs_expr(g, ea->of))
+ return false;
+ }
+ } break;
case EXPR_TUPLE:
arr_foreach(e->tuple, Expression, x)
if (!typedefs_expr(g, x))