~ chicken-core (chicken-5) f757e7d9977663f663840dc86e4028e1d36a844b
commit f757e7d9977663f663840dc86e4028e1d36a844b
Author: Evan Hanson <evhan@foldling.org>
AuthorDate: Tue Feb 16 14:35:20 2016 +1300
Commit: Evan Hanson <evhan@foldling.org>
CommitDate: Tue Feb 16 14:35:20 2016 +1300
Allow multiple debug modes to be used for `debugging`
Previously, `with-debugging-output` allowed using a list to specify
multiple debug modes, but `debugging` didn't. The scrutinizer uses
"(debugging '(o e) ...)" to print specialization info, however, meaning
that info was never printed. This change just makes both procedures
accept a list of modes.
diff --git a/support.scm b/support.scm
index 63c7fc75..89538b6a 100644
--- a/support.scm
+++ b/support.scm
@@ -107,6 +107,11 @@
(define +logged-debugging-modes+ '(o x S))
+(define (test-debugging-mode mode enabled)
+ (if (symbol? mode)
+ (memq mode enabled)
+ (any (lambda (m) (memq m enabled)) mode)))
+
(define (debugging mode msg . args)
(define (text)
(with-output-to-string
@@ -120,15 +125,15 @@
(newline))))
(define (dump txt)
(fprintf collected-debugging-output "~a|~a" mode txt))
- (cond ((memq mode debugging-chicken)
+ (cond ((test-debugging-mode mode debugging-chicken)
(let ((txt (text)))
(display txt)
(flush-output)
- (when (memq mode +logged-debugging-modes+)
+ (when (test-debugging-mode mode +logged-debugging-modes+)
(dump txt))
#t))
(else
- (when (memq mode +logged-debugging-modes+)
+ (when (test-debugging-mode mode +logged-debugging-modes+)
(dump (text)))
#f)))
@@ -140,17 +145,13 @@
(if (pair? mode) (car mode) mode)
ln))
(string-split text "\n")))
- (define (test-mode mode set)
- (if (symbol? mode)
- (memq mode set)
- (pair? (lset-intersection/eq? mode set))))
- (cond ((test-mode mode debugging-chicken)
+ (cond ((test-debugging-mode mode debugging-chicken)
(let ((txt (with-output-to-string thunk)))
(display txt)
(flush-output)
- (when (test-mode mode +logged-debugging-modes+)
+ (when (test-debugging-mode mode +logged-debugging-modes+)
(collect txt))))
- ((test-mode mode +logged-debugging-modes+)
+ ((test-debugging-mode mode +logged-debugging-modes+)
(collect (with-output-to-string thunk)))))
(define (quit-compiling msg . args)
Trap