Abstraction leak: HsRecTy and HsBangTy
HsRecTy andn HsBangTy are intermediate forms that occur during parsing. They are only valid when declaring data constructor fields, never inside an ordinary type.
So these constructs do not belong in HsType. Their current inclusion in HsType is an abstraction leak, as it was just convenient to put them there for parsing purposes.
This ticket is to track their removal and replacement.