Skip to content

Commit

Permalink
cs: fix prop:chaperone-unsafe-undefined-triggered error
Browse files Browse the repository at this point in the history
  • Loading branch information
mflatt committed Jan 14, 2019
1 parent 9b2431e commit 0602c7e
Show file tree
Hide file tree
Showing 2 changed files with 4 additions and 3 deletions.
2 changes: 1 addition & 1 deletion pkgs/racket-test-core/tests/racket/object.rktl
Expand Up @@ -1939,7 +1939,7 @@
(define q 1)
(field [s 1])
(super-new)))

(err/rt-test (new d%) (make-undefined-exn? 'z))
(err/rt-test (new d!%) (make-undefined-exn? 'z))
(err/rt-test (new e%) (make-undefined-exn? 'z))
Expand Down
5 changes: 3 additions & 2 deletions racket/src/cs/rumble/impersonator.ss
Expand Up @@ -56,7 +56,8 @@
rtd)
(let ([r (loop (impersonator-next v))])
(when (eq? r unsafe-undefined)
(raise-unsafe-undefined 'struct-ref "undefined" "use" acc (impersonator-val v) (cdr key)))
(let ([abs-pos (fx+ (cdr key) (struct-type-parent-total*-count (car key)))])
(raise-unsafe-undefined 'struct-ref "undefined" "use" acc (impersonator-val v) abs-pos)))
r)]
[(impersonator? v)
(loop (impersonator-next v))]
Expand Down Expand Up @@ -95,7 +96,7 @@
(when (eq? (unsafe-struct*-ref (impersonator-val v) abs-pos) unsafe-undefined)
(unless (eq? (continuation-mark-set-first #f prop:chaperone-unsafe-undefined)
unsafe-undefined)
(raise-unsafe-undefined 'struct-set! "assignment disallowed" "assign" set (impersonator-val v) pos)))
(raise-unsafe-undefined 'struct-set! "assignment disallowed" "assign" set (impersonator-val v) abs-pos)))
(loop (impersonator-next v) a)]
[(impersonator? v)
(loop (impersonator-next v) a)]
Expand Down

0 comments on commit 0602c7e

Please sign in to comment.