fix error reporting for define/syntax-parse (closes #2003)

This commit is contained in:
Ryan Culpepper 2018-03-28 01:50:49 +02:00
parent c2eab77cec
commit 0083f5c858

View File

@ -211,6 +211,7 @@
#:splicing? #f #:splicing? #f
#:decls (new-declenv null) #:decls (new-declenv null)
#:context stx)]) #:context stx)])
(define no-fail? (patterns-cannot-fail? (list pattern)))
(let ([expr (let ([expr
(syntax-case rest () (syntax-case rest ()
[( expr ) #'expr] [( expr ) #'expr]
@ -219,14 +220,18 @@
(with-syntax ([(a ...) attrs] (with-syntax ([(a ...) attrs]
[(#s(attr name _ _) ...) attrs] [(#s(attr name _ _) ...) attrs]
[pattern pattern] [pattern pattern]
[es0 (if no-fail? #'#f #'#t)]
[(def ...) defs] [(def ...) defs]
[expr expr]) [expr expr])
#'(defattrs/unpack (a ...) #'(defattrs/unpack (a ...)
(let* ([x (datum->syntax #f expr)] (let* ([x (datum->syntax #f expr)]
[cx x] [cx x]
[pr (ps-empty x x)] [pr (ps-empty x x)]
[es #f] [es es0]
[fh0 (syntax-patterns-fail x)]) [fh0 (syntax-patterns-fail
(normalize-context 'define/syntax-parse
'|define/syntax-parse pattern|
x))])
(parameterize ((current-syntax-context x)) (parameterize ((current-syntax-context x))
def ... def ...
(#%expression (#%expression