From 7f974d73837bbe8aa0304590285c79b798cb5338 Mon Sep 17 00:00:00 2001 From: Sam Tobin-Hochstadt Date: Mon, 7 Apr 2008 21:19:25 +0000 Subject: [PATCH] Handle all-expression cases explicitly rather than implicitly. svn: r9183 --- collects/syntax/free-vars.ss | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/collects/syntax/free-vars.ss b/collects/syntax/free-vars.ss index 1c79024e1a..3daf616475 100644 --- a/collects/syntax/free-vars.ss +++ b/collects/syntax/free-vars.ss @@ -52,7 +52,6 @@ (list #'id) null)] [(#%top . id) null] - [(#%expression e) (free-vars #'e)] [(quote q) null] [(quote-syntax q) null] [(#%plain-lambda formals expr ...) @@ -71,7 +70,11 @@ (free-vars #'(#%plain-lambda (id ... ...) rhs ... expr ...))] [(letrec-syntaxes+values stx-bindings ([(id ...) rhs] ...) expr ...) (free-vars #'(#%plain-lambda (id ... ...) rhs ... expr ...))] - [(_ expr ...) - ;; if, begin, begin0, set!, #%app, #%variable-reference, with-continuation-mark - (merge (map free-vars (syntax->list #'(expr ...))))])) + [(kw expr ...) + (ormap (lambda (k) (free-identifier=? k #'kw)) + (list #'if #'begin #'begin0 #'set! #'#%plain-app #'#%expression + #'#%variable-reference #'with-continuation-mark)) + (merge (map free-vars (syntax->list #'(expr ...))))] + [(kw . _) + (error 'free-vars "unknown core form: ~a" (syntax->datum #'kw))]))