mirror of
https://github.com/Ed94/Odin.git
synced 2026-08-03 22:28:46 +00:00
Add #+feature global-context
This allows to use of `context` in the global scope on a per file basis.
This commit is contained in:
@@ -357,6 +357,9 @@ enum OptInFeatureFlags : u64 {
|
|||||||
OptInFeatureFlag_IntegerDivisionByZero_Zero = 1u<<2,
|
OptInFeatureFlag_IntegerDivisionByZero_Zero = 1u<<2,
|
||||||
OptInFeatureFlag_IntegerDivisionByZero_Self = 1u<<3,
|
OptInFeatureFlag_IntegerDivisionByZero_Self = 1u<<3,
|
||||||
|
|
||||||
|
OptInFeatureFlag_GlobalContext = 1u<<4,
|
||||||
|
|
||||||
|
|
||||||
OptInFeatureFlag_IntegerDivisionByZero_ALL = OptInFeatureFlag_IntegerDivisionByZero_Trap|OptInFeatureFlag_IntegerDivisionByZero_Zero|OptInFeatureFlag_IntegerDivisionByZero_Self,
|
OptInFeatureFlag_IntegerDivisionByZero_ALL = OptInFeatureFlag_IntegerDivisionByZero_Trap|OptInFeatureFlag_IntegerDivisionByZero_Zero|OptInFeatureFlag_IntegerDivisionByZero_Self,
|
||||||
|
|
||||||
};
|
};
|
||||||
@@ -374,6 +377,10 @@ u64 get_feature_flag_from_name(String const &name) {
|
|||||||
if (name == "integer-division-by-zero:self") {
|
if (name == "integer-division-by-zero:self") {
|
||||||
return OptInFeatureFlag_IntegerDivisionByZero_Self;
|
return OptInFeatureFlag_IntegerDivisionByZero_Self;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (name == "global-context") {
|
||||||
|
return OptInFeatureFlag_GlobalContext;
|
||||||
|
}
|
||||||
return OptInFeatureFlag_NONE;
|
return OptInFeatureFlag_NONE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+6
-1
@@ -1855,7 +1855,12 @@ gb_internal void check_entity_decl(CheckerContext *ctx, Entity *e, DeclInfo *d,
|
|||||||
|
|
||||||
auto prev_flags = c.scope->flags;
|
auto prev_flags = c.scope->flags;
|
||||||
defer (c.scope->flags = prev_flags);
|
defer (c.scope->flags = prev_flags);
|
||||||
c.scope->flags &= ~ScopeFlag_ContextDefined;
|
|
||||||
|
if (check_feature_flags(ctx, d->decl_node) & OptInFeatureFlag_GlobalContext) {
|
||||||
|
c.scope->flags |= ScopeFlag_ContextDefined;
|
||||||
|
} else {
|
||||||
|
c.scope->flags &= ~ScopeFlag_ContextDefined;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
e->parent_proc_decl = c.curr_proc_decl;
|
e->parent_proc_decl = c.curr_proc_decl;
|
||||||
|
|||||||
Reference in New Issue
Block a user