aboutsummaryrefslogtreecommitdiff
path: root/tests/icon
diff options
context:
space:
mode:
authorGravatar zinc <zinc@downsta.ir> 2026-10-14 09:07:12 +0000
committerGravatar zinc <zinc@downsta.ir> 2026-10-14 09:07:12 +0000
commitfd622c51be670bba2acf4b50c548acedbc8bb263 (patch)
tree6d55aaa418c82efe58a240143273c15cc281917c /tests/icon
parentPROPOSALS.md: features worth adding to zc (diff)
todo: one sorted list of open work; library suggestions without naming libraries
TODO.md ticks the items verified done (namespaces, actor and icon libraries and their coverage, the genome embed, the bootstrap ownership limits, the docs and fixtures sweep) and lists everything still open, including the newly requested language features, sorted easiest first. the compiler no longer names actor: file libraries for suggestions come from src/lib/modules.txt, and lib.name before its include reports the missing include. icon gains fixtures for reading globals while stepping and for begin_function on a non-function, and the suite checks that nothing the compiler reads by default mentions actors. bf.zc, the web sample and std's capture example use qualified runtime names; LEARN.md uses build/bin paths.
Diffstat (limited to 'tests/icon')
-rw-r--r--tests/icon/accept/step_globals.expected1
-rw-r--r--tests/icon/accept/step_globals.zc19
-rw-r--r--tests/icon/reject/begin_unknown_function.expected1
-rw-r--r--tests/icon/reject/begin_unknown_function.zc11
4 files changed, 32 insertions, 0 deletions
diff --git a/tests/icon/accept/step_globals.expected b/tests/icon/accept/step_globals.expected
new file mode 100644
index 0000000..8c5e263
--- /dev/null
+++ b/tests/icon/accept/step_globals.expected
@@ -0,0 +1 @@
+5 10 11 11 11 0 2
diff --git a/tests/icon/accept/step_globals.zc b/tests/icon/accept/step_globals.zc
new file mode 100644
index 0000000..c584772
--- /dev/null
+++ b/tests/icon/accept/step_globals.zc
@@ -0,0 +1,19 @@
+include rt;
+include run;
+include icon;
+int total = 1;
+fn main() {
+ // step a fragment that writes an isolated global and a bound one, reading both after each step
+ let q = run.tokens("int n = 5; scale = scale * n; total = total + scale; return total;");
+ let frame = icon.begin(q);
+ icon.set_global(frame, "scale", 2);
+ icon.bind_global(frame, "total");
+ icon.step(frame); rt.put_n(icon.local(frame, "n")); rt.put_c(' ');
+ icon.step(frame); rt.put_n(icon.global(frame, "scale")); rt.put_c(' ');
+ icon.step(frame); rt.put_n(icon.global(frame, "total")); rt.put_c(' '); rt.put_n(total); rt.put_c(' ');
+ icon.step(frame); rt.put_n(icon.result(frame)); rt.put_c(' ');
+ // a name the frame never bound reads as 0 with error status 2
+ rt.put_n(icon.global(frame, "missing")); rt.put_c(' '); rt.put_n(icon.error()); rt.put_c(10);
+ icon.close(d*frame);
+ return 0;
+}
diff --git a/tests/icon/reject/begin_unknown_function.expected b/tests/icon/reject/begin_unknown_function.expected
new file mode 100644
index 0000000..1f338fc
--- /dev/null
+++ b/tests/icon/reject/begin_unknown_function.expected
@@ -0,0 +1 @@
+1 4 0
diff --git a/tests/icon/reject/begin_unknown_function.zc b/tests/icon/reject/begin_unknown_function.zc
new file mode 100644
index 0000000..6a8e5b3
--- /dev/null
+++ b/tests/icon/reject/begin_unknown_function.zc
@@ -0,0 +1,11 @@
+include rt;
+include run;
+include icon;
+fn main() {
+ // an address that is no function has no tokens to step: no frame, error status 4
+ let frame = icon.begin_function(12345);
+ rt.put_n(frame == 0); rt.put_c(' '); rt.put_n(icon.error()); rt.put_c(' ');
+ // stepping or reading a missing frame does nothing
+ rt.put_n(icon.step(0)); rt.put_c(10);
+ return 0;
+}