diff options
author | Leo Tenenbaum <pommicket@gmail.com> | 2019-11-04 17:40:11 -0500 |
---|---|---|
committer | Leo Tenenbaum <pommicket@gmail.com> | 2019-11-04 17:40:11 -0500 |
commit | 16db3a715f4af41c9c66952d459ffed723e186fc (patch) | |
tree | 80383e9b3b05582da8b6eec51bf4673604f539ce /typedefs_cgen.c | |
parent | 376fe21bba246b0bdbd90b9a4101e15c5411b505 (diff) |
each loops!
Diffstat (limited to 'typedefs_cgen.c')
-rw-r--r-- | typedefs_cgen.c | 13 |
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)) |