This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "GNU Guile".
http://git.savannah.gnu.org/cgit/guile.git/commit/?id=64fc50c294df9b6644fd40bec90eb8f4dfbc3907 The branch, master has been updated via 64fc50c294df9b6644fd40bec90eb8f4dfbc3907 (commit) via 4828538940e6fcd1637f359fa5557acb4b6e9c91 (commit) from c4c098e355bd2edcd3bc66eb7041c5f9cdeefef0 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit 64fc50c294df9b6644fd40bec90eb8f4dfbc3907 Author: Andy Wingo <[email protected]> Date: Tue May 28 11:20:29 2013 -0400 Simplify let-values to let if consumer binds only one variable * module/language/tree-il/peval.scm (peval): let-values with a consumer that has only one argument is the same as let. * test-suite/tests/peval.test ("partial evaluation"): Add test. commit 4828538940e6fcd1637f359fa5557acb4b6e9c91 Author: Andy Wingo <[email protected]> Date: Mon Jun 10 22:42:46 2013 +0200 fix linker.test * test-suite/tests/linker.test (link-elf-with-one-main-section): Fix test after string table change. ----------------------------------------------------------------------- Summary of changes: module/language/tree-il/peval.scm | 4 ++++ test-suite/tests/linker.test | 18 ++++++------------ test-suite/tests/peval.test | 7 ++++++- 3 files changed, 16 insertions(+), 13 deletions(-) diff --git a/module/language/tree-il/peval.scm b/module/language/tree-il/peval.scm index c5a1c4e..d7d561d 100644 --- a/module/language/tree-il/peval.scm +++ b/module/language/tree-il/peval.scm @@ -979,6 +979,10 @@ top-level bindings from ENV and return the resulting expression." ;; reconstruct the let-values, pevaling the consumer. (let ((producer (for-values producer))) (or (match consumer + (($ <lambda-case> src (req-name) #f #f #f () (req-sym) body #f) + (for-tail + (make-let src (list req-name) (list req-sym) (list producer) + body))) (($ <lambda-case> src req opt rest #f inits gensyms body #f) (let* ((nmin (length req)) (nmax (and (not rest) (+ nmin (if opt (length opt) 0))))) diff --git a/test-suite/tests/linker.test b/test-suite/tests/linker.test index 9e63991..dcfac1b 100644 --- a/test-suite/tests/linker.test +++ b/test-suite/tests/linker.test @@ -24,15 +24,9 @@ #:use-module (system vm linker)) (define (link-elf-with-one-main-section name bytes) - (let ((string-table (make-string-table))) - (define (intern-string! string) - (call-with-values - (lambda () (string-table-intern string-table string)) - (lambda (table idx) - (set! string-table table) - idx))) + (let ((strtab (make-string-table))) (define (make-object index name bv relocs . kwargs) - (let ((name-idx (intern-string! (symbol->string name)))) + (let ((name-idx (string-table-intern! strtab (symbol->string name)))) (make-linker-object (apply make-elf-section #:index index #:name name-idx @@ -40,16 +34,16 @@ kwargs) bv relocs (list (make-linker-symbol name 0))))) - (define (make-string-table) - (intern-string! ".shstrtab") - (make-object 2 '.shstrtab (link-string-table string-table) '() + (define (make-shstrtab) + (string-table-intern! strtab ".shstrtab") + (make-object 2 '.shstrtab (link-string-table! strtab) '() #:type SHT_STRTAB #:flags 0)) (let* ((word-size (target-word-size)) (endianness (target-endianness)) (sec (make-object 1 name bytes '())) ;; This needs to be linked last, because linking other ;; sections adds entries to the string table. - (shstrtab (make-string-table))) + (shstrtab (make-shstrtab))) (link-elf (list sec shstrtab) #:endianness endianness #:word-size word-size)))) diff --git a/test-suite/tests/peval.test b/test-suite/tests/peval.test index ecc5dd1..f409e94 100644 --- a/test-suite/tests/peval.test +++ b/test-suite/tests/peval.test @@ -1236,4 +1236,9 @@ (call-with-prompt t (lambda () (abort-to-prompt t 1 2 3)) (lambda (k x y z) (list x y z)))) - (primcall list (const 1) (const 2) (const 3)))) + (primcall list (const 1) (const 2) (const 3))) + + (pass-if-peval + (call-with-values foo (lambda (x) (bar x))) + (let (x) (_) ((call (toplevel foo))) + (call (toplevel bar) (lexical x _))))) hooks/post-receive -- GNU Guile
