mirror of
https://git.savannah.gnu.org/git/guile.git
synced 2025-06-19 02:00:26 +02:00
actually inline call-with-values to tree-il's <let-values>
* module/srfi/srfi-11.scm (let-values): In the one-clause case, avoid going through temporary variables. * module/language/tree-il/inline.scm (inline!): Add another case: (call-with-values (lambda () ...) (lambda ... ...) -> let-values. * module/language/tree-il/compile-glil.scm (flatten): Fix a bug compiling applications in "vals" context. * module/language/tree-il/analyze.scm (analyze-lexicals): Fix a couple bugs with let-values and rest arguments.
This commit is contained in:
parent
4dcd84998f
commit
bca488f186
4 changed files with 59 additions and 21 deletions
|
@ -67,6 +67,9 @@
|
|||
(define-syntax let-values
|
||||
(lambda (x)
|
||||
(syntax-case x ()
|
||||
((_ ((binds exp)) b0 b1 ...)
|
||||
(syntax (call-with-values (lambda () exp)
|
||||
(lambda binds b0 b1 ...))))
|
||||
((_ (clause ...) b0 b1 ...)
|
||||
(let lp ((clauses (syntax (clause ...)))
|
||||
(ids '())
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue