From a7bc964c6909d32d31694ffc62f4e0e65af59205 Mon Sep 17 00:00:00 2001 From: Matthew Flatt Date: Thu, 19 Aug 2010 07:09:34 -0600 Subject: [PATCH] fix problem with binding of *SL struct-type name and application --- collects/lang/private/teach.rkt | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/collects/lang/private/teach.rkt b/collects/lang/private/teach.rkt index 877e4ae80a..095d92222a 100644 --- a/collects/lang/private/teach.rkt +++ b/collects/lang/private/teach.rkt @@ -771,7 +771,7 @@ (let-values ([(struct: constructor-name predicate-name getter-names setter-names) (make-struct-names name fields stx)] [(field-count) (length fields)] - [(signature-name) (gensym (syntax->datum name))] + [(signature-name) (car (generate-temporaries (list name)))] [(parametric-signature-name) (datum->syntax name (string->symbol @@ -907,9 +907,18 @@ #:super struct:struct-info ;; support `signature' #:property - prop:procedure - (lambda (_ stx) - #'#,signature-name)) + prop:procedure + (lambda (_ stx) + (syntax-case stx () + [(self . args) + (raise-syntax-error + #f + (string-append + "cannot use a signature name after an" + " open parenthesis for a function call") + stx + #'self)] + [_ #'#,signature-name]))) ;; support `shared' (make-info (lambda () compile-info)))) 'stepper-skip-completely