Add DECL_TYPE

This commit is contained in:
Krzosa Karol
2022-06-10 15:05:44 +02:00
parent 89b3e00ae4
commit 3402b4fe4d
3 changed files with 27 additions and 37 deletions

View File

@@ -72,8 +72,9 @@ gen_simple_decl(Ast_Resolved_Type *ast, Intern_String name){
}
}
function void
function B32
gen_value(Value a){
B32 result = true;
switch(a.type->kind){
CASE_INT: {
Scratch scratch;
@@ -83,8 +84,9 @@ gen_value(Value a){
CASE_STRING: gen("LIT(\"%s\")", a.intern_val.str); break;
CASE_BOOL: a.bool_val ? gen("true"):gen("false"); break;
CASE_FLOAT: gen("%f", a.f64_val); break;
invalid_default_case;
default: result = false;
}
return result;
}
function void
@@ -96,37 +98,20 @@ gen_expr(Ast_Expr *ast){
}
CASE(VALUE, Atom){
gen_value(node->value);
B32 written = gen_value(node->value);
if(!written) gen("%s", node->value.intern_val.str);
BREAK();
}
// CASE(INDEX, Index){
// Sym *sym = resolved_get(node);
// if(is_array(sym->type)){
// gen("(");
// gen("(");
// gen("(");
// gen_simple_decl(sym->type->arr.base, {});
// gen("*)");
// gen_expr(node->expr);
// gen(".data)");
// gen("[");
// gen_expr(node->index);
// gen("]");
// gen(")");
// } else{
// gen("(");
// gen_expr(node->expr);
// gen("[");
// gen_expr(node->index);
// gen("]");
// gen(")");
// }
// BREAK();
// }
CASE(INDEX, Index){
gen("(");
gen_expr(node->expr);
gen("[");
gen_expr(node->index);
gen("]");
gen(")");
BREAK();
}
CASE(BINARY, Binary){
// if(node->op == TK_Dot){
@@ -348,6 +333,12 @@ gen_ast(Ast *ast){
BREAK();
}
CASE(TYPE, Decl){
gen("// Type %s = ", node->name.str);
gen_expr(node->expr);
BREAK();
}
CASE(CONST, Decl){
switch(node->type->kind){
CASE_FLOAT:{
@@ -367,12 +358,6 @@ gen_ast(Ast *ast){
gen_value(node->value);
}break;
case TYPE_LAMBDA:{
}break;
case TYPE_TYPE:{
}break;
// if(sym->type_val->kind == TYPE_STRUCT){
// Ast_Struct *agg = (Ast_Struct *)sym->type_val->ast;
// if(node->value->kind == AST_STRUCT){