X-Git-Url: http://git.hcoop.net/bpt/guile.git/blobdiff_plain/579127cce488ce208d62e68e679e34fbbdc17367..26d148066f9cb20e395a7dc4fefdf2e2ef0b2fb0:/module/language/scheme/decompile-tree-il.scm diff --git a/module/language/scheme/decompile-tree-il.scm b/module/language/scheme/decompile-tree-il.scm index f94661da4..c065474b5 100644 --- a/module/language/scheme/decompile-tree-il.scm +++ b/module/language/scheme/decompile-tree-il.scm @@ -219,10 +219,12 @@ exp `(quote ,exp))) - (( exps) - (build-begin (map recurse exps))) + (( head tail) + (build-begin (cons (recurse head) + (build-begin-body + (recurse tail))))) - (( proc args) + (( proc args) (match `(,(recurse proc) ,@(map recurse args)) ((('lambda (formals ...) body ...) args ...) (=> failure) @@ -231,6 +233,9 @@ (failure))) (e e))) + (( name args) + `(,name ,@(map recurse args))) + (( name) name) @@ -658,7 +663,7 @@ (() (primitive 'if)) ; (if #f #f) (() (primitive 'quote)) - (( proc args) + (( proc args) (if (lexical-ref? proc) (let* ((gensym (lexical-ref-gensym proc)) (name (source-name gensym))) @@ -673,6 +678,7 @@ (for-each recurse args)) (( name) (primitive name)) + (( name args) (primitive name) (for-each recurse args)) (( gensym) (lexical gensym)) (( gensym exp) @@ -695,7 +701,9 @@ (primitive 'if) (recurse test) (recurse consequent) (recurse alternate)) - (( exps) (primitive 'begin) (for-each recurse exps)) + (( head tail) + (primitive 'begin) (recurse head) (recurse tail)) + (( body) (if body (recurse body)))