mirror of
https://git.savannah.gnu.org/git/guile.git
synced 2025-06-10 22:10:21 +02:00
var at toplevel works too
* module/language/ecmascript/compile-ghil.scm (comp): Fix the var form at toplevel.
This commit is contained in:
parent
7fb4230060
commit
984dce236b
1 changed files with 19 additions and 3 deletions
|
@ -44,6 +44,9 @@
|
|||
,e ,l
|
||||
(ghil-var-at-module! ,e '(language ecmascript impl) ',sym #t))
|
||||
,args))
|
||||
(define-macro (@implv e l sym)
|
||||
`(make-ghil-ref ,e ,l
|
||||
(ghil-var-at-module! ,e '(language ecmascript impl) ',sym #t)))
|
||||
|
||||
(define (comp x e)
|
||||
(let ((l (location x)))
|
||||
|
@ -69,9 +72,22 @@
|
|||
(make-ghil-inline e l 'mul (list (comp a e) (comp b e))))
|
||||
((ref ,id)
|
||||
(make-ghil-ref e l (ghil-var-for-ref! e id)))
|
||||
((var ,id ,val)
|
||||
(make-ghil-define e l (ghil-var-define! (ghil-env-parent e) id)
|
||||
(comp val e)))
|
||||
((var . ,forms)
|
||||
(make-ghil-begin e l
|
||||
(map (lambda (form)
|
||||
(pmatch form
|
||||
((,x ,y)
|
||||
(make-ghil-define e l
|
||||
(ghil-var-define!
|
||||
(ghil-env-parent e) x)
|
||||
(comp y e)))
|
||||
((,x)
|
||||
(make-ghil-define e l
|
||||
(ghil-var-define!
|
||||
(ghil-env-parent e) x)
|
||||
(@implv e l *undefined*)))
|
||||
(else (error "bad var form" form))))
|
||||
forms)))
|
||||
((begin . ,forms)
|
||||
(make-ghil-begin e l (map (lambda (x) (comp x e)) forms)))
|
||||
((lambda ,formals ,body)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue