~ chicken-core (chicken-5) ab2055df9d690bd09e8e5d9e8b772b4be446204c
commit ab2055df9d690bd09e8e5d9e8b772b4be446204c Author: felix <felix@call-with-current-continuation.org> AuthorDate: Mon Apr 11 06:09:13 2011 -0400 Commit: felix <felix@call-with-current-continuation.org> CommitDate: Mon Apr 11 06:09:13 2011 -0400 give read-error on empty #: keyword syntax, escape #: properly, when converted to symbol (still doesn't handle |#:| properly, due to #332) diff --git a/library.scm b/library.scm index 4e7a6f6b..1872f3cc 100644 --- a/library.scm +++ b/library.scm @@ -2683,7 +2683,9 @@ EOF (##sys#intern-symbol tok) ) (define (build-keyword tok) - (##sys#intern-symbol (##sys#string-append kwprefix tok)) ) + (if (eq? 0 (##sys#size tok)) + (##sys#read-error port "empty keyword") + (##sys#intern-symbol (##sys#string-append kwprefix tok)) )) ; now have the state to make a decision. (set! reserved-characters @@ -3097,7 +3099,8 @@ EOF (eq? c #\.) ) (not (##sys#string->number str)) ) ((and (eq? c #\#) - (not (eq? #\% (##core#inline "C_subchar" str 1)))) + (or (not (eq? #\% (##core#inline "C_subchar" str 1))) + (eq? #\: (##core#inline "C_subchar" str 1)))) #f) ((specialchar? c) #f) (else #t) ) )Trap