diff options
| author | Bruce Hill <bruce@bruce-hill.com> | 2024-02-23 12:50:01 -0500 |
|---|---|---|
| committer | Bruce Hill <bruce@bruce-hill.com> | 2024-02-23 12:50:01 -0500 |
| commit | 9aec32149fae328d73ee4816bc12e56c65327cbf (patch) | |
| tree | fb3709cec6e13c2bcdcb7bc51d19e4b9f5c60bbc /typecheck.c | |
| parent | 197da905f52051e9341781b2d64e5e47a213242f (diff) | |
Code cleanup for KeywordArg
Diffstat (limited to 'typecheck.c')
| -rw-r--r-- | typecheck.c | 17 |
1 files changed, 7 insertions, 10 deletions
diff --git a/typecheck.c b/typecheck.c index fcb27bc1..146fad7d 100644 --- a/typecheck.c +++ b/typecheck.c @@ -62,8 +62,8 @@ type_t *parse_type_ast(env_t *env, type_ast_t *ast) if (arg->type) { type_args->type = parse_type_ast(env, arg->type); } else { - type_args->default_val = arg->default_val; - type_args->type = get_type(env, arg->default_val); + type_args->default_val = arg->value; + type_args->type = get_type(env, arg->value); } } REVERSE_LIST(type_args); @@ -114,7 +114,7 @@ void bind_statement(env_t *env, ast_t *statement) type_t *type = Type(StructType, .name=def->name, .fields=fields); // placeholder for (arg_ast_t *field_ast = def->fields; field_ast; field_ast = field_ast->next) { type_t *field_t = parse_type_ast(env, field_ast->type); - fields = new(arg_t, .name=field_ast->name, .type=field_t, .default_val=field_ast->default_val, .next=fields); + fields = new(arg_t, .name=field_ast->name, .type=field_t, .default_val=field_ast->value, .next=fields); } REVERSE_LIST(fields); type->__data.StructType.fields = fields; // populate placeholder @@ -134,7 +134,7 @@ void bind_statement(env_t *env, ast_t *statement) arg_t *fields = NULL; for (arg_ast_t *field_ast = tag_ast->fields; field_ast; field_ast = field_ast->next) { type_t *field_t = parse_type_ast(env, field_ast->type); - fields = new(arg_t, .name=field_ast->name, .type=field_t, .default_val=field_ast->default_val, .next=fields); + fields = new(arg_t, .name=field_ast->name, .type=field_t, .default_val=field_ast->value, .next=fields); } REVERSE_LIST(fields); type_t *tag_type = Type(StructType, .name=heap_strf("%s$%s", def->name, tag_ast->name), .fields=fields); @@ -160,8 +160,8 @@ type_t *get_function_def_type(env_t *env, ast_t *ast) arg_t *args = NULL; env_t *scope = fresh_scope(env); for (arg_ast_t *arg = fn->args; arg; arg = arg->next) { - type_t *t = arg->type ? parse_type_ast(env, arg->type) : get_type(env, arg->default_val); - args = new(arg_t, .name=arg->name, .type=t, .default_val=arg->default_val, .next=args); + type_t *t = arg->type ? parse_type_ast(env, arg->type) : get_type(env, arg->value); + args = new(arg_t, .name=arg->name, .type=t, .default_val=arg->value, .next=args); set_binding(scope, arg->name, new(binding_t, .type=t)); } REVERSE_LIST(args); @@ -327,9 +327,6 @@ type_t *get_type(env_t *env, ast_t *ast) } } } - case KeywordArg: { - return get_type(env, Match(ast, KeywordArg)->arg); - } case FunctionCall: { auto call = Match(ast, FunctionCall); if (call->extern_return_type) @@ -514,7 +511,7 @@ type_t *get_type(env_t *env, ast_t *ast) arg_t *args = NULL; env_t *scope = fresh_scope(env); for (arg_ast_t *arg = lambda->args; arg; arg = arg->next) { - type_t *t = arg->type ? parse_type_ast(env, arg->type) : get_type(env, arg->default_val); + type_t *t = arg->type ? parse_type_ast(env, arg->type) : get_type(env, arg->value); args = new(arg_t, .name=arg->name, .type=t, .next=args); set_binding(scope, arg->name, new(binding_t, .type=t)); } |
