Handle all-expression cases explicitly rather than implicitly.
svn: r9183
This commit is contained in:
parent
b800f4ed3e
commit
7f974d7383
|
@ -52,7 +52,6 @@
|
||||||
(list #'id)
|
(list #'id)
|
||||||
null)]
|
null)]
|
||||||
[(#%top . id) null]
|
[(#%top . id) null]
|
||||||
[(#%expression e) (free-vars #'e)]
|
|
||||||
[(quote q) null]
|
[(quote q) null]
|
||||||
[(quote-syntax q) null]
|
[(quote-syntax q) null]
|
||||||
[(#%plain-lambda formals expr ...)
|
[(#%plain-lambda formals expr ...)
|
||||||
|
@ -71,7 +70,11 @@
|
||||||
(free-vars #'(#%plain-lambda (id ... ...) rhs ... expr ...))]
|
(free-vars #'(#%plain-lambda (id ... ...) rhs ... expr ...))]
|
||||||
[(letrec-syntaxes+values stx-bindings ([(id ...) rhs] ...) expr ...)
|
[(letrec-syntaxes+values stx-bindings ([(id ...) rhs] ...) expr ...)
|
||||||
(free-vars #'(#%plain-lambda (id ... ...) rhs ... expr ...))]
|
(free-vars #'(#%plain-lambda (id ... ...) rhs ... expr ...))]
|
||||||
[(_ expr ...)
|
[(kw expr ...)
|
||||||
;; if, begin, begin0, set!, #%app, #%variable-reference, with-continuation-mark
|
(ormap (lambda (k) (free-identifier=? k #'kw))
|
||||||
(merge (map free-vars (syntax->list #'(expr ...))))]))
|
(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))]))
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user