~ chicken-core (chicken-5) 36eeb40db8c4b86b557bd28c8c6849f428ddd189


commit 36eeb40db8c4b86b557bd28c8c6849f428ddd189
Author:     Peter Bex <peter@more-magic.net>
AuthorDate: Sun Aug 25 12:16:16 2019 +0200
Commit:     Evan Hanson <evhan@foldling.org>
CommitDate: Mon Aug 26 19:18:16 2019 +1200

    Run scrutiny tests with -specialize
    
    There used to be cases where you'd get errors when specializing but
    not when just analyzing.
    
    Fixes #1470 (the test in question is gone now, though).
    
    Signed-off-by: Evan Hanson <evhan@foldling.org>

diff --git a/tests/runtests.sh b/tests/runtests.sh
index 1811cc35..2c85d71c 100755
--- a/tests/runtests.sh
+++ b/tests/runtests.sh
@@ -113,10 +113,10 @@ $compile scrutinizer-tests.scm -analyze-only
 $compile typematch-tests.scm -specialize -no-warnings
 ./a.out
 
-$compile test-scrutinizer-message-format.scm -A -specialize 2>scrutinizer-message-format.out || true
-$compile scrutiny-tests.scm -A 2>scrutiny.out
-$compile scrutiny-tests-2.scm -A 2>scrutiny-2.out
-$compile specialization-tests.scm -A -specialize 2>specialization.out
+$compile test-scrutinizer-message-format.scm -analyze-only -specialize 2>scrutinizer-message-format.out || true
+$compile scrutiny-tests.scm -analyze-only -specialize 2>scrutiny.out
+$compile scrutiny-tests-2.scm -analyze-only -specialize 2>scrutiny-2.out
+$compile specialization-tests.scm -analyze-only -specialize -specialize 2>specialization.out
 
 # Replace foo123 -> fooXX so gensyms don't trigger failures
 $compile redact-gensyms.scm -o redact-gensyms
diff --git a/tests/scrutiny-2.expected b/tests/scrutiny-2.expected
index cd406985..dc369518 100644
--- a/tests/scrutiny-2.expected
+++ b/tests/scrutiny-2.expected
@@ -18,6 +18,18 @@ Note: Predicate is always true
 
     (pair fixnum fixnum)
 
