~ chicken-core (chicken-5) 1518daab965bbde5e5c99b3b56b3dbd56af67094
commit 1518daab965bbde5e5c99b3b56b3dbd56af67094 Merge: 4d3a7dd7 7a9d96de Author: felix <felix@call-with-current-continuation.org> AuthorDate: Fri Jul 15 16:11:30 2011 +0200 Commit: felix <felix@call-with-current-continuation.org> CommitDate: Fri Jul 15 16:11:30 2011 +0200 resolved conflicts diff --cc chicken-syntax.scm index 98ad27e8,aea116fd..3050fdcc --- a/chicken-syntax.scm +++ b/chicken-syntax.scm @@@ -1104,34 -1104,11 +1104,33 @@@ (##sys#extend-macro-environment 'let-compiler-syntax '() - (##sys#er-transformer - (syntax-rules () - ((_ (binding ...) body ...) - (##core#let-compiler-syntax (binding ...) body ...))))) + (syntax-rules () + ((_ (binding ...) body ...) + (##core#let-compiler-syntax (binding ...) body ...)))) +;;; type-declaration syntax + +(##sys#extend-macro-environment + ': '() + (##sys#er-transformer + (lambda (x r c) + (##sys#check-syntax ': x '(_ symbol _ . _)) + (if (memq #:csi ##sys#features) + '(##core#undefined) + (let* ((type1 (##sys#strip-syntax (caddr x))) + (name1 (cadr x))) + (let-values (((type pred) + (##compiler#validate-type type1 (##sys#strip-syntax name1)))) + (cond ((not type) + (syntax-error ': "invalid type syntax" name1 type1)) + (else + `(##core#declare + (type (,name1 ,type ,@(cdddr x))) + (enforce-argument-types ,name1) + ,@(if pred `((predicate (,name1 ,pred))) '())))))))))) + + ;;; interface definition (##sys#extend-macro-environment diff --cc types.db index 807ac96d,7363afb0..17209d8c --- a/types.db +++ b/types.db @@@ -583,10 -265,11 +583,11 @@@ (current-milliseconds (procedure current-milliseconds () float)) (current-read-table (procedure current-read-table () (struct read-table))) (current-seconds (procedure current-seconds () number)) -(define-reader-ctor (procedure define-reader-ctor (symbol procedure) undefined)) -(delete-file (procedure delete-file (string) string)) +(define-reader-ctor (procedure! define-reader-ctor (symbol procedure) undefined)) +(delete-file (procedure! delete-file (string) string)) (enable-warnings (procedure enable-warnings (#!optional *) *)) (equal=? (procedure equal=? (* *) boolean)) -(er-macro-transformer (procedure er-macro-transformer ((procedure (* * *) *)) (struct transformer))) ++(er-macro-transformer (procedure! er-macro-transformer ((procedure (* * *) *)) (struct transformer))) (errno (procedure errno () fixnum)) (error (procedure error (#!rest) noreturn)) (exit (procedure exit (#!optional fixnum) noreturn)) @@@ -732,23 -349,22 +733,24 @@@ (fxxor (procedure fxxor (fixnum fixnum) fixnum)) (gc (procedure gc (#!optional *) fixnum)) (gensym (procedure gensym (#!optional *) symbol)) -(get (procedure get (symbol symbol #!optional *) *)) -(get-call-chain (procedure get-call-chain (#!optional fixnum *) list)) -(get-condition-property (procedure get-condition-property ((struct condition) symbol symbol #!optional *) *)) -(get-environment-variable (procedure get-environment-variable (string) *)) -(get-keyword (procedure get-keyword (symbol list #!optional *) *)) -(get-output-string (procedure get-output-string (port) string)) -(get-properties (procedure get-properties (symbol list) symbol * list)) -(getenv (deprecated get-environment-variable)) -(getter-with-setter (procedure getter-with-setter (procedure procedure #!optional string) procedure)) -(implicit-exit-handler (procedure implicit-exit-handler (#!optional procedure) procedure)) + +(get (procedure! get (symbol symbol #!optional *) *) + ((symbol symbol *) (##core#inline "C_i_getprop" #(1) #(2) #(3)))) + +(get-call-chain (procedure! get-call-chain (#!optional fixnum *) list)) +(get-condition-property (procedure! get-condition-property ((struct condition) symbol symbol #!optional *) *)) +(get-environment-variable (procedure! get-environment-variable (string) *)) +(get-keyword (procedure! get-keyword (symbol list #!optional *) *)) +(get-output-string (procedure! get-output-string (port) string)) +(get-properties (procedure! get-properties (symbol list) symbol * list)) +(getter-with-setter (procedure! getter-with-setter (procedure procedure #!optional string) procedure)) +(implicit-exit-handler (procedure! implicit-exit-handler (#!optional procedure) procedure)) + (ir-macro-transformer (procedure ir-macro-transformer ((procedure (* * *) *)) (struct transformer))) -(keyword->string (procedure keyword->string (symbol) string)) +(keyword->string (procedure! keyword->string (symbol) string)) (keyword-style (procedure keyword-style (#!optional *) *)) (keyword? (procedure keyword? (*) boolean)) -(load-library (procedure load-library (symbol #!optional string) undefined)) -(load-relative (procedure load-relative (string #!optional procedure) undefined)) +(load-library (procedure! load-library (symbol #!optional string) undefined)) +(load-relative (procedure! load-relative (string #!optional procedure) undefined)) (load-verbose (procedure load-verbose (#!optional *) *)) (machine-byte-order (procedure machine-byte-order () symbol)) (machine-type (procedure machine-type () symbol))Trap