From 08ac60f3f58d15353adca6e9ce27e5374bb15626 Mon Sep 17 00:00:00 2001 From: Peter Bex Date: Sat, 27 May 2017 15:59:51 +0200 Subject: [PATCH] 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. --- types.db | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/types.db b/types.db index cc080fa..d142e64 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) -- 2.1.4