Done previously, and updated for C6 in https://github.com/pkulev/riru/pull/100.
(pub enum …) dies here: struct/union/typedef are forwarded, enum is not. Same-file (pub enum color (red green blue)) is pub must be followed by a definition with no file:line: (this is the cdr of the pub form, which has no location of its own). Non-pub enums emit fine.
This, plus -framework OpenGL in the build line, is Apple's GL 3.3. On Linux OpenGL/gl3.h is missing and gcc does not know -framework; swapping in SDL3/SDL_opengl.h is not enough either (no glCreateShader). Fine as a macOS example — worth saying so in the header, since CI is Ubuntu.
These wait values never become the process exit code: main ignores what compile-to-file returns, so sexc file.sex -- -bogus-flag prints the cc error and exits 0. sextest then treats that as a successful compile. Also delete-file* only runs after wait; if emit-c throws, the temp .c stays in /tmp.
This is what makes serialize-struct work — but only for aggregates that go through match-sex-form. process-imports still just conses public structs, so a pub struct living in another module is visible as C and invisible to map-fields. I compiled that: serialize-struct: no such struct: point. The TODO on the module reader is this.
Same hole on import: struct typedef union are pasted, enum is not, so --public-interface on a module that exports an enum is pub must be followed by a definition and cites the location correctly. Adding enum next to union is the whitelist half; walk-public is the other.
Built and ran this on CHICKEN 6.0.0 (worktree at 85bf1c1). This is the real thing: a type database the macros can actually ask questions of, plus an SDL3 program that only exists because the earlier codegen holes got closed.
Re-review of 5f9f90e on CHICKEN 6.0.0. The last blocker is gone.
Re-review of 7e6e324 on CHICKEN 6.0.0. Previous items on comments and make run-tests are fixed. The issue #16 success program still does not compile.
This is the remaining #16 hole. After the new reader, `(
These tests are why the suite is green while the #16 sample still fails: they pin comments and casts, but not `(
Still only c-or / c-bit-or / c-bit-or=. After the new reader, `(