Fixing codegen issues because of name resolution, invalid constants rewritten

This commit is contained in:
Krzosa Karol
2022-06-11 23:26:50 +02:00
parent 0fcdd02c5b
commit 68663e650a
3 changed files with 8 additions and 5 deletions

View File

@@ -203,10 +203,10 @@ int main(int argument_count, char **arguments){
#endif
Scratch scratch;
Array<String> files = {scratch};
// files.add("lambdas.kl"_s);
// files.add("order1.kl"_s);
// files.add("order2.kl"_s);
// files.add("new_types.kl"_s);
files.add("lambdas.kl"_s);
files.add("order1.kl"_s);
files.add("order2.kl"_s);
files.add("new_types.kl"_s);
files.add("enums.kl"_s);
// files.add("G.globals.kl"_s);
// files.add("euler.kl"_s);

View File

@@ -670,7 +670,7 @@ resolve_expr(Ast_Expr *ast, Resolve_Flag flags, Ast_Type *compound_context){
node->resolved_decl = resolve_name(node->parent_scope, node->pos, node->intern_val);
Operand result = operand(node->resolved_decl);
if(node->resolved_decl->kind == AST_CONST){
if(result.is_const){
rewrite_into_const(node, Ast_Atom, node->resolved_decl->value);
}
return result;

View File

@@ -30,6 +30,9 @@ operand(Ast_Decl *decl){
result.is_const = decl->kind != AST_VAR ? true : false;
result.is_lvalue= decl->kind == AST_CONST ? false : true; // Cant assign to const values
result.value = decl->value;
if(decl->kind == AST_LAMBDA){
result.is_const = false;
} else assert(!is_lambda(decl->type));
return result;
}