From d2aa4f610baf7812e7ae28b6d0a68506cd17fdf8 Mon Sep 17 00:00:00 2001 From: Matthew Flatt Date: Thu, 27 Dec 2007 16:49:27 +0000 Subject: [PATCH] re-fix error when keywords missing in app; fix defn to allow non-keyword args withotu default after keyword args svn: r8140 --- collects/scheme/private/kw.ss | 8 ++++++-- collects/scheme/private/norm-define.ss | 4 ++-- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/collects/scheme/private/kw.ss b/collects/scheme/private/kw.ss index 6c89100a7b..6c79e0336d 100644 --- a/collects/scheme/private/kw.ss +++ b/collects/scheme/private/kw.ss @@ -338,7 +338,11 @@ #'rest)] [rest-empty (if (null? (syntax-e #'rest)) '() - '(null))]) + '(null))] + [fail-rest (if (null? (syntax-e #'rest)) + '(null) + #'rest)]) + (let ([with-core (lambda (result) ;; body of procedure, where all keyword and optional @@ -402,7 +406,7 @@ ;; struct-type entry point for no keywords when a keyword is required (syntax/loc stx (fail-opt-cases (missing-kw) (opt-id ...) (self plain-id ...) - () (rest-id . rest) + () (rest-id . fail-rest) ())))]) (cond [(null? kws) diff --git a/collects/scheme/private/norm-define.ss b/collects/scheme/private/norm-define.ss index b75ffbbf14..20af4ab5d9 100644 --- a/collects/scheme/private/norm-define.ss +++ b/collects/scheme/private/norm-define.ss @@ -89,13 +89,13 @@ (identifier? #'id)) (begin (check-kw #'kw) - (cons #'id (loop #'more #t)))] + (cons #'id (loop #'more need-def?)))] [(kw [id def-expr] . more) (and (keyword? (syntax-e #'kw)) (identifier? #'id)) (begin (check-kw #'kw) - (cons #'id (loop #'more #t)))] + (cons #'id (loop #'more need-def?)))] [(kw . more) (keyword? (syntax-e #'kw)) (raise-syntax-error #f