hanlde pub for global vars correctly
This commit is contained in:
@@ -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))
|
||||||
|
|||||||
10
sexc.scm
10
sexc.scm
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user