Incorporate changes from master
authorMatthías Páll Gissurarson <pallm@chalmers.se>
Fri, 31 May 2019 17:18:03 +0000 (19:18 +0200)
committerMatthías Páll Gissurarson <pallm@chalmers.se>
Fri, 31 May 2019 17:18:03 +0000 (19:18 +0200)
compiler/typecheck/TcHoleErrors.hs

index ea1e29b..a0e5031 100644 (file)
@@ -467,21 +467,30 @@ pprHoleFit _ (RawHoleFit sd) = sd
 pprHoleFit (HFDC sWrp sWrpVars sTy sProv sMs) (HoleFit {..}) =
  hang display 2 provenance
  where name =  getName hfCand
-       tyApp = sep $ map ((text "@" <>) . pprParendType) hfWrap
+       tyApp = sep $ zipWithEqual "pprHoleFit" pprArg vars hfWrap
+         where pprArg b arg = case binderArgFlag b of
+                                Specified -> text "@" <> pprParendType arg
+                                -- Do not print type application for inferred
+                                -- variables (#16456)
+                                Inferred  -> empty
+                                Required  -> pprPanic "pprHoleFit: bad Required"
+                                                         (ppr b <+> ppr arg)
        tyAppVars = sep $ punctuate comma $
-           map (\(v,t) -> ppr v <+> text "~" <+> pprParendType t) $
-             zip vars hfWrap
+           zipWithEqual "pprHoleFit" (\v t -> ppr (binderVar v) <+>
+                                               text "~" <+> pprParendType t)
+           vars hfWrap
+
+       vars = unwrapTypeVars hfType
          where
-           vars = unwrapTypeVars hfType
            -- Attempts to get all the quantified type variables in a type,
            -- e.g.
-           -- return :: forall (m :: * -> *) Monad m => (forall a . a) -> m a
+           -- return :: forall (m :: * -> *) Monad m => (forall a . a -> m a)
            -- into [m, a]
-           unwrapTypeVars :: Type -> [TyVar]
+           unwrapTypeVars :: Type -> [TyCoVarBinder]
            unwrapTypeVars t = vars ++ case splitFunTy_maybe unforalled of
                                Just (_, unfunned) -> unwrapTypeVars unfunned
                                _ -> []
-             where (vars, unforalled) = splitForAllTys t
+             where (vars, unforalled) = splitForAllVarBndrs t
        holeVs = sep $ map (parens . (text "_" <+> dcolon <+>) . ppr) hfMatches
        holeDisp = if sMs then holeVs
                   else sep $ replicate (length hfMatches) $ text "_"