From a58010fd0ddb54ff8c8de5869b2c0f9a18eddaf3 Mon Sep 17 00:00:00 2001 From: Matthew Flatt Date: Fri, 9 Jan 2009 21:00:50 +0000 Subject: [PATCH] scheme/class: fix local member names to provide an better message on misuse, and to declare itself as an expression form svn: r13050 --- collects/scheme/private/classidmap.ss | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/collects/scheme/private/classidmap.ss b/collects/scheme/private/classidmap.ss index b88fb8b098..ba0d93e6eb 100644 --- a/collects/scheme/private/classidmap.ss +++ b/collects/scheme/private/classidmap.ss @@ -291,7 +291,14 @@ [else (reverse (cons args accum))]))) - (define-struct private-name (orig-id gen-id)) + (define-struct private-name (orig-id gen-id) + #:property prop:procedure (lambda (self stx) + (if (not (eq? (syntax-local-context) 'expression)) + #`(#%expression #,stx) + (raise-syntax-error + #f + "unbound local member name" + stx)))) (define (do-localize orig-id validate-local-member-stx) (let loop ([id orig-id])