Commit 08ea4e6d authored by simonpj@microsoft.com's avatar simonpj@microsoft.com

Fix zonking in mkExports

I'd missed zonk, so that an error message for missing type signature
read (unhelpfully)

  main/GHC.hs:1070:0:
     Warning: Definition but no type signature for `upsweep''
              Inferred type: upsweep' :: forall t1. t

The trouble was that 't' hadn't been zonked.

Push to the stable branch
parent 8b7eaa40
......@@ -378,17 +378,18 @@ mkExport top_lvl prag_fn inferred_tvs dict_tys (poly_name, mb_sig, mono_id)
= do { warn_missing_sigs <- doptM Opt_WarnMissingSigs
; let warn = isTopLevel top_lvl && warn_missing_sigs
; (tvs, poly_id) <- mk_poly_id warn mb_sig
-- poly_id has a zonked type
; poly_id' <- zonkId poly_id
; prags <- tcPrags poly_id' (prag_fn poly_name)
; prags <- tcPrags poly_id (prag_fn poly_name)
-- tcPrags requires a zonked poly_id
; return (tvs, poly_id', mono_id, prags) }
; return (tvs, poly_id, mono_id, prags) }
where
poly_ty = mkForAllTys inferred_tvs (mkFunTys dict_tys (idType mono_id))
mk_poly_id warn Nothing = do { missingSigWarn warn poly_name poly_ty
; return (inferred_tvs, mkLocalId poly_name poly_ty) }
mk_poly_id warn Nothing = do { poly_ty' <- zonkTcType poly_ty
; missingSigWarn warn poly_name poly_ty'
; return (inferred_tvs, mkLocalId poly_name poly_ty') }
mk_poly_id warn (Just sig) = do { tvs <- mapM zonk_tv (sig_tvs sig)
; return (tvs, sig_id sig) }
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment