diff --git a/sugar/unstable/js.rkt b/sugar/unstable/js.rkt index e9d86a1..cd39409 100644 --- a/sugar/unstable/js.rkt +++ b/sugar/unstable/js.rkt @@ -1,5 +1,8 @@ #lang racket/base -(require racket/class (for-syntax racket/base racket/syntax) racket/dict) +(require (for-syntax racket/base racket/syntax) + racket/class + racket/promise + racket/dict) (provide (all-defined-out)) @@ -44,7 +47,7 @@ (define ·-helper (procedure-rename (λ (x . refs) - (for/fold ([x x]) + (for/fold ([x (force x)]) ([ref (in-list refs)] #:break (not x)) (cond @@ -55,7 +58,7 @@ [(dict? x) (dict-ref x ref #f)] [(object? x) (cond [(memq ref (field-names x)) (dynamic-get-field ref x)] - [else #f])] + [else #f])] [else (raise-argument-error '· "object or dict" x)]))) '·)) (define-syntax-rule (· X REF ...) (·-helper X 'REF ...)) @@ -83,7 +86,7 @@ (field [foo 'field]) (define/public (bar) 'method) (define/public (zam) (hasheq 'zoom 'hash)))) - (define h (hasheq 'bam (new C) 'foo 'hashlet)) + (define h (delay (hasheq 'bam (new C) 'foo 'hashlet))) (define o (new C)) (check-equal? (· o foo) 'field) (check-equal? (· o bar) 'method)