Remove one of implicit arrays and still working

This commit is contained in:
Krzosa Karol
2022-06-13 15:05:47 +02:00
parent 4b16439a14
commit a929e0b5ec
5 changed files with 9 additions and 16 deletions

View File

@@ -200,8 +200,7 @@ enum Ast_Decl_State{
};
struct Ast_Scope: Ast{
Array<Ast_Module *> implicit_imports;
Array<Ast_File *> implicit_loads;
Array<Ast_Scope *> implicit_imports;
Array<Ast_Decl *> decls;
Array<Ast *> stmts;
@@ -526,7 +525,6 @@ ast_module(Intern_String filename){
result->module = result;
result->file = result;
result->all_loaded_files = {pctx->heap};
result->implicit_loads = {pctx->heap};
result->implicit_imports = {pctx->heap};
result->decls = {pctx->heap};
return result;

View File

@@ -1,6 +1,7 @@
lambdas :: #load "lambdas.kl"
Memory :: #load "enums.kl"
#import "order1.kl"
order :: #import "order1.kl"
@@ -8,6 +9,8 @@ test_load :: ()
new_types :: #load "new_types.kl"
new_types.basic_type_assignment()
arena__: order2.Arena
Arena_ :: order.order2.Arena
arena___: Arena_
//-----------------------------------------------------------------------------
// Function types
//-----------------------------------------------------------------------------

View File

@@ -1,6 +1,7 @@
Test :: struct
len: S64
test: Test
member := test.len

View File

@@ -599,14 +599,13 @@ register_ast_file(Intern_String filename, Ast_Module *module, B32 global_implici
file->module = module;
file->file = file; // @warning: self referential!
file->decls = {pctx->heap};
file->implicit_loads = {pctx->heap};
file->implicit_imports = {pctx->heap};
file->module->all_loaded_files.add(file);
}
if(global_implicit_load) {
file->global_implicit_load = true;
module->implicit_loads.add(file);
module->implicit_imports.add(file);
}
return file;

View File

@@ -320,11 +320,6 @@ _search_for_decl(Ast_Scope *scope, Intern_String name){
}
}
For(scope->implicit_loads){
Ast_Decl *result = _search_for_decl(it, name);
if(result) return result;
}
For(scope->implicit_imports){
Ast_Decl *result = _search_for_decl(it, name);
if(result) return result;
@@ -909,7 +904,8 @@ resolve_expr(Ast_Expr *ast, Resolve_Flag flags, Ast_Type *compound_context){
function void
resolve_decl(Ast_Decl *ast){
if(ast->state == DECL_RESOLVED) return;
if(ast->state == DECL_RESOLVED)
return;
else if(ast->state == DECL_RESOLVING){
compiler_error(ast->pos, "Cyclic dependency of %s", ast->name.str);
return;
@@ -965,11 +961,7 @@ resolve_decl(Ast_Decl *ast){
BREAK();
}
case AST_MODULE_NAMESPACE:
CASE(FILE_NAMESPACE, File_Namespace){
unused(node);
BREAK();
}
case AST_MODULE_NAMESPACE: CASE(FILE_NAMESPACE, File_Namespace){unused(node);BREAK();}
CASE(ENUM, Decl){
Ast_Type *type_of_enum = resolve_typespec(node->typespec, AST_CAN_BE_NULL);