accept pub enum, and enums used as types

Implement pub support for enums, and also anonymous enums declared
in-place.

Also give the cdr of a `pub' form the form's own location, so a
error about what follows `pub' can say where it was written
This commit is contained in:
2026-09-16 01:16:52 +03:00
parent d0d0ea8e84
commit 847bb14340
7 changed files with 60 additions and 11 deletions

View File

@@ -14,7 +14,7 @@
SEXC ?= ../../sexc
EXPECTED = hello, world\nhello, sex\n2 greetings\ntext times
EXPECTED = hello, world\nhello, sex\n2 greetings\ntext times \nmood 1
check:
@$(SEXC) greet.sex -c -o greet.o

View File

@@ -21,4 +21,6 @@
(printf "%d greetings\n" greet-count)
(describe-fields greeting)
(printf "\n")
(var m (enum mood) grumpy)
(printf "mood %d\n" m)
(return 0))

View File

@@ -11,6 +11,8 @@
(pub struct greeting ((text (* const char)) (times int)))
(pub enum mood (cheerful grumpy))
;;; Compile-time reflection across the module boundary: both the macro
;;; and the struct it asks about are exported, and the importing unit
;;; has to know the struct's fields to expand this.