
#11660: Remove Type pretty-printer in favor of IfaceType -------------------------------------+------------------------------------- Reporter: bgamari | Owner: Type: task | Status: patch Priority: high | Milestone: 8.2.1 Component: Compiler | Version: 7.10.3 Resolution: | Keywords: Operating System: Unknown/Multiple | Architecture: | Unknown/Multiple Type of failure: None/Unknown | Test Case: Blocked By: | Blocking: Related Tickets: #12550, #12447, | Differential Rev(s): Phab:D2528 #11786, #11549, #12024, #12697, | #12510 | Wiki Page: | -------------------------------------+------------------------------------- Comment (by bgamari): I've updated Phab:D2528 with the current state of my branch, which almost passes the testsuite. There 21 testsuite failures, nearly all of which are trivial changes in parentheses. In fact, I am quite tempted to accept the new output since it looks significantly more consistent than the previous output. However, there is one rather tricky testsuite failure that I'm a bit unsure how to handle. Namely, when we go to print an equality we look at the types involved to determine what operator to print. However, since we only have `IfaceType`s we can't see through type synonyms. This means that if we have an equality, {{{ (a :: GHC.Types.*) ~ (b :: GHC.Types.⋆) }}} we will render it as a heterogeneous equality (with a kind annotation on each operand) since the kinds look different (although in reality are synonyms). The solution for this that I am currently leaning towards is to represent equalities explicitly in `IfaceType` and ensure that they carry their "flavor" for pretty-printing purposes. **Failing tests**: `TEST="TypeSkolEscape T10632 T7939 T2431 ghci059 T7525 T7019a tcfail130 T9222 T8912 T8958 T12634 T2766 IPFail ContextStack2 T11252 ClassOperator tcfail041 tcrun045 tcfail211 T10858 T5837"` -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/11660#comment:17 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler