From f899fdf15dc37cff55cf96b91fb5cc63f184b569 Mon Sep 17 00:00:00 2001 From: Mike Sperber Date: Fri, 21 May 2010 19:39:27 +0200 Subject: [PATCH] Report the correct position for a blamed procedure. ... if the `lambda' of that procedure was the result of expanding a `define': Attach the `define''s source location to the `lambda' expression. --- collects/lang/private/teach.rkt | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/collects/lang/private/teach.rkt b/collects/lang/private/teach.rkt index a615a58178..6460305f2f 100644 --- a/collects/lang/private/teach.rkt +++ b/collects/lang/private/teach.rkt @@ -541,13 +541,17 @@ (lambda (fn) (with-syntax ([fn fn] [args (cdr (syntax-e #'name-seq))]) - (quasisyntax/loc stx (define fn #,(stepper-syntax-property - (stepper-syntax-property - #`(lambda args expr ...) - 'stepper-define-type - 'shortened-proc-define) - 'stepper-proc-define-name - #`fn))))))]) + (quasisyntax/loc stx + (define fn + #,(stepper-syntax-property + (stepper-syntax-property + ;; this is so contract blame can report a + ;; position for the procedure + (syntax/loc stx (lambda args expr ...)) + 'stepper-define-type + 'shortened-proc-define) + 'stepper-proc-define-name + #`fn))))))]) (check-definition-new 'define stx