~ chicken-core (chicken-5) b4315de45dcfbb61a99df44e4447c62ccde93d88
commit b4315de45dcfbb61a99df44e4447c62ccde93d88 Merge: 90c0d08e 2dac30b7 Author: felix <felix@call-with-current-continuation.org> AuthorDate: Thu Mar 17 12:28:44 2011 +0100 Commit: felix <felix@call-with-current-continuation.org> CommitDate: Thu Mar 17 12:28:44 2011 +0100 resolved conflicts diff --cc compiler.scm index 6cb63f89,0ba5b4a0..b7245a3e --- a/compiler.scm +++ b/compiler.scm @@@ -1466,24 -1475,12 +1466,24 @@@ ((type) (for-each (lambda (spec) - (cond ((and (list? spec) (symbol? (car spec)) (= 2 (length spec))) - (##sys#put! (car spec) '##core#type (cadr spec)) - (##sys#put! (car spec) '##core#declared-type #t)) - (else - (warning "illegal `type' declaration item" spec)))) - (globalize-all (cdr spec)))) + (if (not (and (list? spec) + (>= 2 (length spec)) + (symbol? (car spec)))) + (warning "illegal type declaration" (##sys#strip-syntax spec)) - (let ((name (globalize (car spec))) ++ (let ((name (##sys#globalize (car spec))) + (type (##sys#strip-syntax (cadr spec)))) + (cond ((validate-type type name) + (mark-variable name '##core#type type) + (mark-variable name '##core#declared-type) + (when (pair? (cddr spec)) + (mark-variable + name '##core#specializations + (##sys#strip-syntax (cddr spec))))) + (else + (warning + "illegal type declaration" + (##sys#strip-syntax spec))))))) + (cdr spec))) ((unsafe-specialized-arithmetic) (set! unchecked-specialized-arithmetic #t)) (else (warning "illegal declaration specifier" spec)) ) diff --cc types.db index b28ce80d,b6bf5f2d..eca8d8f3 --- a/types.db +++ b/types.db @@@ -429,12 -181,8 +429,12 @@@ (vector->list (procedure vector->list (vector) list)) (list->vector (procedure list->vector (list) vector)) (vector-fill! (procedure vector-fill! (vector *) vector)) - (vector-copy! (procedure vector-copy! (vector vector fixnum) undefined)) + +(procedure? (procedure procedure? (*) boolean) + ((procedure) (let ((#:tmp #(1))) #t)) + (((not procedure) (let ((#:tmp #(1))) #f)))) ;XXX test this! + + (vector-copy! (procedure vector-copy! (vector vector #!optional fixnum) undefined)) -(procedure? (procedure procedure? (*) boolean)) (map (procedure map (procedure #!rest list) list)) (for-each (procedure for-each (procedure #!rest list) undefined)) (apply (procedure apply (procedure #!rest) . *))Trap