Commit bfa5698b authored by Simon Peyton Jones's avatar Simon Peyton Jones Committed by Marge Bot

Fix a typo in Lint

This simple error in GHC.Core.Litn.lintJoinLams meant that
Lint reported bogus errors.

Fixes #18399
parent 15b79bef
Pipeline #21653 failed with stages
in 833 minutes and 9 seconds
......@@ -727,15 +727,15 @@ lintJoinLams :: JoinArity -> Maybe Id -> CoreExpr -> LintM (LintedType, UsageEnv
lintJoinLams join_arity enforce rhs
= go join_arity rhs
where
go 0 rhs = lintCoreExpr rhs
go n (Lam var expr) = lintLambda var $ go (n-1) expr
go 0 expr = lintCoreExpr expr
go n (Lam var body) = lintLambda var $ go (n-1) body
-- N.B. join points can be cast. e.g. we consider ((\x -> ...) `cast` ...)
-- to be a join point at join arity 1.
go n _other | Just bndr <- enforce -- Join point with too few RHS lambdas
= failWithL $ mkBadJoinArityMsg bndr join_arity n rhs
| otherwise -- Future join point, not yet eta-expanded
= markAllJoinsBad $ lintCoreExpr rhs
-- Body of lambda is not a tail position
go n expr | Just bndr <- enforce -- Join point with too few RHS lambdas
= failWithL $ mkBadJoinArityMsg bndr join_arity n rhs
| otherwise -- Future join point, not yet eta-expanded
= markAllJoinsBad $ lintCoreExpr expr
-- Body of lambda is not a tail position
lintIdUnfolding :: Id -> Type -> Unfolding -> LintM ()
lintIdUnfolding bndr bndr_ty uf
......
module Bug where
f :: p b d -> (a -> b) -> (c -> d) -> p a c -> p b d
{-# INLINE f #-}
f = const . const . const
......@@ -329,3 +329,4 @@ test('T18231', [ only_ways(['optasm']), grep_errmsg(r'^[\w\.]+ ::.*->.*') ], com
test('T17673', [ only_ways(['optasm']), grep_errmsg(r'^\w+\.\$wf') ], compile, ['-ddump-simpl -dsuppress-uniques -dppr-cols=9999'])
test('T18078', [ only_ways(['optasm']), grep_errmsg(r'^\w+\.\$wf') ], compile, ['-ddump-simpl -dsuppress-uniques -dppr-cols=9999'])
test('T18347', normal, compile, ['-dcore-lint -O'])
test('T18399', normal, compile, ['-dcore-lint -O'])
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment