Introduce and use DerivClauseTys (#18662)
This switches deriv_clause_tys
so that instead of using a list of
LHsSigType
s to represent the types in a deriving
clause, it now
uses a sum type. DctSingle
represents a deriving
clause with no
enclosing parentheses, while DctMulti
represents a clause with
enclosing parentheses. This makes pretty-printing easier and avoids
confusion between HsParTy
and the enclosing parentheses in
deriving
clauses, which are different semantically.
Fixes #18662 (closed).