aboutsummaryrefslogtreecommitdiff
path: root/tests/programs
diff options
context:
space:
mode:
authorGravatar zinc <zinc@downsta.ir> 2026-10-14 09:33:03 +0000
committerGravatar zinc <zinc@downsta.ir> 2026-10-14 09:33:03 +0000
commitebaa15f02dd0e5aa358ea2e527ae4557e40b4e9c (patch)
tree9f53ccfed1eedd90df2747bdfd0e9ea907caee95 /tests/programs
parenttodo: record the reverted unchecked trial and what it showed (diff)
constants inside structs, and typo suggestions for fields and static members
const NAME = e; inside a struct body declares a compile-time constant named Struct.NAME, reached as Struct.NAME or by bare name in the struct's methods. A misspelled field or Struct.name member now ends its error with '; did you mean 'name'?' on the member word, which the language server turns into a quick fix.
Diffstat (limited to 'tests/programs')
-rw-r--r--tests/programs/struct_const.zc28
1 files changed, 28 insertions, 0 deletions
diff --git a/tests/programs/struct_const.zc b/tests/programs/struct_const.zc
new file mode 100644
index 0000000..59af8fd
--- /dev/null
+++ b/tests/programs/struct_const.zc
@@ -0,0 +1,28 @@
+namespace;
+include rt;
+
+struct Text {
+ const MAX = 24, MIN = 1;
+ const int WIDE = MAX * 2;
+ int len, tag;
+ static int top() { return MAX; }
+ static int span() { return MAX - MIN; }
+ int room() { return MAX - this.len; }
+ int total() { int[MIN + 2] a; a[2] = WIDE; return a[2] + this.tag; }
+}
+
+const MAX = 99;
+
+int main() {
+ Text t;
+ t.len = 5; t.tag = 7;
+ rt.put_n(Text.MAX); rt.put_c(32);
+ rt.put_n(Text.MIN + Text.WIDE); rt.put_c(32);
+ rt.put_n(Text.top()); rt.put_c(32);
+ rt.put_n(Text.span()); rt.put_c(32);
+ rt.put_n(t.room()); rt.put_c(32);
+ rt.put_n(t.total()); rt.put_c(32);
+ rt.put_n(t.len + t.tag); rt.put_c(32);
+ rt.put_n(MAX); rt.put_c(10);
+ return 0;
+}