improve ->'s source location tracking

closes PR 13514
This commit is contained in:
Robby Findler 2013-02-11 16:42:06 -06:00
parent 97005589e4
commit 8edd010bec
2 changed files with 22 additions and 3 deletions

View File

@ -778,7 +778,7 @@ v4 todo:
null
(if (syntax->datum #'use-any?) #f (syntax->list #'(rng-names ...)))))])
(syntax-property
(syntax
(syntax/loc stx
(build--> '->
#f #f
(list dom-ctcs ...) '() #f
@ -915,7 +915,8 @@ v4 todo:
[(rng ...) (generate-temporaries (or rng-ctc '()))]
[(this-parameter ...)
(make-this-parameters (car (generate-temporaries '(this))))])
#`(build-->
(quasisyntax/loc stx
(build-->
'->*
#,(if pre #`(λ () #,pre) #'#f)
#,(if post #`(λ () #,post) #'#f)
@ -951,7 +952,7 @@ v4 todo:
(syntax->list #'(mandatory-dom-kwd-proj ...)))
(map list (syntax->list #'(optional-dom-kwd ...))
(syntax->list #'(optional-dom-kwd-proj ...)))
(if rng-ctc (syntax->list #'(rng-proj ...)) #f))))))))))]))
(if rng-ctc (syntax->list #'(rng-proj ...)) #f)))))))))))]))
(define-syntax (->* stx) #`(syntax-parameterize ((making-a-method #f)) #,(->*/proc/main stx)))

View File

@ -14852,6 +14852,24 @@ so that propagation occurs.
'make-proj-contract-4
'((contract proj:add1->sub1 sqrt 'pos 'neg) 'dummy))
;; errortrace test
(let ()
(define sp (open-input-string (format "~s\n" '(-> (λ (a b c) #f) any))))
(define stx (read-syntax 'whereitsat sp))
(define exn
(parameterize ([current-namespace (make-base-namespace)])
(namespace-require 'racket/contract)
(namespace-require 'errortrace)
(with-handlers ((exn:fail? values))
(eval stx))))
(define sp2 (open-output-string))
(parameterize ([current-error-port sp2])
((error-display-handler) (exn-message exn) exn))
(test #t
'checking-arrow-src-locs
(regexp-match? #rx"whereitsat" (get-output-string sp2))))
(report-errs)
))