1
0
forked from alex-eg/sex

hanlde pub for global vars correctly

This commit is contained in:
alex-eg
2025-06-14 12:39:13 +03:00
parent 0ebdef2792
commit db8ff39171
2 changed files with 16 additions and 3 deletions

View File

@@ -7,7 +7,8 @@
(struct foo
((float a)
(int b)))
(int b)
((const char *) c)))
,(list-T '(int))
,(make-list-T '(int) #f)
@@ -15,10 +16,14 @@
,(length-list-T '(int) #f)
,(is-empty-list-T '(int) #f)
(fn bool bar () false)
(extern fn void puk ((int a) (float b)))
(fn bool bar () false)
(pub fn void baz () true)
(extern var int i)
(var int j)
(pub var int k)
(pub fn int main ()
(var (* list-int) l (make-list-int))

View File

@@ -102,11 +102,19 @@
acc))
(else (error "Extern what?"))))
(define (walk-public form acc)
(case (cadr form)
((fn)
(walk-function form #f acc))
((var)
(append (walk-generic (list 'static (cdr form)) (list)) acc))
(else (error "Pub what?"))))
(define (walk-sex-tree form acc)
(case (car form)
((fn) (walk-function form #t acc))
((extern) (walk-extern form acc))
((pub) (walk-function form #f acc))
((pub) (walk-public form acc))
((struct union) (walk-struct form acc))
((unquote) (fold (fn (walk-sex-tree x y))
acc