Add $branch expression type
[bpt/guile.git] / module / language / cps / closure-conversion.scm
index 26737e9..89e2090 100644 (file)
         (($ $primcall name args)
          (for-each clear-well-known! args)
          (fold adjoin '() args))
+        (($ $branch kt exp)
+         (visit-exp exp bound))
         (($ $values args)
          (for-each clear-well-known! args)
          (fold adjoin '() args))
@@ -498,6 +500,20 @@ bound to @var{var}, and continue with @var{body}."
                               (build-cps-term
                                 ($continue k src ($primcall name args))))))
 
+        (($ $continue k src ($ $branch kt ($ $primcall name args)))
+         (convert-free-vars args
+                            (lambda (args)
+                              (build-cps-term
+                                ($continue k src
+                                  ($branch kt ($primcall name args)))))))
+
+        (($ $continue k src ($ $branch kt ($ $values (arg))))
+         (convert-free-var arg
+                           (lambda (arg)
+                             (build-cps-term
+                               ($continue k src
+                                 ($branch kt ($values (arg))))))))
+
         (($ $continue k src ($ $values args))
          (convert-free-vars args
                             (lambda (args)