~ chicken-core (chicken-5) 3211538733f36449573e967de6fe970a67a23b58
commit 3211538733f36449573e967de6fe970a67a23b58
Author: Peter Bex <peter@more-magic.net>
AuthorDate: Sun Aug 25 12:06:05 2019 +0200
Commit: Evan Hanson <evhan@foldling.org>
CommitDate: Mon Aug 26 19:17:56 2019 +1200
Also load "clean" and "pure" annotations from types.db when not specializing
There seems to be no good reason for skipping just these two when
loading types databases. All the other places that mark things as pure
or clean do it unconditionally, too.
Signed-off-by: Evan Hanson <evhan@foldling.org>
diff --git a/scrutinizer.scm b/scrutinizer.scm
index 8f5923d5..47b7c0d3 100644
--- a/scrutinizer.scm
+++ b/scrutinizer.scm
@@ -1587,10 +1587,6 @@
(define (load-type-database name specialize #!optional
(path (repository-path)))
- (define (clean! name)
- (when specialize (mark-variable name '##compiler#clean #t)))
- (define (pure! name)
- (when specialize (mark-variable name '##compiler#pure #t)))
(and-let* ((dbfile (if (not path)
(and (##sys#file-exists? name #t #f #f) name)
(chicken.load#find-file name path))))
@@ -1610,10 +1606,10 @@
(unless (null? props)
(case (car props)
((#:pure)
- (pure! name)
+ (mark-variable name '##compiler#pure #t)
(loop (cdr props)))
((#:clean)
- (clean! name)
+ (mark-variable name '##compiler#clean #t)
(loop (cdr props)))
((#:enforce)
(mark-variable name '##compiler#enforce #t)
diff --git a/tests/scrutiny-2.expected b/tests/scrutiny-2.expected
index 44315153..cd406985 100644
--- a/tests/scrutiny-2.expected
+++ b/tests/scrutiny-2.expected
@@ -16,7 +16,7 @@ Note: Predicate is always true
The given argument has this type:
- pair
+ (pair fixnum fixnum)
Note: Predicate is always false
In file `scrutiny-tests-2.scm:XXX',
diff --git a/tests/scrutiny.expected b/tests/scrutiny.expected
index 2396a539..b93f9d23 100644
--- a/tests/scrutiny.expected
+++ b/tests/scrutiny.expected
@@ -76,7 +76,7 @@ Warning: Wrong number of arguments
Procedure `string?' from module `scheme' has this type:
- (* -> boolean)
+ (* --> boolean)
Warning: Too many argument values
In file `scrutiny-tests.scm:XXX',
@@ -556,7 +556,7 @@ Warning: Invalid argument
It is a call to `list' from module `scheme' which has this type:
- (#!rest * -> list)
+ (#!rest * --> list)
This is the expression:
@@ -583,7 +583,7 @@ Warning: Invalid argument
It is a call to `cons' from module `scheme' which has this type:
- ('a 'b -> (pair 'a 'b))
+ ('a 'b --> (pair 'a 'b))
This is the expression:
@@ -780,7 +780,7 @@ Warning: Invalid argument
It is a call to `list' from module `scheme' which has this type:
- (#!rest * -> list)
+ (#!rest * --> list)
This is the expression:
@@ -807,7 +807,7 @@ Warning: Invalid argument
It is a call to `list' from module `scheme' which has this type:
- (#!rest * -> list)
+ (#!rest * --> list)
This is the expression:
@@ -834,7 +834,7 @@ Warning: Invalid argument
It is a call to `cons' from module `scheme' which has this type:
- ('a 'b -> (pair 'a 'b))
+ ('a 'b --> (pair 'a 'b))
This is the expression:
Trap