aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorGravatar zinc <zinc@downsta.ir> 2026-10-15 02:40:33 +0330
committerGravatar zinc <zinc@downsta.ir> 2026-10-15 02:40:33 +0330
commit5cc95ef2f5e83ae851b938ccf3a10e640fe7a3d7 (patch)
tree340714bee0b60a9b028924794573409b8e8b439b /src
parentmerge work/dtor: destructors (drop on any heap value, heap(), struct drop, co... (diff)
parentcompiler: a //:lines marker starts a new file, so unbounded; and unchecked; o... (diff)
merge work/triage: zc0typed.zc without .u on a typed parameter; a //:lines marker ends unbounded;/unchecked; so self-hosted run-only images bounds-check the program again
Diffstat (limited to 'src')
-rw-r--r--src/compiler/base.zc4
1 files changed, 3 insertions, 1 deletions
diff --git a/src/compiler/base.zc b/src/compiler/base.zc
index 88708f0..99ee10f 100644
--- a/src/compiler/base.zc
+++ b/src/compiler/base.zc
@@ -1321,11 +1321,13 @@ int lt_end(int b, int end) {
return 0;
}
// at the top level, a marker that comes before the item takes effect: lines are on, in its file.
+// a marker starts a new file, so the file switches of the one before it (unbounded; and
+// unchecked; in run.zc or rt.zc) end there: a program joined to the runtime is checked.
int lt_apply_marks() {
if (incdepth || ginst) return 0;
while (lt_next_mark < lt_nmarks && lt_marks[lt_next_mark * 2] < tline) {
lt_mark_base = lt_marks[lt_next_mark * 2]; lt_mark_file = lt_marks[lt_next_mark * 2 + 1];
- lines_on = 1; lt_next_mark++;
+ lines_on = 1; lt_next_mark++; bound_on = 1; check_on = 1;
}
return 0;
}