Add some commentary re: fix to #11203
authorRichard Eisenberg <rae@cs.brynmawr.edu>
Fri, 15 Dec 2017 19:27:47 +0000 (14:27 -0500)
committerRichard Eisenberg <rae@cs.brynmawr.edu>
Fri, 15 Dec 2017 19:27:47 +0000 (14:27 -0500)
The fix for #11203 prohibits duplicate SigTvs in non-CUSK kind
signatures by checking for duplicates after type inference is
done. This works well. GHC also checks for duplicate SigTvs
after working with partial type signatures (another place where
SigTvs arise). However, neither fix eliminates this whole class
of problems (because doing so would be heavier than we would
like). So, this comment adds a warning to users of newSigTyVar
to be aware of problems with duplicates.

compiler/typecheck/TcMType.hs

index 7f2f92a..3d45129 100644 (file)
@@ -583,6 +583,13 @@ instead of the buggous
 ************************************************************************
 -}
 
+-- a SigTv can unify with type *variables* only, including other SigTvs
+-- and skolems. Sometimes, they can unify with type variables that the
+-- user would rather keep distinct; see #11203 for an example.
+-- So, any client of this
+-- function needs to either allow the SigTvs to unify with each other
+-- (say, for pattern-bound scoped type variables), or check that they
+-- don't (say, with a call to findDubSigTvs).
 newSigTyVar :: Name -> Kind -> TcM TcTyVar
 newSigTyVar name kind
   = do { details <- newMetaDetails SigTv