diff options
| author | gingerBill <bill@gingerbill.org> | 2020-05-13 23:29:06 +0100 |
|---|---|---|
| committer | gingerBill <bill@gingerbill.org> | 2020-05-13 23:29:06 +0100 |
| commit | 7c42d4ba75b0d063ae6d9ebb704068f3ebe16847 (patch) | |
| tree | 5c0243edfbba78aa673cfbceab78aead02ffc690 /src/checker.cpp | |
| parent | 14ce6d8ed8864f9283c55fdd0d9a9cc2039470b4 (diff) | |
(#594) Add `#config` to replace `#defined`; Restrict `#defined` within procedure bodies to remove race condition
Diffstat (limited to 'src/checker.cpp')
| -rw-r--r-- | src/checker.cpp | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/src/checker.cpp b/src/checker.cpp index a35f07b0b..992aeb9b3 100644 --- a/src/checker.cpp +++ b/src/checker.cpp @@ -703,6 +703,14 @@ void init_universal(void) { intrinsics_pkg->scope->flags |= ScopeFlag_Pkg | ScopeFlag_Global; intrinsics_pkg->scope->pkg = intrinsics_pkg; + config_pkg = gb_alloc_item(a, AstPackage); + config_pkg->name = str_lit("config"); + config_pkg->kind = Package_Normal; + + config_pkg->scope = create_scope(nullptr, a); + config_pkg->scope->flags |= ScopeFlag_Pkg | ScopeFlag_Global; + config_pkg->scope->pkg = config_pkg; + // Types for (isize i = 0; i < gb_count_of(basic_types); i++) { @@ -783,7 +791,7 @@ void init_universal(void) { Entity *entity = alloc_entity_constant(nullptr, make_token_ident(name), type, value); entity->state = EntityState_Resolved; - if (scope_insert(builtin_pkg->scope, entity)) { + if (scope_insert(config_pkg->scope, entity)) { error(entity->token, "'%s' defined as an argument is already declared at the global scope", name); defined_values_double_declaration = true; // NOTE(bill): Just exit early before anything, even though the compiler will do that anyway |