diff options
Diffstat (limited to 'compiler/GHC/Tc/Solver/Flatten.hs')
-rw-r--r-- | compiler/GHC/Tc/Solver/Flatten.hs | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/compiler/GHC/Tc/Solver/Flatten.hs b/compiler/GHC/Tc/Solver/Flatten.hs index dd214ceb7c..48b9c55588 100644 --- a/compiler/GHC/Tc/Solver/Flatten.hs +++ b/compiler/GHC/Tc/Solver/Flatten.hs @@ -1206,9 +1206,11 @@ flatten_one ty@(ForAllTy {}) flatten_one (CastTy ty g) = do { (xi, co) <- flatten_one ty ; (g', _) <- flatten_co g - ; role <- getRole - ; return (mkCastTy xi g', castCoercionKind co role xi ty g' g) } + ; return (mkCastTy xi g', castCoercionKind1 co role xi ty g') } + -- It makes a /big/ difference to call castCoercionKind1 not + -- the more general castCoercionKind2. + -- See Note [castCoercionKind1] in GHC.Core.Coercion flatten_one (CoercionTy co) = first mkCoercionTy <$> flatten_co co |