summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--std/core.zc11
-rw-r--r--std/string.zc3
2 files changed, 11 insertions, 3 deletions
diff --git a/std/core.zc b/std/core.zc
index bfa82ea..910bfa6 100644
--- a/std/core.zc
+++ b/std/core.zc
@@ -5,4 +5,13 @@ include <stdio.h>
include <stdbool.h>
include <stdarg.h>
-var __zen_hash_seed: usize = 14695981039346656037; \ No newline at end of file
+var __zen_hash_seed: usize = 14695981039346656037;
+
+raw {
+void _zen_panic(const char* file, int line, const char* func, const char* msg) {
+ fprintf(stderr, "%s:%d (%s): Panic: %s\n", file, line, func, msg);
+ exit(1);
+}
+}
+
+#define panic(msg) _zen_panic(__FILE__, __LINE__, __func__, msg) \ No newline at end of file
diff --git a/std/string.zc b/std/string.zc
index e45d399..4e0ba03 100644
--- a/std/string.zc
+++ b/std/string.zc
@@ -58,8 +58,7 @@ impl String {
fn substring(self, start: usize, len: usize) -> String {
if (start + len > self.length()) {
- fprintf(stderr, "%s:%d (%s): Panic: substring out of bounds\n", __FILE__, __LINE__, __func__);
- exit(1);
+ panic("substring out of bounds");
}
var v = Vec<char>::new();
// Manual copy