~ chicken-core (chicken-5) 087ee9c2ee8f586ef865cfda95ea491b2370d88f
commit 087ee9c2ee8f586ef865cfda95ea491b2370d88f
Author: felix <felix@call-with-current-continuation.org>
AuthorDate: Fri Sep 9 16:48:22 2011 +0200
Commit: felix <felix@call-with-current-continuation.org>
CommitDate: Fri Sep 9 16:48:22 2011 +0200
resurrected enforcement test for user-decls
diff --git a/tests/scrutiny-tests.scm b/tests/scrutiny-tests.scm
index 5c86b438..42c3b273 100644
--- a/tests/scrutiny-tests.scm
+++ b/tests/scrutiny-tests.scm
@@ -88,6 +88,21 @@
(when (foo7 x)
(+ x 1)) ; will warn about "x" being a string
+;; declared procedure types are enforcing
+(define-type s2s (string -> symbol))
+
+(: foo8 s2s)
+(define (foo8 x) (string->symbol x))
+(: foo9 s2s)
+(declare (enforce-argument-types foo9))
+(define (foo9 x) (string->symbol x))
+
+(define (foo10 x)
+ (foo8 x)
+ (+ x 1) ; foo8 does not enforce x (no warning)
+ (foo9 x) ; + enforces number on x
+ (+ x 1)) ; foo9 does enforce
+
;; trigger warnings for incompatible types in "the" forms
(define (foo10 x)
(string-append (the pair (substring x 0 10))) ; 1
diff --git a/tests/scrutiny.expected b/tests/scrutiny.expected
index cdfb24f4..c735c802 100644
--- a/tests/scrutiny.expected
+++ b/tests/scrutiny.expected
@@ -37,7 +37,7 @@ Warning: at toplevel:
scrutiny-tests.scm:28: in procedure call to `+', expected argument #2 of type `number', but was given an argument of type `symbol'
Warning: at toplevel:
- assignment of value of type `fixnum' to toplevel variable `car' does not match declared type `(forall (a92) (procedure car ((pair a92 *)) a92))'
+ assignment of value of type `fixnum' to toplevel variable `car' does not match declared type `(forall (a105) (procedure car ((pair a105 *)) a105))'
Warning: at toplevel:
expected in `let' binding of `g8' a single result, but were given 2 results
@@ -63,11 +63,17 @@ Warning: in toplevel procedure `foo6':
Warning: at toplevel:
scrutiny-tests.scm:89: in procedure call to `+', expected argument #1 of type `number', but was given an argument of type `string'
+Warning: in toplevel procedure `foo10':
+ scrutiny-tests.scm:103: in procedure call to `foo9', expected argument #1 of type `string', but was given an argument of type `number'
+
+Warning: in toplevel procedure `foo10':
+ scrutiny-tests.scm:104: in procedure call to `+', expected argument #1 of type `number', but was given an argument of type `string'
+
Note: in toplevel procedure `foo10':
expression returns a result of type `string', but is declared to return `pair', which is not a subtype
Warning: in toplevel procedure `foo10':
- scrutiny-tests.scm:93: in procedure call to `string-append', expected argument #1 of type `string', but was given an argument of type `pair'
+ scrutiny-tests.scm:108: in procedure call to `string-append', expected argument #1 of type `string', but was given an argument of type `pair'
Warning: in toplevel procedure `foo10':
expression returns 2 values but is declared to have a single result
@@ -79,6 +85,6 @@ Warning: in toplevel procedure `foo10':
expression returns zero values but is declared to have a single result of type `*'
Warning: in toplevel procedure `foo10':
- scrutiny-tests.scm:96: in procedure call to `*', expected argument #1 of type `number', but was given an argument of type `string'
+ scrutiny-tests.scm:111: in procedure call to `*', expected argument #1 of type `number', but was given an argument of type `string'
Warning: redefinition of standard binding: car
Trap