diff --git a/pkgs/racket-pkgs/racket-test/tests/racket/optimize.rktl b/pkgs/racket-pkgs/racket-test/tests/racket/optimize.rktl index 421ab92462..bd7ddbb5bb 100644 --- a/pkgs/racket-pkgs/racket-test/tests/racket/optimize.rktl +++ b/pkgs/racket-pkgs/racket-test/tests/racket/optimize.rktl @@ -3375,6 +3375,20 @@ (call-with-continuation-prompt g p) (call-with-continuation-prompt g p))) +;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; Make sure the compiler isn't confused by +;; throwaway internal-definition expansion: + +(test #t procedure? + (eval '(lambda (db) + (if #f + (let () + (define matches + (let loop () + (define s db) + null)) + 5) + (void))))) ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; diff --git a/racket/src/racket/src/compenv.c b/racket/src/racket/src/compenv.c index 750f78581f..ac9493145b 100644 --- a/racket/src/racket/src/compenv.c +++ b/racket/src/racket/src/compenv.c @@ -1777,7 +1777,7 @@ scheme_lookup_binding(Scheme_Object *find_id, Scheme_Comp_Env *env, int flags, *_lexical_binding_id = val; } if (flags & SCHEME_DONT_MARK_USE) - return scheme_make_local(scheme_local_type, 0, 0); + return scheme_make_local(scheme_local_type, p+i, 0); else return (Scheme_Object *)get_frame_loc(frame, i, j, p, flags); }