~ chicken-core (chicken-5) 87422d23af61871b1a2fb8c6c835e9d5e40b1c27
commit 87422d23af61871b1a2fb8c6c835e9d5e40b1c27
Author: Peter Bex <peter@more-magic.net>
AuthorDate: Mon May 25 15:42:03 2015 +0200
Commit: Peter Bex <peter@more-magic.net>
CommitDate: Mon May 25 15:47:41 2015 +0200
Don't consider #t not always-true
Signed-off-by: Peter Bex <peter@more-magic.net>
Conflicts:
tests/scrutiny.expected
diff --git a/scrutinizer.scm b/scrutinizer.scm
index a68dc210..ef0e5fb2 100644
--- a/scrutinizer.scm
+++ b/scrutinizer.scm
@@ -209,7 +209,7 @@
((or) (every always-true1 (cdr t)))
((forall) (always-true1 (third t)))
(else #t)))
- ((memq t '(* boolean true false undefined noreturn)) #f)
+ ((memq t '(* boolean false undefined noreturn)) #f)
(else #t)))
(define (always-true t loc x)
diff --git a/tests/scrutiny-tests.scm b/tests/scrutiny-tests.scm
index 81c7c1a4..1d12b4c4 100644
--- a/tests/scrutiny-tests.scm
+++ b/tests/scrutiny-tests.scm
@@ -6,6 +6,10 @@
(let ((x (+ 3 4)))
(if x 1 2))))) ; expected boolean but got number in conditional
+(define (b)
+ (let ((x #t))
+ (if x 1 2))) ; #t is always true
+
(define (foo x)
(if x ; branches return differing number of results
(values 1 2)
diff --git a/tests/scrutiny.expected b/tests/scrutiny.expected
index e33e84ca..ff2c0453 100644
--- a/tests/scrutiny.expected
+++ b/tests/scrutiny.expected
@@ -7,16 +7,22 @@ Note: in local procedure `c',
(if x 1 2)
+Note: in toplevel procedure `b':
+ expected value of type boolean in conditional but were given a value of type
+ `true' which is always true:
+
+(if x 1 2)
+
Warning: in toplevel procedure `foo':
branches in conditional expression differ in the number of results:
(if x (values 1 2) (values 1 2 (+ (+ ...))))
Warning: at toplevel:
- (scrutiny-tests.scm:15) in procedure call to `bar', expected argument #2 of type `number', but was given an argument of type `symbol'
+ (scrutiny-tests.scm:19) in procedure call to `bar', expected argument #2 of type `number', but was given an argument of type `symbol'
Warning: at toplevel:
- (scrutiny-tests.scm:17) in procedure call to `pp', expected 1 argument, but was given 0 arguments
+ (scrutiny-tests.scm:21) in procedure call to `pp', expected 1 argument, but was given 0 arguments
Warning: at toplevel:
expected in argument #1 of procedure call `(print (cpu-time))' a single result, but were given 2 results
@@ -25,58 +31,58 @@ Warning: at toplevel:
expected in argument #1 of procedure call `(print (values))' a single result, but were given zero results
Warning: at toplevel:
- (scrutiny-tests.scm:23) in procedure call to `x', expected a value of type `(procedure () *)', but was given a value of type `fixnum'
+ (scrutiny-tests.scm:27) in procedure call to `x', expected a value of type `(procedure () *)', but was given a value of type `fixnum'
Warning: at toplevel:
- (scrutiny-tests.scm:25) in procedure call to `+', expected argument #1 of type `number', but was given an argument of type `symbol'
+ (scrutiny-tests.scm:29) in procedure call to `+', expected argument #1 of type `number', but was given an argument of type `symbol'
Warning: at toplevel:
- (scrutiny-tests.scm:25) in procedure call to `+', expected argument #2 of type `number', but was given an argument of type `symbol'
+ (scrutiny-tests.scm:29) 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 (a175) (procedure car ((pair a175 *)) a175))'
+ assignment of value of type `fixnum' to toplevel variable `car' does not match declared type `(forall (a178) (procedure car ((pair a178 *)) a178))'
Warning: at toplevel:
- expected in `let' binding of `g8' a single result, but were given 2 results
+ expected in `let' binding of `g10' a single result, but were given 2 results
Warning: at toplevel:
- in procedure call to `g8', expected a value of type `(procedure () *)', but was given a value of type `fixnum'
+ in procedure call to `g10', expected a value of type `(procedure () *)', but was given a value of type `fixnum'
Note: in toplevel procedure `foo':
expected value of type boolean in conditional but were given a value of type
- `(procedure bar30 () *)' which is always true:
+ `(procedure bar32 () *)' which is always true:
(if bar 3 (##core#undefined))
Warning: in toplevel procedure `foo2':
- (scrutiny-tests.scm:54) in procedure call to `string-append', expected argument #1 of type `string', but was given an argument of type `number'
+ (scrutiny-tests.scm:58) in procedure call to `string-append', expected argument #1 of type `string', but was given an argument of type `number'
Warning: at toplevel:
- (scrutiny-tests.scm:62) in procedure call to `foo3', expected argument #1 of type `string', but was given an argument of type `fixnum'
+ (scrutiny-tests.scm:66) in procedure call to `foo3', expected argument #1 of type `string', but was given an argument of type `fixnum'
Warning: in toplevel procedure `foo4':
- (scrutiny-tests.scm:67) in procedure call to `+', expected argument #1 of type `number', but was given an argument of type `string'
+ (scrutiny-tests.scm:71) in procedure call to `+', expected argument #1 of type `number', but was given an argument of type `string'
Warning: in toplevel procedure `foo5':
- (scrutiny-tests.scm:73) in procedure call to `+', expected argument #1 of type `number', but was given an argument of type `string'
+ (scrutiny-tests.scm:77) in procedure call to `+', expected argument #1 of type `number', but was given an argument of type `string'
Warning: in toplevel procedure `foo6':
- (scrutiny-tests.scm:79) in procedure call to `+', expected argument #1 of type `number', but was given an argument of type `string'
+ (scrutiny-tests.scm:83) in procedure call to `+', expected argument #1 of type `number', but was given an argument of type `string'
Warning: at toplevel:
- (scrutiny-tests.scm:86) in procedure call to `+', expected argument #1 of type `number', but was given an argument of type `string'
+ (scrutiny-tests.scm:90) 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:100) in procedure call to `foo9', expected argument #1 of type `string', but was given an argument of type `number'
+ (scrutiny-tests.scm:104) 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:101) in procedure call to `+', expected argument #1 of type `number', but was given an argument of type `string'
+ (scrutiny-tests.scm:105) 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:105) in procedure call to `string-append', expected argument #1 of type `string', but was given an argument of type `pair'
+ (scrutiny-tests.scm:109) 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
@@ -88,10 +94,10 @@ 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:108) in procedure call to `*', expected argument #1 of type `number', but was given an argument of type `string'
+ (scrutiny-tests.scm:112) in procedure call to `*', expected argument #1 of type `number', but was given an argument of type `string'
Warning: in toplevel procedure `foo#blabla':
- (scrutiny-tests.scm:133) in procedure call to `+', expected argument #2 of type `number', but was given an argument of type `symbol'
+ (scrutiny-tests.scm:137) in procedure call to `+', expected argument #2 of type `number', but was given an argument of type `symbol'
Warning: at toplevel:
use of deprecated `deprecated-procedure'
@@ -100,45 +106,45 @@ Warning: at toplevel:
use of deprecated `another-deprecated-procedure' - consider `replacement-procedure'
Warning: at toplevel:
- (scrutiny-tests.scm:158) in procedure call to `apply1', expected argument #2 of type `(list-of number)', but was given an argument of type `(list symbol fixnum fixnum)'
+ (scrutiny-tests.scm:162) in procedure call to `apply1', expected argument #2 of type `(list-of number)', but was given an argument of type `(list symbol fixnum fixnum)'
Warning: at toplevel:
- (scrutiny-tests.scm:159) in procedure call to `apply1', expected argument #2 of type `(list-of number)', but was given an argument of type `(list symbol fixnum fixnum)'
+ (scrutiny-tests.scm:163) in procedure call to `apply1', expected argument #2 of type `(list-of number)', but was given an argument of type `(list symbol fixnum fixnum)'
Note: at toplevel:
- (scrutiny-tests.scm:172) in procedure call to `fixnum?', the predicate is called with an argument of type
+ (scrutiny-tests.scm:176) in procedure call to `fixnum?', the predicate is called with an argument of type
`fixnum' and will always return true
Note: at toplevel:
- (scrutiny-tests.scm:180) in procedure call to `symbol?', the predicate is called with an argument of type
+ (scrutiny-tests.scm:184) in procedure call to `symbol?', the predicate is called with an argument of type
`(or char string)' and will always return false
Note: at toplevel:
- (scrutiny-tests.scm:184) in procedure call to `char-or-string?', the predicate is called with an argument of type
+ (scrutiny-tests.scm:188) in procedure call to `char-or-string?', the predicate is called with an argument of type
`fixnum' and will always return false
Note: at toplevel:
- (scrutiny-tests.scm:185) in procedure call to `symbol?', the predicate is called with an argument of type
+ (scrutiny-tests.scm:189) in procedure call to `symbol?', the predicate is called with an argument of type
`(or char string)' and will always return false
Note: at toplevel:
- (scrutiny-tests.scm:186) in procedure call to `string?', the predicate is called with an argument of type
+ (scrutiny-tests.scm:190) in procedure call to `string?', the predicate is called with an argument of type
`fixnum' and will always return false
Note: at toplevel:
- (scrutiny-tests.scm:190) in procedure call to `symbol?', the predicate is called with an argument of type
+ (scrutiny-tests.scm:194) in procedure call to `symbol?', the predicate is called with an argument of type
`char' and will always return false
Note: at toplevel:
- (scrutiny-tests.scm:191) in procedure call to `string?', the predicate is called with an argument of type
+ (scrutiny-tests.scm:195) in procedure call to `string?', the predicate is called with an argument of type
`symbol' and will always return false
Note: at toplevel:
- (scrutiny-tests.scm:195) in procedure call to `symbol?', the predicate is called with an argument of type
+ (scrutiny-tests.scm:199) in procedure call to `symbol?', the predicate is called with an argument of type
`(or char string)' and will always return false
Note: at toplevel:
- (scrutiny-tests.scm:196) in procedure call to `string?', the predicate is called with an argument of type
+ (scrutiny-tests.scm:200) in procedure call to `string?', the predicate is called with an argument of type
`symbol' and will always return false
Warning: redefinition of standard binding: car
Trap