pre-resolve is-mutated flag was mixed up with post-resolve is-initialized flag

svn: r3974
This commit is contained in:
Matthew Flatt 2006-08-05 18:20:20 +00:00
parent 2211493242
commit 3d390e301e
2 changed files with 18 additions and 1 deletions

View File

@ -402,6 +402,13 @@
(f y))
'11)
(test-comp '(module m mzscheme
(define (f x) (+ x 1))
(f 8))
'(module m mzscheme
(define (f x) (+ x 1))
9))
;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Check bytecode verification of lifted functions
@ -429,4 +436,14 @@
;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Make sure "mutated?" flag isn't confused with "ready" flag:
(module bad-order mzscheme
(define (f) (printf "~a\n" i))
(f)
(define i 9)
(set! i 10))
(err/rt-test (dynamic-require 'bad-order #f))
;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(report-errs)

View File

@ -3220,7 +3220,7 @@ Scheme_Object *scheme_resolve_toplevel(Resolve_Info *info, Scheme_Object *expr)
return make_toplevel(skip + SCHEME_TOPLEVEL_DEPTH(expr), /* depth is 0 (normal) or 1 (exp-time) */
SCHEME_TOPLEVEL_POS(expr),
1,
SCHEME_TOPLEVEL_FLAGS(expr) & SCHEME_TOPLEVEL_FLAGS_MASK);
SCHEME_TOPLEVEL_FLAGS(expr) & SCHEME_TOPLEVEL_CONST);
}
Scheme_Object *scheme_shift_toplevel(Scheme_Object *expr, int delta)