diff options
author | Simon Peyton Jones <simonpj@microsoft.com> | 2021-11-09 13:49:56 +0000 |
---|---|---|
committer | Marge Bot <ben+marge-bot@smart-cactus.org> | 2021-11-12 21:23:15 -0500 |
commit | 43cab5f752b6dcbeda5caa76861089539f54ef54 (patch) | |
tree | f8ac08b5d5cd35329ba6332c9280c95375149b40 /compiler/GHC/Core/Opt/Simplify.hs | |
parent | 4143bd21bbef16022628a4260d77a945523ce4b8 (diff) | |
download | haskell-43cab5f752b6dcbeda5caa76861089539f54ef54.tar.gz |
Get the in-scope set right in simplArg
This was a simple (but long standing) error in simplArg,
revealed by #20639
Diffstat (limited to 'compiler/GHC/Core/Opt/Simplify.hs')
-rw-r--r-- | compiler/GHC/Core/Opt/Simplify.hs | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/compiler/GHC/Core/Opt/Simplify.hs b/compiler/GHC/Core/Opt/Simplify.hs index 407f84a6c5..8ce2eb857a 100644 --- a/compiler/GHC/Core/Opt/Simplify.hs +++ b/compiler/GHC/Core/Opt/Simplify.hs @@ -1584,8 +1584,11 @@ simplArg env dup_flag arg_env arg | isSimplified dup_flag = return (dup_flag, arg_env, arg) | otherwise - = do { arg' <- simplExpr (arg_env `setInScopeFromE` env) arg - ; return (Simplified, zapSubstEnv arg_env, arg') } + = do { let arg_env' = arg_env `setInScopeFromE` env + ; arg' <- simplExpr arg_env' arg + ; return (Simplified, zapSubstEnv arg_env', arg') } + -- Return a StaticEnv that includes the in-scope set from 'env', + -- because arg' may well mention those variables (#20639) {- ************************************************************************ |