mirror of
https://git.savannah.gnu.org/git/guile.git
synced 2025-06-17 01:00:20 +02:00
Handle letrec*' like
letrec' in simple cases.
* module/language/tree-il/fix-letrec.scm (fix-letrec!): When X is a `letrec*' with only lambdas and simple expressions, analyze it as if it were a `letrec'. * test-suite/tests/tree-il.test ("letrec"): Add test for `(letrec* (x y) (xx yy) ((const 1) (const 2)) (lexical y yy))'.
This commit is contained in:
parent
821eca02eb
commit
65ea26c582
2 changed files with 94 additions and 60 deletions
|
@ -363,7 +363,18 @@
|
|||
(lexical #t #t set 1)
|
||||
(lexical #t #t ref 0)
|
||||
(lexical #t #t ref 1)
|
||||
(call add 2) (call return 1) (unbind))))
|
||||
(call add 2) (call return 1) (unbind)))
|
||||
|
||||
;; simple bindings in letrec* -> equivalent to letrec
|
||||
(assert-tree-il->glil
|
||||
(letrec* (x y) (xx yy) ((const 1) (const 2))
|
||||
(lexical y yy))
|
||||
(program () (std-prelude 0 1 #f) (label _)
|
||||
(const 2)
|
||||
(bind (y #f 0)) ;; X is removed, and Y is unboxed
|
||||
(lexical #t #f set 0)
|
||||
(lexical #t #f ref 0)
|
||||
(call return 1) (unbind))))
|
||||
|
||||
(with-test-prefix "lambda"
|
||||
(assert-tree-il->glil
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue