fix `read-language' when input has only comments
This commit is contained in:
parent
090f82cc0b
commit
21eee45a48
|
@ -163,7 +163,7 @@ exception is propagated by @racket[read-language].
|
|||
If @racket[in] does not specify a @tech{reader language} with
|
||||
@litchar{#lang} or @litchar{#!}, then @racket[fail-thunk] is
|
||||
called. The default @racket[fail-thunk] raises
|
||||
@racket[exn:fail:contract].}
|
||||
@racket[exn:fail:read] or @racket[exn:fail:read:eof].}
|
||||
|
||||
|
||||
@defboolparam[read-case-sensitive on?]{
|
||||
|
|
|
@ -1078,6 +1078,24 @@
|
|||
(and (exn:fail:read? x)
|
||||
(not (exn:fail:read:eof? x)))))
|
||||
|
||||
;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
;; read-language
|
||||
|
||||
(test #t procedure? (read-language (open-input-string "#lang racket/base")))
|
||||
(test #t procedure? (read-language (open-input-string ";;\n#lang racket/base")))
|
||||
(test #t procedure? (read-language (open-input-string ";;\n#|\n\n |#\n#lang racket/base")))
|
||||
(test #t procedure? (read-language (open-input-string "#! /bin/env \n#lang racket/base")))
|
||||
(test #t procedure? (read-language (open-input-string "#!/bin/env \n#lang racket/base")))
|
||||
(test #t procedure? (read-language (open-input-string "#!racket/base")))
|
||||
(let ([check-nothing
|
||||
(lambda (str exn?)
|
||||
(err/rt-test (read-language (open-input-string str)) exn?)
|
||||
(test 'no read-language (open-input-string str) (lambda () 'no)))])
|
||||
(check-nothing "" exn:fail:read:eof?)
|
||||
(check-nothing ";" exn:fail:read:eof?)
|
||||
(check-nothing "#| |#" exn:fail:read:eof?)
|
||||
(check-nothing "8 9" exn:fail:read?))
|
||||
|
||||
;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
|
||||
(report-errs)
|
||||
|
|
|
@ -1088,6 +1088,8 @@ read_inner_inner(Scheme_Object *port, Scheme_Object *stxsrc, Scheme_Hash_Table *
|
|||
if (ch == EOF) {
|
||||
if (comment_mode & RETURN_FOR_COMMENT)
|
||||
return NULL;
|
||||
if (get_info)
|
||||
return expected_lang("", ch, port, stxsrc, line, col, pos, get_info);
|
||||
return scheme_eof;
|
||||
}
|
||||
if (ch == SCHEME_SPECIAL)
|
||||
|
|
Loading…
Reference in New Issue
Block a user