~ chicken-core (chicken-5) 8b25ee067396446c6f7ca5d36f5adb04c6f165c5
commit 8b25ee067396446c6f7ca5d36f5adb04c6f165c5
Author: felix <felix@z.(none)>
AuthorDate: Fri Mar 25 09:13:11 2011 +0100
Commit: felix <felix@z.(none)>
CommitDate: Fri Mar 25 09:13:11 2011 +0100
fixed functor tests and incorrect syntax check; better error message for mismatch
diff --git a/expand.scm b/expand.scm
index 77ac7ca8..968709ad 100644
--- a/expand.scm
+++ b/expand.scm
@@ -1313,7 +1313,7 @@
(##sys#er-transformer
(lambda (x r c)
(let ((len (length x)))
- (##sys#check-syntax 'module x '(_ symbol _ . #(_ 1)))
+ (##sys#check-syntax 'module x '(_ symbol _ . #(_ 0)))
(cond ((and (fx>= len 4) (c (r '=) (caddr x)))
(let* ((x (##sys#strip-syntax x))
(name (cadr x))
diff --git a/modules.scm b/modules.scm
index 0c13f7d2..d60560e2 100644
--- a/modules.scm
+++ b/modules.scm
@@ -368,7 +368,7 @@
(define (##sys#find-export sym mod indirect)
(let ((exports (module-export-list mod)))
- (let loop ((xl (if (eq? #t exports) (module-exists-list mod) exports)))
+ (let loop ((xl (if (eq? #t exports) (module-exist-list mod) exports)))
(cond ((null? xl) #f)
((eq? sym (car xl)))
((pair? (car xl))
@@ -773,7 +773,9 @@
(when (pair? missing)
(##sys#syntax-error-hook
'module
- (string-append
- "argument module `" (symbol->string mname) "' does not match required signature "
+ (apply
+ string-append
+ "argument module `" (symbol->string mname) "' does not match required signature\n"
"in instantiation `" (symbol->string name) "' of functor `"
- (symbol->string fname) "'")))))))
+ (symbol->string fname) "', because the following required exports are missing:\n"
+ (map (lambda (s) (string-append "\n " (symbol->string s))) missing))))))))
diff --git a/tests/functor-tests.scm b/tests/functor-tests.scm
index 6db7b14a..1b307fd5 100644
--- a/tests/functor-tests.scm
+++ b/tests/functor-tests.scm
@@ -69,7 +69,7 @@
(import (rename test-q2 (list->queue l2q2) (queue->list q2l2)))
(import (rename test-q3 (list->queue l2q3) (queue->list q2l3)))
-(define long-list (list-tabulate 1000 identity))
+(define long-list (list-tabulate (cond-expand (csi 500) (else 1000)) identity))
(print "Queue representation #1:")
(time (q2l1 (l2q1 long-list)))
@@ -92,35 +92,41 @@
;; Test for errors
+#+csi
+(begin
+
(module m1 ())
(test-error
"argument mismatch"
- (module m2 = (breadth-first m1)))
+ (eval '(module m2 = (breadth-first m1))))
(test-error
"undefined module"
- (module m2 = (breadth-first hunoz)))
+ (eval '(module m2 = (breadth-first hunoz))))
(test-error
"undefined interface"
- (module m2 HUNOZ))
+ (eval '(module m2 HUNOZ)))
(test-error
"undefined interface in functor"
- (functor (f1 (X HUNOZ)) ()))
+ (eval '(functor (f1 (X HUNOZ)) ())))
(test-error
"undefined interface in functor result"
- (functor (f1 (X ())) HUNOZ))
+ (eval '(functor (f1 (X ())) HUNOZ)))
+
+)
;; Test alternative instantiation syntax:
(functor (frob (X (yibble))) *
- (import chicken X) yibble)
+ (import chicken X)
+ yibble)
-(test-equal?
+(test-equal
"alternative functor instantiation syntax"
(module yabble = frob (import scheme) (define yibble 99))
99)
diff --git a/tests/test.scm b/tests/test.scm
index c16de6a5..e1f57b71 100644
--- a/tests/test.scm
+++ b/tests/test.scm
@@ -85,7 +85,8 @@
((_ name expr)
(run-equal
name
- (lambda () (handle-exceptions ex *fail-token* expr)) *fail-token* eq?) )
+ (lambda () (handle-exceptions ex *fail-token* expr))
+ *fail-token* eq?) )
((_ expr) (test-error 'expr expr))))
(define-syntax test-assert
Trap