Core: New unique_name scheme, more human friendly

This commit is contained in:
Krzosa Karol
2023-04-21 14:44:13 +02:00
parent 2578a2a31a
commit 32cda2b59e
12 changed files with 109 additions and 59 deletions

View File

@@ -116,7 +116,7 @@ ast_lambda(Token *pos, Array<Ast_Decl *> params, Array<Ast_Expr *> ret, Ast_Scop
result->args = params.tight_copy(pctx->perm);
result->ret = ret.tight_copy(pctx->perm);
result->scope = scope;
scope->parent_ast = result;
if (scope) scope->parent_ast = result;
For(params) {
if (is_flag_set(it->flags, AST_POLYMORPH)) {
@@ -158,6 +158,12 @@ ast_break(Token *pos) {
return result;
}
CORE_Static Ast_Break *
ast_compiler_breakpoint(Token *pos) {
AST_NEW(Break, COMPILER_BREAKPOINT, pos, AST_STMT);
return result;
}
CORE_Static Ast_Pass *
ast_continue(Token *pos) {
AST_NEW(Pass, CONTINUE, pos, AST_STMT);
@@ -259,6 +265,7 @@ CORE_Static Ast_Decl *
ast_var(Token *pos, Ast_Expr *typespec, Intern_String name, Ast_Expr *expr) {
AST_NEW(Decl, VAR, pos, AST_DECL);
result->name = name;
result->unique_name = name;
result->typespec = typespec;
set_flag_typespec(typespec);
result->expr = expr;
@@ -270,6 +277,7 @@ ast_const(Token *pos, Intern_String name, Value value) {
AST_NEW(Decl, CONST, pos, AST_DECL);
result->value = value;
result->name = name;
result->unique_name = name;
return result;
}
@@ -278,6 +286,7 @@ ast_const(Token *pos, Intern_String name, Ast_Expr *expr) {
AST_NEW(Decl, CONST, pos, AST_DECL);
result->expr = expr;
result->name = name;
result->unique_name = name;
return result;
}
@@ -287,6 +296,7 @@ ast_type(Token *pos, Intern_String name, Ast_Type *type) {
result->type = pctx->type_type;
result->type_val = type;
result->name = name;
result->unique_name = name;
return result;
}
@@ -305,6 +315,7 @@ ast_namespace(Token *pos, Ast_Scope *module, Intern_String name) {
AST_NEW(Decl, NAMESPACE, pos, AST_DECL);
result->scope = module;
result->name = name;
result->unique_name = name;
return result;
}
@@ -554,7 +565,8 @@ void next(Ast_Iter *iter) {
case AST_BREAK:
case AST_PASS:
case AST_CONTINUE: {
case AST_CONTINUE:
case AST_COMPILER_BREAKPOINT: {
Ast *node = (Ast *)ast;
} break;