fix missing continuation call in mp-push-mvrs

original commit: d841744b26e4b4421fc4388b6943e558014e5e70
This commit is contained in:
Matthew Flatt 2020-01-20 09:26:46 -07:00
parent 345621fc91
commit 94fee207a1
2 changed files with 19 additions and 1 deletions

View File

@ -2069,6 +2069,24 @@
(lambda l (equal? l '((7)))))
#t
#f)
; regression test for handling mvcall with inline form
(equal?
'(result x)
(let ([bx (box #f)])
(define-record-type thing
(fields pos)
(nongenerative #{thing hlg584lmg5htbdauw7dkid2sh-0}))
(set-box! bx (make-thing 'x))
(let ([posx (unbox bx)])
(cons 'result
(call-with-values
(lambda ()
(if (thing? posx)
;; compiled as inline load:
(thing-pos posx)
(do-something-else)))
list)))))
)
(mat let-values

View File

@ -10434,7 +10434,7 @@
(let ([tmp (make-tmp 't)])
`(seq
(set! ,tmp ,rhs)
(mvcall ,(make-info-call-like info '()) #f ,consumer ,tmp ())))]
,(k `(mvcall ,(make-info-call-like info '()) #f ,consumer ,tmp ()))))]
[else ; set! & mvset
`(seq ,e ,(k `(mvcall ,(make-info-call-like info '()) #f ,consumer ,(%constant svoid) ())))]))))))
(CaseLambdaClause : CaseLambdaClause (ir) -> CaseLambdaClause ()