diff --git a/pkgs/racket-test-core/tests/racket/optimize.rktl b/pkgs/racket-test-core/tests/racket/optimize.rktl index 78598470b1..0ab09e1c0b 100644 --- a/pkgs/racket-test-core/tests/racket/optimize.rktl +++ b/pkgs/racket-test-core/tests/racket/optimize.rktl @@ -3198,6 +3198,26 @@ (hash-ref '#hash((x . y)) x add1)) #f) +(test-comp '(lambda () + (hash-ref #hash() + 'missing + (λ () + 'UNEXPECTED!))) + '(lambda () + (hash-ref #hash() + 'missing + 'UNEXPECTED!))) +(test-comp '(lambda () + (hash-ref #hash() + 'missing + (λ (required-arg) + 'UNEXPECTED!))) + '(lambda () + (hash-ref #hash() + 'missing + 'UNEXPECTED!)) + #f) + ;; Check elimination of ignored structure predicate ;; and constructor applications: diff --git a/racket/src/racket/src/optimize.c b/racket/src/racket/src/optimize.c index 2068196657..c151ff5303 100644 --- a/racket/src/racket/src/optimize.c +++ b/racket/src/racket/src/optimize.c @@ -3812,6 +3812,7 @@ static Scheme_Object *optimize_application(Scheme_Object *o, Optimize_Info *info && SAME_OBJ(scheme_hash_ref_proc, app->args[0]) && SCHEME_HASHTRP(app->args[1]) && SAME_TYPE(scheme_ir_lambda_type, SCHEME_TYPE(app->args[3])) + && (((Scheme_Lambda *)(app->args[3]))->num_params == 0) && (SCHEME_TYPE(((Scheme_Lambda *)app->args[3])->body) > _scheme_ir_values_types_) && !SCHEME_PROCP(((Scheme_Lambda *)app->args[3])->body)) { app->args[3] = ((Scheme_Lambda *)app->args[3])->body;