Disallow sharing files between modules

This commit is contained in:
Krzosa Karol
2022-06-26 19:20:13 +02:00
parent cd2a1a81d1
commit 06dcb718fd
3 changed files with 36 additions and 12 deletions

View File

@@ -719,13 +719,19 @@ enum{
function Ast_File *
register_ast_file(Token *pos, Intern_String filename, Ast_Module *module, B32 global_implicit_load){
Ast_File *file = 0;
For(module->all_loaded_files){
For(pctx->files){
if(it->filename == filename){
log_info("%Q :: Returning registered file: %Q\n", module->name, filename);
file = it;
break;
if(module == it->module){
log_info("%Q :: Returning registered file: %Q\n", module->name, filename);
file = it;
break;
}
print_token_context(it->pos);
compiler_error(pos, "This file is already loaded by module: %Q, try importing that module to get access to it", module->name);
}
}
if(!file){
log_info("%Q :: Registering file: %Q\n", module->name, filename);
AST_NEW(File, FILE, 0, 0);
@@ -737,6 +743,7 @@ register_ast_file(Token *pos, Intern_String filename, Ast_Module *module, B32 gl
file->decls = {pctx->heap};
file->implicit_imports = {pctx->heap};
file->module->all_loaded_files.add(file);
pctx->files.add(file);
file->pos = pos;
}