summaryrefslogtreecommitdiff
path: root/module/language/cps/utils.scm
diff options
context:
space:
mode:
Diffstat (limited to 'module/language/cps/utils.scm')
-rw-r--r--module/language/cps/utils.scm13
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))