diff options
Diffstat (limited to 'module/language/cps/utils.scm')
-rw-r--r-- | module/language/cps/utils.scm | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/module/language/cps/utils.scm b/module/language/cps/utils.scm index 8f36e4d53..2b0c91c4b 100644 --- a/module/language/cps/utils.scm +++ b/module/language/cps/utils.scm @@ -429,12 +429,15 @@ by a label, respectively." (($ $kargs _ _ (or ($ $branch) ($ $switch) ($ $prompt) ($ $throw))) representations) (($ $kfun src meta self tail entry) - (let ((representations (if self + (let* ((representations (if self (intmap-add representations self 'scm) - representations))) - (fold1 (lambda (var representations) - (intmap-add representations var 'scm)) - (get-defs entry) representations))) + representations)) + (defs (get-defs entry)) + (reprs (or (assq-ref meta 'arg-representations) + (map (lambda (_) 'scm) defs)))) + (fold (lambda (var repr representations) + (intmap-add representations var repr)) + representations defs reprs))) (($ $kclause arity body alt) (fold1 (lambda (var representations) (intmap-add representations var 'scm)) |