;;; Continuation-passing style (CPS) intermediate language (IL)
-;; Copyright (C) 2013, 2014 Free Software Foundation, Inc.
+;; Copyright (C) 2013, 2014, 2015 Free Software Foundation, Inc.
;;;; This library is free software; you can redistribute it and/or
;;;; modify it under the terms of the GNU Lesser General Public
(define (visit-cont-body cont k-env v-env)
(match cont
- (($ $kif kt kf)
- (check-label kt k-env)
- (check-label kf k-env))
(($ $kreceive ($ $arity ((? symbol?) ...) () (or #f (? symbol?)) () #f) k)
(check-label k k-env))
(($ $kargs (name ...) (sym ...) body)
(match fun
(($ $fun (free ...) entry)
(for-each (cut check-var <> v-env) free)
- (visit-entry '() v-env))
+ (visit-entry entry '() v-env))
(_
(error "unexpected $fun" fun))))
(define (visit-expression exp k-env v-env)
(match exp
- (($ $void)
- #t)
(($ $const val)
#t)
(($ $prim (? symbol? name))
;; the reference.
(check-var proc v-env)
(for-each (cut check-var <> v-env) arg))
+ (($ $branch kt ($ $primcall (? symbol? name) (arg ...)))
+ (check-var kt k-env)
+ (for-each (cut check-var <> v-env) arg))
+ (($ $branch kt ($ $values (arg ...)))
+ (check-var kt k-env)
+ (for-each (cut check-var <> v-env) arg))
(($ $primcall (? symbol? name) (arg ...))
(for-each (cut check-var <> v-env) arg))
(($ $values (arg ...))