diff options
author | Andy Wingo <wingo@pobox.com> | 2011-06-17 19:30:31 +0200 |
---|---|---|
committer | Andy Wingo <wingo@pobox.com> | 2011-06-17 19:42:55 +0200 |
commit | b88fef5519fab447c6c5405928c248f9f0966148 (patch) | |
tree | 0252cd8f1b31c733f62486a1f5852ba206248ab6 /libguile/strings.c | |
parent | f86f748db26eba15ca71e65b3e084a2fcbf8c3ac (diff) | |
download | guile-b88fef5519fab447c6c5405928c248f9f0966148.tar.gz |
fix invalid transformation of (values x) -> x, (+ x) -> x, etc
* module/language/tree-il/primitives.scm (+, *, cons*): In the case of
just one argument (the identity case), expand to (values x) instead of
just x. Fixes values truncation in that case.
(values): Likewise remove (values x) -> x translation, as the compiler
will do it for us, and this fixes (values (values 1 2)).
* module/language/tree-il/compile-glil.scm (flatten-lambda-case): Handle
`values' in a push context here.
* test-suite/tests/tree-il.test ("values"): Add some tests.
Diffstat (limited to 'libguile/strings.c')
0 files changed, 0 insertions, 0 deletions