summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorKaz Kylheku <kaz@kylheku.com>2025-01-20 17:57:11 -0800
committerKaz Kylheku <kaz@kylheku.com>2025-01-20 17:57:11 -0800
commit519b05f5281572ef9f6f686844af25159ca5896e (patch)
tree1ed3f04d2ed983adfccbc2998d104a0f75041281 /tests
parent2a24f429dffbc4c928d46e95ffdf3b8fe01a7eab (diff)
downloadtxr-519b05f5281572ef9f6f686844af25159ca5896e.tar.gz
txr-519b05f5281572ef9f6f686844af25159ca5896e.tar.bz2
txr-519b05f5281572ef9f6f686844af25159ca5896e.zip
New macros for enumerated constants.
* autoload.c (enum_set_entries, enum_instantiate): New static functions. (autoload_init): Register autoload of stdlib/enum module via new functions. * stdlib/enum.tl: New file. * tests/016/enum.tl: Likewise. * txr.1: Documented.
Diffstat (limited to 'tests')
-rw-r--r--tests/016/enum.tl23
1 files changed, 23 insertions, 0 deletions
diff --git a/tests/016/enum.tl b/tests/016/enum.tl
new file mode 100644
index 00000000..b8817f4b
--- /dev/null
+++ b/tests/016/enum.tl
@@ -0,0 +1,23 @@
+(load "../common.tl")
+
+(mtest
+ (macroexpand '(defenum)) (progn)
+ (macroexpand '(defenum nil)) :error
+ (macroexpand '(defenum t)) :error
+ (macroexpand '(defenum :key)) :error
+ (macroexpand '(defenum (a "x"))) :error
+ (macroexpand '(defenum a (b "x"))) :error
+ (macroexpand '(defenum a)) (progn (defsymacro a 0))
+ (macroexpand '(defenum a b)) (progn (defsymacro a 0) (defsymacro b 1))
+ (macroexpand '(defenum a (b 2))) (progn (defsymacro a 0) (defsymacro b 2))
+ (macroexpand '(defenum (a 5) b)) (progn (defsymacro a 5) (defsymacro b 6))
+ (macroexpand '(defenum (a 5) (b 7))) (progn (defsymacro a 5) (defsymacro b 7))
+ (macroexpand '(defenum a (b #\b))) (progn (defsymacro a 0) (defsymacro b #\b))
+ (macroexpand '(defenum (a #\a) b)) (progn (defsymacro a #\a) (defsymacro b #\b))
+ (macroexpand '(defenum (a #\a) (b #\x))) (progn (defsymacro a #\a) (defsymacro b #\x))
+ (macroexpand '(defenum a b c)) (progn (defsymacro a 0) (defsymacro b 1) (defsymacro c 2)))
+
+(mtest
+ (enumlet (a b c) (list a b c)) (0 1 2)
+ (enumlet ((a 10) b c) (list a b c)) (10 11 12)
+ (enumlet ((a #\a) b c) (list a b c)) (#\a #\b #\c))