hanlde pub for global vars correctly

This commit is contained in:
2025-06-14 12:39:13 +03:00
parent 84550be2bd
commit 6e59e523d4
2 changed files with 16 additions and 3 deletions

View File

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

View File

@@ -102,11 +102,19 @@
acc)) acc))
(else (error "Extern what?")))) (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) (define (walk-sex-tree form acc)
(case (car form) (case (car form)
((fn) (walk-function form #t acc)) ((fn) (walk-function form #t acc))
((extern) (walk-extern form acc)) ((extern) (walk-extern form acc))
((pub) (walk-function form #f acc)) ((pub) (walk-public form acc))
((struct union) (walk-struct form acc)) ((struct union) (walk-struct form acc))
((unquote) (fold (fn (walk-sex-tree x y)) ((unquote) (fold (fn (walk-sex-tree x y))
acc acc