Polymorphs, recursice typespec tagging
This commit is contained in:
@@ -476,7 +476,7 @@ parse_parameter_list(Arena *arena) {
|
||||
Ast_Decl *param = ast_new(Ast_Decl, AST_VAR, name, AST_DECL);
|
||||
param->name = name->intern_val;
|
||||
param->typespec = parse_expr();
|
||||
set_flag(param->typespec->flags, AST_TYPESPEC);
|
||||
set_flag_typespec(param->typespec);
|
||||
|
||||
propagate_polymorphic(param, param->typespec);
|
||||
propagate_polymorphic(param, name);
|
||||
@@ -506,7 +506,8 @@ parse_lambda(Token *token) {
|
||||
if (token_match(TK_Colon)) {
|
||||
do {
|
||||
Ast_Expr *typespec = parse_expr();
|
||||
set_flag(typespec->flags, AST_TYPESPEC);
|
||||
set_flag_typespec(typespec);
|
||||
|
||||
ret.add(typespec);
|
||||
} while (token_match(TK_Comma));
|
||||
}
|
||||
@@ -743,7 +744,7 @@ parse_struct(Token *pos, Ast_Kind kind) {
|
||||
token_expect(TK_Colon);
|
||||
|
||||
Ast_Expr *typespec = parse_expr();
|
||||
set_flag(typespec->flags, AST_TYPESPEC);
|
||||
set_flag_typespec(typespec);
|
||||
|
||||
Ast_Decl *decl = ast_var(token, typespec, token->intern_val, 0);
|
||||
set_flag(decl->flags, AST_AGGREGATE_CHILD);
|
||||
@@ -967,7 +968,8 @@ parse_decl(B32 is_global) {
|
||||
|
||||
else if (token_match(TK_Identifier, TK_Colon)) {
|
||||
Ast_Expr *typespec = parse_expr();
|
||||
set_flag(typespec->flags, AST_TYPESPEC);
|
||||
set_flag_typespec(typespec);
|
||||
|
||||
Ast_Expr *expr = parse_assign_expr();
|
||||
if (token_match_pound(pctx->intern_foreign))
|
||||
set_flag(flags, AST_FOREIGN);
|
||||
|
||||
Reference in New Issue
Block a user