From 9c8b9eb0ba24beb1c4cc0ca363787cf5c1da3037 Mon Sep 17 00:00:00 2001 From: Matthew Flatt Date: Tue, 18 Sep 2007 16:52:23 +0000 Subject: [PATCH] change beginner-cond error to highlight individual cond-clause elements when the wrong number are present svn: r7380 --- collects/lang/private/teach.ss | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/collects/lang/private/teach.ss b/collects/lang/private/teach.ss index ce817a1d2a..b194dddd7e 100644 --- a/collects/lang/private/teach.ss +++ b/collects/lang/private/teach.ss @@ -183,6 +183,16 @@ (if detail (raise-syntax-error form msg stx detail) (raise-syntax-error form msg stx)))) + + (define (teach-syntax-error* form stx details msg . args) + (let ([exn (with-handlers ([exn:fail:syntax? + (lambda (x) x)]) + (apply teach-syntax-error form stx #f msg args))]) + (raise + (make-exn:fail:syntax + (exn-message exn) + (exn-continuation-marks exn) + (apply list-immutable details))))) (define (binding-in-this-module? b) (and (list? b) @@ -985,10 +995,10 @@ (unless (null? (cdr parts)) (local-expand-for-error (cadr parts) 'expression null)) ;; question and answer (if any) are ok, raise a count-based exception: - (teach-syntax-error + (teach-syntax-error* 'cond stx - clause + parts "expected a clause with one question and one answer, but found a clause with ~a parts" (length parts)))] [_else