fix syntax-local-lift-values-expression
When lifts are captured as `let`, make sure the variable bindings aren't reversed.
This commit is contained in:
parent
a229640251
commit
62b8f7aaa3
|
@ -1642,6 +1642,29 @@
|
|||
|
||||
(m (check) (check2)))
|
||||
|
||||
|
||||
;; ----------------------------------------
|
||||
;; Check that `syntax-local-lift-values-expression` works rigth when lifts
|
||||
;; are converted to `let`; in particular, make sure the order is
|
||||
;; right
|
||||
|
||||
(module uses-local-lift-values-at-expansion-time racket/base
|
||||
(require (for-syntax racket/base))
|
||||
(begin-for-syntax
|
||||
(require (for-syntax racket/base))
|
||||
|
||||
(define-syntax (m stx)
|
||||
#`(values #,@(syntax-local-lift-values-expression 3 #'(values 1 2 3)))))
|
||||
|
||||
(define-syntax (n stx)
|
||||
(define-values (a b c) (m))
|
||||
#`(list #,a #,b #,c))
|
||||
|
||||
(provide l)
|
||||
(define l (n)))
|
||||
|
||||
(test '(1 2 3) dynamic-require ''uses-local-lift-values-at-expansion-time 'l)
|
||||
|
||||
;; ----------------------------------------
|
||||
|
||||
(report-errs)
|
||||
|
|
|
@ -978,7 +978,7 @@ void scheme_set_compilation_variables(Scheme_Comp_Env *frame, Scheme_IR_Local **
|
|||
|
||||
for (i = 0; i < count; i++) {
|
||||
MZ_ASSERT(!frame->vars[i+pos]);
|
||||
frame->vars[i+pos] = vars[i];
|
||||
frame->vars[i+pos] = vars[count - i - 1];
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue
Block a user