Operators initially working! Problems with untyped literals

This commit is contained in:
Krzosa Karol
2022-09-29 15:24:49 +02:00
parent 9bb7b0dc96
commit 9e06b631d5
8 changed files with 110 additions and 65 deletions

View File

@@ -354,6 +354,7 @@ gen_expr(Ast_Expr *ast, Ast_Type *type_of_var){
gen_expr(node->right);
return true;
}
else if(node->op == TK_Arrow){
gen("(");
gen("(");
@@ -364,11 +365,22 @@ gen_expr(Ast_Expr *ast, Ast_Type *type_of_var){
return true;
}
if(!token_is_assign(node->op)) gen("(");
gen_expr(node->left);
gen("%s", name(node->op));
gen_expr(node->right);
if(!token_is_assign(node->op)) gen(")");
else if(node->resolved_operator_overload){
gen("%Q(", node->resolved_operator_overload->unique_name);
gen_expr(node->left);
gen(", ");
gen_expr(node->right);
gen(")");
}
else {
if(!token_is_assign(node->op)) gen("(");
gen_expr(node->left);
gen("%s", name(node->op));
gen_expr(node->right);
if(!token_is_assign(node->op)) gen(")");
}
BREAK();
}