Propagating constants in operator overloads
This commit is contained in:
@@ -539,21 +539,22 @@ gen_ast(Ast *ast){
|
||||
Arena *scratch = pctx->scratch;
|
||||
Scratch_Scope _scope(scratch);
|
||||
|
||||
Intern_String var_name = pctx->intern(unique_name_scratch(scratch, node));
|
||||
gen_simple_decl(node->resolved_type, var_name);
|
||||
gen(";");
|
||||
|
||||
gen("return (");
|
||||
gen_simple_decl(node->resolved_type);
|
||||
gen("){");
|
||||
int i = 0;
|
||||
global_indent++;
|
||||
For(node->expr){
|
||||
genln("%QMemoryCopy(&%Q.m%d, ", pctx->symbol_prefix, var_name, i);
|
||||
if(!is_array(it->resolved_type)) gen("&");
|
||||
gen("(");
|
||||
gen_line(it);
|
||||
genln("");
|
||||
gen_expr(it);
|
||||
gen(")");
|
||||
gen(", sizeof(%Q.m%d));", var_name, i++);
|
||||
if (!node->expr.is_last(&it)) {
|
||||
gen(",");
|
||||
}
|
||||
}
|
||||
|
||||
genln("return %Q;", var_name);
|
||||
global_indent--;
|
||||
genln("");
|
||||
gen("};");
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user