MkSolo and MkSolo# are mistakenly classified as BuiltInSyntax
In GHC.Builtin.Types.mk_tuple
you will find these lines:
tc_name = mkWiredInName modu (mkTupleOcc tcName boxity arity) tc_uniq
(ATyCon tycon) UserSyntax
dc_name = mkWiredInName modu (mkTupleOcc dataName boxity arity) dc_uniq
(AConLike (RealDataCon tuple_con)) BuiltInSyntax
That is, the type constructors (Unit
, Solo
, Tuple2
, Tuple3
, Tuple4
, etc) are classified UserSyntax
, while the data constructors (()
, MkSolo
, (,)
, (,,)
, (,,,)
) are classified as BuiltInSyntax
.
This is incorrect: MkSolo
stands out among other data constructors and it should be marked UserSyntax
. MkSolo
is a name that can be imported/exported, and it is not always in scope.
I don't believe this results in any significant issues aside from pretty-printing oddities here and there, but let's use the correct classification.