From 5fb1c730ba6c99c36b49202fc25d370595b7cab4 Mon Sep 17 00:00:00 2001 From: Robby Findler Date: Tue, 10 Aug 2010 16:00:51 -0500 Subject: [PATCH] improved error message in the case where ->i is used as an identifier --- .../racket/contract/private/arr-i-parse.rkt | 28 ++++++++++--------- 1 file changed, 15 insertions(+), 13 deletions(-) diff --git a/collects/racket/contract/private/arr-i-parse.rkt b/collects/racket/contract/private/arr-i-parse.rkt index 3af491c873..6c916f4b7e 100644 --- a/collects/racket/contract/private/arr-i-parse.rkt +++ b/collects/racket/contract/private/arr-i-parse.rkt @@ -49,19 +49,21 @@ code does the parsing and validation of the syntax. (struct pre/post (vars exp)) (define (parse-->i stx) - (let-values ([(raw-mandatory-doms raw-optional-doms - id/rest-id pre-cond range post-cond) - (pull-out-pieces stx)]) - (let ([candidate - (istx (append (parse-doms stx #f raw-mandatory-doms) - (parse-doms stx #t raw-optional-doms)) - id/rest-id - pre-cond - (parse-range stx range) - post-cond)]) - (ensure-wf-names stx candidate) - (ensure-no-cycles stx candidate) - candidate))) + (if (identifier? stx) + (raise-syntax-error #f "expected ->i to follow an open parenthesis" stx) + (let-values ([(raw-mandatory-doms raw-optional-doms + id/rest-id pre-cond range post-cond) + (pull-out-pieces stx)]) + (let ([candidate + (istx (append (parse-doms stx #f raw-mandatory-doms) + (parse-doms stx #t raw-optional-doms)) + id/rest-id + pre-cond + (parse-range stx range) + post-cond)]) + (ensure-wf-names stx candidate) + (ensure-no-cycles stx candidate) + candidate)))) (define (ensure-wf-names stx istx) (let ([km (make-hash)]