+Note: Test is always true
+  At the toplevel,
+  In conditional expression:
+
+    (if tmp
+      tmp
+      (##sys#error "(scrutiny-tests-2.scm:XXX) assertion failed" '(pair? p)))
+
+  Test condition has always true value of type:
+
+    true
+
 Note: Predicate is always false
   In file `scrutiny-tests-2.scm:XXX',
   At the toplevel,
@@ -35,6 +47,18 @@ Note: Predicate is always false
 
     null
 
+Note: Test is always true
+  At the toplevel,
+  In conditional expression:
+
+    (if tmp
+      tmp
+      (##sys#error "(scrutiny-tests-2.scm:XXX) assertion failed" '(not ...)))
+
+  Test condition has always true value of type:
+
+    true
+
 Note: Predicate is always false
   In file `scrutiny-tests-2.scm:XXX',
   At the toplevel,
@@ -52,6 +76,18 @@ Note: Predicate is always false
 
     null
 
+Note: Test is always true
+  At the toplevel,
+  In conditional expression:
+
+    (if tmp
+      tmp
+      (##sys#error "(scrutiny-tests-2.scm:XXX) assertion failed" '(not ...)))
+
+  Test condition has always true value of type:
+
+    true
+
 Note: Predicate is always false
   In file `scrutiny-tests-2.scm:XXX',
   At the toplevel,
@@ -69,6 +105,18 @@ Note: Predicate is always false
 
     fixnum
 
+Note: Test is always true
+  At the toplevel,
+  In conditional expression:
+
+    (if tmp
+      tmp
+      (##sys#error "(scrutiny-tests-2.scm:XXX) assertion failed" '(not ...)))
+
+  Test condition has always true value of type:
+
+    true
+
 Note: Predicate is always false
   In file `scrutiny-tests-2.scm:XXX',
   At the toplevel,
@@ -86,6 +134,18 @@ Note: Predicate is always false
 
     float
 
+Note: Test is always true
+  At the toplevel,
+  In conditional expression:
+
+    (if tmp
+      tmp
+      (##sys#error "(scrutiny-tests-2.scm:XXX) assertion failed" '(not ...)))
+
+  Test condition has always true value of type:
+
+    true
+
 Note: Predicate is always true
   In file `scrutiny-tests-2.scm:XXX',
   At the toplevel,
@@ -103,6 +163,18 @@ Note: Predicate is always true
 
     null
 
+Note: Test is always true
+  At the toplevel,
+  In conditional expression:
+
+    (if tmp
+      tmp
+      (##sys#error "(scrutiny-tests-2.scm:XXX) assertion failed" '(list? l)))
+
+  Test condition has always true value of type:
+
+    true
+
 Note: Predicate is always true
   In file `scrutiny-tests-2.scm:XXX',
   At the toplevel,
@@ -120,6 +192,47 @@ Note: Predicate is always true
 
     null
 
+Note: Test is always true
+  At the toplevel,
+  In conditional expression:
+
+    (if tmp
+      tmp
+      (##sys#error "(scrutiny-tests-2.scm:XXX) assertion failed" '(list? n)))
+
+  Test condition has always true value of type:
+
+    true
+
+Note: Predicate is always false
+  In file `scrutiny-tests-2.scm:XXX',
+  At the toplevel,
+  In procedure call:
+
+    (scheme#list? p)
+
+  The predicate will always return false.
+
+  Procedure `list?' from module `scheme' is a predicate for:
+
+    list
+
+  The given argument has this type:
+
+    (pair fixnum fixnum)
+
+Note: Test is always true
+  At the toplevel,
+  In conditional expression:
+
+    (if tmp
+      tmp
+      (##sys#error "(scrutiny-tests-2.scm:XXX) assertion failed" '(not ...)))
+
+  Test condition has always true value of type:
+
+    true
+
 Note: Predicate is always false
   In file `scrutiny-tests-2.scm:XXX',
   At the toplevel,
@@ -137,6 +250,18 @@ Note: Predicate is always false
 
     fixnum
 
+Note: Test is always true
+  At the toplevel,
+  In conditional expression:
+
+    (if tmp
+      tmp
+      (##sys#error "(scrutiny-tests-2.scm:XXX) assertion failed" '(not ...)))
+
+  Test condition has always true value of type:
+
+    true
+
 Note: Predicate is always false
   In file `scrutiny-tests-2.scm:XXX',
   At the toplevel,
@@ -154,6 +279,18 @@ Note: Predicate is always false
 
     float
 
+Note: Test is always true
+  At the toplevel,
+  In conditional expression:
+
+    (if tmp
+      tmp
+      (##sys#error "(scrutiny-tests-2.scm:XXX) assertion failed" '(not ...)))
+
+  Test condition has always true value of type:
+
+    true
+
 Note: Predicate is always true
   In file `scrutiny-tests-2.scm:XXX',
   At the toplevel,
@@ -171,6 +308,18 @@ Note: Predicate is always true
 
     null
 
+Note: Test is always true
+  At the toplevel,
+  In conditional expression:
+
+    (if tmp
+      tmp
+      (##sys#error "(scrutiny-tests-2.scm:XXX) assertion failed" '(null? n)))
+
+  Test condition has always true value of type:
+
+    true
+
 Note: Predicate is always true
   In file `scrutiny-tests-2.scm:XXX',
   At the toplevel,
@@ -188,6 +337,18 @@ Note: Predicate is always true
 
     null
 
+Note: Test is always true
+  At the toplevel,
+  In conditional expression:
+
+    (if tmp
+      tmp
+      (##sys#error "(scrutiny-tests-2.scm:XXX) assertion failed" '(null? l)))
+
+  Test condition has always true value of type:
+
+    true
+
 Note: Predicate is always false
   In file `scrutiny-tests-2.scm:XXX',
   At the toplevel,
@@ -203,7 +364,19 @@ Note: Predicate is always false
 
   The given argument has this type:
 
-    pair
+    (pair fixnum fixnum)
+
+Note: Test is always true
+  At the toplevel,
+  In conditional expression:
+
+    (if tmp
+      tmp
+      (##sys#error "(scrutiny-tests-2.scm:XXX) assertion failed" '(not ...)))
+
+  Test condition has always true value of type:
+
+    true
 
 Note: Predicate is always false
   In file `scrutiny-tests-2.scm:XXX',
@@ -222,6 +395,18 @@ Note: Predicate is always false
 
     fixnum
 
+Note: Test is always true
+  At the toplevel,
+  In conditional expression:
+
+    (if tmp
+      tmp
+      (##sys#error "(scrutiny-tests-2.scm:XXX) assertion failed" '(not ...)))
+
+  Test condition has always true value of type:
+
+    true
+
 Note: Predicate is always false
   In file `scrutiny-tests-2.scm:XXX',
   At the toplevel,
@@ -239,6 +424,18 @@ Note: Predicate is always false
 
     float
 
+Note: Test is always true
+  At the toplevel,
+  In conditional expression:
+
+    (if tmp
+      tmp
+      (##sys#error "(scrutiny-tests-2.scm:XXX) assertion failed" '(not ...)))
+
+  Test condition has always true value of type:
+
+    true
+
 Note: Predicate is always true
   In file `scrutiny-tests-2.scm:XXX',
   At the toplevel,
@@ -256,6 +453,18 @@ Note: Predicate is always true
 
     fixnum
 
+Note: Test is always true
+  At the toplevel,
+  In conditional expression:
+
+    (if tmp
+      tmp
+      (##sys#error "(scrutiny-tests-2.scm:XXX) assertion failed" '(fixnum? i)))
+
+  Test condition has always true value of type:
+
+    true
+
 Note: Predicate is always false
   In file `scrutiny-tests-2.scm:XXX',
   At the toplevel,
@@ -273,6 +482,47 @@ Note: Predicate is always false
 
     float
 
+Note: Test is always true
+  At the toplevel,
+  In conditional expression:
+
+    (if tmp
+      tmp
+      (##sys#error "(scrutiny-tests-2.scm:XXX) assertion failed" '(not ...)))
+
+  Test condition has always true value of type:
+
+    true
+
+Note: Predicate is always false
+  In file `scrutiny-tests-2.scm:XXX',
+  At the toplevel,
+  In procedure call:
+
+    (chicken.base#fixnum? u)
+
+  The predicate will always return false.
+
+  Procedure `fixnum?' from module `chicken.base' is a predicate for:
+
+    fixnum
+
+  The given argument has this type:
+
+    float
+
+Note: Test is always true
+  At the toplevel,
+  In conditional expression:
+
+    (if tmp
+      tmp
+      (##sys#error "(scrutiny-tests-2.scm:XXX) assertion failed" '(not ...)))
+
+  Test condition has always true value of type:
+
+    true
+
 Note: Predicate is always true
   In file `scrutiny-tests-2.scm:XXX',
   At the toplevel,
@@ -290,6 +540,47 @@ Note: Predicate is always true
 
     float
 
+Note: Test is always true
+  At the toplevel,
+  In conditional expression:
+
+    (if tmp
+      tmp
+      (##sys#error "(scrutiny-tests-2.scm:XXX) assertion failed" '(flonum? f)))
+
+  Test condition has always true value of type:
+
+    true
+
+Note: Predicate is always true
+  In file `scrutiny-tests-2.scm:XXX',
+  At the toplevel,
+  In procedure call:
+
+    (chicken.base#flonum? u)
+
+  The predicate will always return true.
+
+  Procedure `flonum?' from module `chicken.base' is a predicate for:
+
+    float
+
+  The given argument has this type:
+
+    float
+
+Note: Test is always true
+  At the toplevel,
+  In conditional expression:
+
+    (if tmp
+      tmp
+      (##sys#error "(scrutiny-tests-2.scm:XXX) assertion failed" '(flonum? u)))
+
+  Test condition has always true value of type:
+
+    true
+
 Note: Predicate is always false
   In file `scrutiny-tests-2.scm:XXX',
   At the toplevel,
@@ -307,6 +598,18 @@ Note: Predicate is always false
 
     fixnum
 
+Note: Test is always true
+  At the toplevel,
+  In conditional expression:
+
+    (if tmp
+      tmp
+      (##sys#error "(scrutiny-tests-2.scm:XXX) assertion failed" '(not ...)))
+
+  Test condition has always true value of type:
+
+    true
+
 Note: Predicate is always true
   In file `scrutiny-tests-2.scm:XXX',
   At the toplevel,
@@ -324,6 +627,18 @@ Note: Predicate is always true
 
     fixnum
 
+Note: Test is always true
+  At the toplevel,
+  In conditional expression:
+
+    (if tmp
+      tmp
+      (##sys#error "(scrutiny-tests-2.scm:XXX) assertion failed" '(number? i)))
+
+  Test condition has always true value of type:
+
+    true
+
 Note: Predicate is always true
   In file `scrutiny-tests-2.scm:XXX',
   At the toplevel,
@@ -341,6 +656,18 @@ Note: Predicate is always true
 
     float
 
+Note: Test is always true
+  At the toplevel,
+  In conditional expression:
+
+    (if tmp
+      tmp
+      (##sys#error "(scrutiny-tests-2.scm:XXX) assertion failed" '(number? f)))
+
+  Test condition has always true value of type:
+
+    true
+
 Note: Predicate is always true
   In file `scrutiny-tests-2.scm:XXX',
   At the toplevel,
@@ -356,7 +683,19 @@ Note: Predicate is always true
 
   The given argument has this type:
 
-    number
+    float
+
+Note: Test is always true
+  At the toplevel,
+  In conditional expression:
+
+    (if tmp
+      tmp
+      (##sys#error "(scrutiny-tests-2.scm:XXX) assertion failed" '(number? u)))
+
+  Test condition has always true value of type:
+
+    true
 
 Note: Predicate is always false
   In file `scrutiny-tests-2.scm:XXX',
@@ -374,3 +713,15 @@ Note: Predicate is always false
   The given argument has this type:
 
     null
+
+Note: Test is always true
+  At the toplevel,
+  In conditional expression:
+
+    (if tmp
+      tmp
+      (##sys#error "(scrutiny-tests-2.scm:XXX) assertion failed" '(not ...)))
+
+  Test condition has always true value of type:
+
+    true
diff --git a/tests/scrutiny.expected b/tests/scrutiny.expected
index b93f9d23..afc7b415 100644
--- a/tests/scrutiny.expected
+++ b/tests/scrutiny.expected
@@ -661,22 +661,14 @@ Note: Predicate is always false
 
     fixnum
 
-Note: Predicate is always false
+Note: Test is always false
   In file `scrutiny-tests.scm:XXX',
   At the toplevel,
-  In procedure call:
-
-    (scheme#symbol? x)
-
-  The predicate will always return false.
-
-  Procedure `symbol?' from module `scheme' is a predicate for:
-
-    symbol
+  In conditional expression:
 
-  The given argument has this type:
+    (if (char-or-string? x) (scheme#symbol? x) (scheme#string? x))
 
-    (or char string)
+  Test condition is always false.
 
 Note: Predicate is always false
   In file `scrutiny-tests.scm:XXX',
Trap