~ chicken-core (chicken-5) d921f0bd678a75194e2af2610dc9af7d0a320b54


commit d921f0bd678a75194e2af2610dc9af7d0a320b54
Author:     Peter Bex <peter@more-magic.net>
AuthorDate: Sat May 27 15:59:51 2017 +0200
Commit:     Evan Hanson <evhan@foldling.org>
CommitDate: Tue May 30 11:12:42 2017 +1200

    Improve type declarations for condition-manipulation procedures
    
    Condition kinds and properties do not have to be symbols: they can be
    any type of object.  The only constraint according to SRFI-12 is that
    they must be comparable using eqv?, so all type declarations that
    assume they're symbols are wrong, strictly speaking.
    
    Signed-off-by: Evan Hanson <evhan@foldling.org>

diff --git a/types.db b/types.db
index cc080fa2..d142e646 100644
--- a/types.db
+++ b/types.db
@@ -774,12 +774,12 @@
 (chicken-home (#(procedure #:clean) chicken-home () string))
 (chicken-version (#(procedure #:pure) chicken-version (#!optional *) string))
 (command-line-arguments (#(procedure #:clean) command-line-arguments (#!optional (list-of string)) (list-of string)))
-(condition-predicate (#(procedure #:clean #:enforce) condition-predicate (symbol) (procedure ((struct condition)) boolean)))
-(condition-property-accessor (#(procedure #:clean #:enforce) condition-property-accessor (symbol symbol #!optional *) (procedure ((struct condition)) *)))
+(condition-predicate (#(procedure #:clean #:enforce) condition-predicate (*) (procedure ((struct condition)) boolean)))
+(condition-property-accessor (#(procedure #:clean #:enforce) condition-property-accessor (* * #!optional *) (procedure ((struct condition)) *)))
 
 (condition? (#(procedure #:pure #:predicate (struct condition)) condition? (*) boolean))
 
-(condition->list (#(procedure #:clean #:enforce) condition->list ((struct condition)) (list-of (pair symbol *))))
+(condition->list (#(procedure #:clean #:enforce) condition->list ((struct condition)) (list-of pair)))
 (continuation-capture (#(procedure #:enforce) continuation-capture ((procedure ((struct continuation)) . *)) *))
 (continuation-graft (#(procedure #:clean #:enforce) continuation-graft ((struct continuation) (procedure () . *)) *))
 (continuation-return (#(procedure #:enforce) continuation-return ((struct continuation) #!rest) . *)) ;XXX make return type more specific?
@@ -984,7 +984,7 @@
      ((symbol symbol *) (##core#inline "C_i_getprop" #(1) #(2) #(3))))
 
 (get-call-chain (#(procedure #:clean #:enforce) get-call-chain (#!optional fixnum (struct thread)) (list-of vector)))
-(get-condition-property (#(procedure #:clean #:enforce) get-condition-property ((struct condition) symbol symbol #!optional *) *))
+(get-condition-property (#(procedure #:clean #:enforce) get-condition-property ((struct condition) * * #!optional *) *))
 (get-environment-variable (#(procedure #:clean #:enforce) get-environment-variable (string) *))
 (get-keyword (#(procedure #:clean #:enforce) get-keyword (symbol list #!optional *) *))
 (get-output-string (#(procedure #:clean #:enforce) get-output-string (output-port) string))
@@ -1019,7 +1019,7 @@
 
 (make-composite-condition (#(procedure #:clean #:enforce) make-composite-condition (#!rest (struct condition)) (struct condition)))
 (make-parameter (#(procedure #:clean #:enforce) make-parameter (* #!optional procedure) procedure))
-(make-property-condition (#(procedure #:clean #:enforce) make-property-condition (symbol #!rest *) (struct condition)))
+(make-property-condition (#(procedure #:clean #:enforce) make-property-condition (* #!rest *) (struct condition)))
 (maximum-flonum float)
 (memory-statistics (#(procedure #:clean) memory-statistics () (vector-of fixnum)))
 (minimum-flonum float)
Trap