Merge remote-tracking branch 'origin/stable-2.0'
[bpt/guile.git] / module / language / scheme / decompile-tree-il.scm
index f94661d..c065474 100644 (file)
              exp
              `(quote ,exp)))
 
-        ((<sequence> exps)
-         (build-begin (map recurse exps)))
+        ((<seq> head tail)
+         (build-begin (cons (recurse head)
+                            (build-begin-body
+                             (recurse tail)))))
 
-        ((<application> proc args)
+        ((<call> proc args)
          (match `(,(recurse proc) ,@(map recurse args))
            ((('lambda (formals ...) body ...) args ...)
             (=> failure)
                 (failure)))
            (e e)))
 
+        ((<primcall> name args)
+         `(,name ,@(map recurse args)))
+
         ((<primitive-ref> name)
          name)
 
             ((<void>)  (primitive 'if)) ; (if #f #f)
             ((<const>) (primitive 'quote))
 
-            ((<application> proc args)
+            ((<call> proc args)
              (if (lexical-ref? proc)
                  (let* ((gensym (lexical-ref-gensym proc))
                         (name (source-name gensym)))
              (for-each recurse args))
 
             ((<primitive-ref> name) (primitive name))
+            ((<primcall> name args) (primitive name) (for-each recurse args))
 
             ((<lexical-ref> gensym) (lexical gensym))
             ((<lexical-set> gensym exp)
              (primitive 'if)
              (recurse test) (recurse consequent) (recurse alternate))
 
-            ((<sequence> exps) (primitive 'begin) (for-each recurse exps))
+            ((<seq> head tail)
+             (primitive 'begin) (recurse head) (recurse tail))
+
             ((<lambda> body)
              (if body (recurse body)))