better error reporting when a top-level form is wrong
svn: r18575
This commit is contained in:
parent
d761a0236a
commit
92487ed9e2
|
@ -59,4 +59,40 @@
|
||||||
#%provide))))
|
#%provide))))
|
||||||
#`(begin #,expanded (doc-begin m-id post-process exprs . body))]
|
#`(begin #,expanded (doc-begin m-id post-process exprs . body))]
|
||||||
[_else
|
[_else
|
||||||
#`(doc-begin m-id post-process (#,expanded . exprs) . body)])))]))]))
|
#`(doc-begin m-id post-process
|
||||||
|
((pre-part #,expanded body1) . exprs)
|
||||||
|
. body)])))]))]))
|
||||||
|
|
||||||
|
(define-syntax (pre-part stx)
|
||||||
|
(syntax-case stx ()
|
||||||
|
[(_ s e)
|
||||||
|
(if (string? (syntax-e #'s))
|
||||||
|
#'s
|
||||||
|
(with-syntax ([src (syntax-source #'e)]
|
||||||
|
[line (syntax-line #'e)]
|
||||||
|
[col (syntax-column #'e)]
|
||||||
|
[pos (syntax-position #'e)]
|
||||||
|
[span (syntax-column #'e)])
|
||||||
|
#'(check-pre-part e (vector 'src 'line 'col 'pos 'span))))]))
|
||||||
|
|
||||||
|
(define (check-pre-part v s)
|
||||||
|
(if (pre-part? v)
|
||||||
|
v
|
||||||
|
(error
|
||||||
|
(format
|
||||||
|
"~a: not valid in document body (need a pre-part for decode) in: ~e"
|
||||||
|
(cond
|
||||||
|
[(and (vector-ref s 0)
|
||||||
|
(vector-ref s 1))
|
||||||
|
(format "~a:~a:~a"
|
||||||
|
(vector-ref s 0)
|
||||||
|
(vector-ref s 1)
|
||||||
|
(vector-ref s 2))]
|
||||||
|
[(and (vector-ref s 0)
|
||||||
|
(vector-ref s 3))
|
||||||
|
(format "~a:::~a"
|
||||||
|
(vector-ref s 0)
|
||||||
|
(vector-ref s 1)
|
||||||
|
(vector-ref s 3))]
|
||||||
|
[else 'document])
|
||||||
|
v))))
|
||||||
|
|
Loading…
Reference in New Issue
Block a user