diff options
| author | Bruce Hill <bruce@bruce-hill.com> | 2025-03-11 15:54:06 -0400 |
|---|---|---|
| committer | Bruce Hill <bruce@bruce-hill.com> | 2025-03-11 15:54:06 -0400 |
| commit | 888a977132a8494a512d5f1539fc35f464da40a2 (patch) | |
| tree | 111f23165886e354a6ca8288a0f210159c3d68f3 /typecheck.c | |
| parent | 0b2c4180483f3b2832137bea78dc565d469f8682 (diff) | |
Modify compile_type_info() so it no longer needs an env_t
Diffstat (limited to 'typecheck.c')
| -rw-r--r-- | typecheck.c | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/typecheck.c b/typecheck.c index fb78d476..3f95168f 100644 --- a/typecheck.c +++ b/typecheck.c @@ -86,10 +86,11 @@ type_t *parse_type_ast(env_t *env, type_ast_t *ast) code_err(table_type->value, "Tables can't have stack references because the array may outlive the stack frame."); else if (val_type->tag == OptionalType) code_err(ast, "Tables with optional-typed values are not currently supported"); - return Type(TableType, .key_type=key_type, .value_type=val_type); + return Type(TableType, .key_type=key_type, .value_type=val_type, .env=env); } else if (table_type->default_value) { type_t *t = Type(TableType, .key_type=key_type, - .value_type=get_type(env, table_type->default_value), .default_value=table_type->default_value); + .value_type=get_type(env, table_type->default_value), .default_value=table_type->default_value, + .env=env); if (has_stack_memory(t)) code_err(ast, "Tables can't have stack references because the array may outlive the stack frame."); return t; @@ -761,7 +762,7 @@ type_t *get_type(env_t *env, ast_t *ast) } if (has_stack_memory(key_type) || has_stack_memory(value_type)) code_err(ast, "Tables cannot hold stack references because the table may outlive the reference's stack frame."); - return Type(TableType, .key_type=key_type, .value_type=value_type, .default_value=table->default_value); + return Type(TableType, .key_type=key_type, .value_type=value_type, .default_value=table->default_value, .env=env); } case TableEntry: { code_err(ast, "Table entries should not be typechecked directly"); @@ -773,7 +774,7 @@ type_t *get_type(env_t *env, ast_t *ast) return get_type(scope, comp->expr); } else if (comp->expr->tag == TableEntry) { auto e = Match(comp->expr, TableEntry); - return Type(TableType, .key_type=get_type(scope, e->key), .value_type=get_type(scope, e->value)); + return Type(TableType, .key_type=get_type(scope, e->key), .value_type=get_type(scope, e->value), .env=env); } else { return Type(ArrayType, .item_type=get_type(scope, comp->expr)); } |
