aboutsummaryrefslogtreecommitdiff
path: root/src/checker.cpp
diff options
context:
space:
mode:
authorgingerBill <bill@gingerbill.org>2019-12-29 21:10:27 +0000
committergingerBill <bill@gingerbill.org>2019-12-29 21:10:27 +0000
commit2252d992d79a39c0c9d1ad0eeb312b6e75195f8f (patch)
tree56e95fca5a4b83d0132eb3f38f434908395d2d96 /src/checker.cpp
parent2d70a784d16c5fa10f830e12c138f275ae5bb018 (diff)
Add `-disable-assert` to disable the code generation of the built-in run-time 'assert' procedure
Diffstat (limited to 'src/checker.cpp')
-rw-r--r--src/checker.cpp11
1 files changed, 11 insertions, 0 deletions
diff --git a/src/checker.cpp b/src/checker.cpp
index 088f84e24..515df72f6 100644
--- a/src/checker.cpp
+++ b/src/checker.cpp
@@ -710,6 +710,7 @@ void init_universal(void) {
add_global_string_constant(str_lit("ODIN_VERSION"), bc->ODIN_VERSION);
add_global_string_constant(str_lit("ODIN_ROOT"), bc->ODIN_ROOT);
add_global_constant(str_lit("ODIN_DEBUG"), t_untyped_bool, exact_value_bool(bc->ODIN_DEBUG));
+ add_global_constant(str_lit("ODIN_DISABLE_ASSERT"), t_untyped_bool, exact_value_bool(bc->ODIN_DISABLE_ASSERT));
// Builtin Procedures
@@ -2273,6 +2274,16 @@ DECL_ATTRIBUTE_PROC(proc_decl_attribute) {
}
ac->require_results = true;
return true;
+ } else if (name == "disabled") {
+ ExactValue ev = check_decl_attribute_value(c, value);
+
+ if (ev.kind == ExactValue_Bool) {
+ ac->has_disabled_proc = true;
+ ac->disabled_proc = ev.value_bool;
+ } else {
+ error(elem, "Expected a boolean value for '%.*s'", LIT(name));
+ }
+ return true;
}
return false;
}