mirror of
https://git.savannah.gnu.org/git/guile.git
synced 2025-06-06 12:10:28 +02:00
* boot-9.scm (scm-style-repl): Print multiple values on successive
lines. * boot-9.scm (process-define-module): Bugfix: Make sure that exports are done *after* all used interfaces has been added.
This commit is contained in:
parent
be33b1a39c
commit
44484f52b3
1 changed files with 41 additions and 28 deletions
|
@ -497,6 +497,11 @@
|
||||||
(make-record-type "values"
|
(make-record-type "values"
|
||||||
'(values)))
|
'(values)))
|
||||||
|
|
||||||
|
;;; These two are needed internally in boot-9.scm.
|
||||||
|
;;; They shouldn't be visible outside this module.
|
||||||
|
(define values? (record-predicate *values-rtd*))
|
||||||
|
(define get-values (record-accessor *values-rtd* 'values))
|
||||||
|
|
||||||
(define values
|
(define values
|
||||||
(let ((make-values (record-constructor *values-rtd*)))
|
(let ((make-values (record-constructor *values-rtd*)))
|
||||||
(lambda x
|
(lambda x
|
||||||
|
@ -506,13 +511,11 @@
|
||||||
(make-values x)))))
|
(make-values x)))))
|
||||||
|
|
||||||
(define call-with-values
|
(define call-with-values
|
||||||
(let ((access-values (record-accessor *values-rtd* 'values))
|
(lambda (producer consumer)
|
||||||
(values-predicate? (record-predicate *values-rtd*)))
|
(let ((result (producer)))
|
||||||
(lambda (producer consumer)
|
(if (values? result)
|
||||||
(let ((result (producer)))
|
(apply consumer (get-values result))
|
||||||
(if (values-predicate? result)
|
(consumer result)))))
|
||||||
(apply consumer (access-values result))
|
|
||||||
(consumer result))))))
|
|
||||||
|
|
||||||
(provide 'values)
|
(provide 'values)
|
||||||
|
|
||||||
|
@ -1780,11 +1783,14 @@
|
||||||
(kws (cdr args)))
|
(kws (cdr args)))
|
||||||
(beautify-user-module! module)
|
(beautify-user-module! module)
|
||||||
(let loop ((kws kws)
|
(let loop ((kws kws)
|
||||||
(reversed-interfaces '()))
|
(reversed-interfaces '())
|
||||||
|
(exports '()))
|
||||||
(if (null? kws)
|
(if (null? kws)
|
||||||
(for-each (lambda (interface)
|
(begin
|
||||||
(module-use! module interface))
|
(for-each (lambda (interface)
|
||||||
reversed-interfaces)
|
(module-use! module interface))
|
||||||
|
reversed-interfaces)
|
||||||
|
(module-export! module exports))
|
||||||
(let ((keyword (cond ((keyword? (car kws))
|
(let ((keyword (cond ((keyword? (car kws))
|
||||||
(keyword->symbol (car kws)))
|
(keyword->symbol (car kws)))
|
||||||
((and (symbol? (car kws))
|
((and (symbol? (car kws))
|
||||||
|
@ -1814,7 +1820,8 @@
|
||||||
(module-ref interface (car (last-pair used-name))
|
(module-ref interface (car (last-pair used-name))
|
||||||
#f)))
|
#f)))
|
||||||
(loop (cddr kws)
|
(loop (cddr kws)
|
||||||
(cons interface reversed-interfaces)))))
|
(cons interface reversed-interfaces)
|
||||||
|
exports))))
|
||||||
((autoload)
|
((autoload)
|
||||||
(if (not (and (pair? (cdr kws)) (pair? (cddr kws))))
|
(if (not (and (pair? (cdr kws)) (pair? (cddr kws))))
|
||||||
(error "unrecognized defmodule argument" kws))
|
(error "unrecognized defmodule argument" kws))
|
||||||
|
@ -1822,18 +1829,20 @@
|
||||||
(cons (make-autoload-interface module
|
(cons (make-autoload-interface module
|
||||||
(cadr kws)
|
(cadr kws)
|
||||||
(caddr kws))
|
(caddr kws))
|
||||||
reversed-interfaces)))
|
reversed-interfaces)
|
||||||
|
exports))
|
||||||
((no-backtrace)
|
((no-backtrace)
|
||||||
(set-system-module! module #t)
|
(set-system-module! module #t)
|
||||||
(loop (cdr kws) reversed-interfaces))
|
(loop (cdr kws) reversed-interfaces exports))
|
||||||
((pure)
|
((pure)
|
||||||
(purify-module! module)
|
(purify-module! module)
|
||||||
(loop (cdr kws) reversed-interfaces))
|
(loop (cdr kws) reversed-interfaces exports))
|
||||||
((export)
|
((export)
|
||||||
(if (not (pair? (cdr kws)))
|
(if (not (pair? (cdr kws)))
|
||||||
(error "unrecognized defmodule argument" kws))
|
(error "unrecognized defmodule argument" kws))
|
||||||
(module-export! module (cadr kws))
|
(loop (cddr kws)
|
||||||
(loop (cddr kws) reversed-interfaces))
|
reversed-interfaces
|
||||||
|
(append (cadr kws) exports)))
|
||||||
(else
|
(else
|
||||||
(error "unrecognized defmodule argument" kws))))))
|
(error "unrecognized defmodule argument" kws))))))
|
||||||
module))
|
module))
|
||||||
|
@ -2546,17 +2555,21 @@
|
||||||
(repl-report-start-timing)
|
(repl-report-start-timing)
|
||||||
(start-stack 'repl-stack (eval sourc))))
|
(start-stack 'repl-stack (eval sourc))))
|
||||||
|
|
||||||
(-print (lambda (result)
|
(-print (let ((maybe-print (lambda (result)
|
||||||
(if (not scm-repl-silent)
|
(if (or scm-repl-print-unspecified
|
||||||
(begin
|
(not (unspecified? result)))
|
||||||
(if (or scm-repl-print-unspecified
|
(begin
|
||||||
(not (unspecified? result)))
|
(write result)
|
||||||
(begin
|
(newline))))))
|
||||||
(write result)
|
(lambda (result)
|
||||||
(newline)))
|
(if (not scm-repl-silent)
|
||||||
(if scm-repl-verbose
|
(begin
|
||||||
(repl-report))
|
(if (values? result)
|
||||||
(force-output)))))
|
(for-each maybe-print (get-values result))
|
||||||
|
(maybe-print result))
|
||||||
|
(if scm-repl-verbose
|
||||||
|
(repl-report))
|
||||||
|
(force-output))))))
|
||||||
|
|
||||||
(-quit (lambda (args)
|
(-quit (lambda (args)
|
||||||
(if scm-repl-verbose
|
(if scm-repl-verbose
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue