
#14419: Check kinds for ambiguity -------------------------------------+------------------------------------- Reporter: goldfire | Owner: (none) Type: bug | Status: new Priority: normal | Milestone: Component: Compiler | Version: 8.2.1 Resolution: | Keywords: TypeInType Operating System: Unknown/Multiple | Architecture: | Unknown/Multiple Type of failure: None/Unknown | Test Case: Blocked By: | Blocking: Related Tickets: | Differential Rev(s): Wiki Page: | -------------------------------------+------------------------------------- Comment (by RyanGlScott): Simon, is this the one-line change you had in mind? {{{#!diff diff --git a/compiler/typecheck/Inst.hs b/compiler/typecheck/Inst.hs index 7b27dfa..30023b9 100644 --- a/compiler/typecheck/Inst.hs +++ b/compiler/typecheck/Inst.hs @@ -227,7 +227,7 @@ top_instantiate inst_all orig ty (theta, rho) = tcSplitPhiTy phi should_inst bndr - | inst_all = True + | inst_all = binderArgFlag bndr /= Required | otherwise = binderArgFlag bndr == Inferred deeplyInstantiate :: CtOrigin -> TcSigmaType -> TcM (HsWrapper, TcRhoType) }}} Unfortunately, that causes `tc_sub_type_ds` to loop on `type family T2` from comment:4. The `-ddump-tc-trace` output loops on: {{{ tc_sub_type_ds ty_actual = forall (x :: a_a1zH[tau:1]) -> F x ty_expected = F x_a1zG[sk:1] Instantiating all tyvars? True origin arising from a type equality forall a. forall (x :: a) -> F x ~ forall a. forall (x :: a) -> F x type forall x_a1za. F x_a1za theta [] leave_bndrs [x_a1za] with theta: [] tc_sub_type_ds ty_actual = forall (x :: a_a1zH[tau:1]) -> F x ty_expected = F x_a1zG[sk:1] ... }}} -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/14419#comment:7 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler