From 8d8743ae50a4c23c5c221b7a47fd9b69c3bce028 Mon Sep 17 00:00:00 2001 From: Simon Peyton Jones <simonpj@microsoft.com> Date: Fri, 23 Nov 2012 16:57:57 +0000 Subject: [PATCH] Use the right environment for tidying the types of a data constructor Fixes Trac #7438 --- compiler/iface/MkIface.lhs | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/compiler/iface/MkIface.lhs b/compiler/iface/MkIface.lhs index 443a7ea0a9aa..cb9d32d526a4 100644 --- a/compiler/iface/MkIface.lhs +++ b/compiler/iface/MkIface.lhs @@ -1508,16 +1508,19 @@ tyConToIfaceDecl env tycon ifConUnivTvs = toIfaceTvBndrs univ_tvs', ifConExTvs = toIfaceTvBndrs ex_tvs', ifConEqSpec = to_eq_spec eq_spec, - ifConCtxt = tidyToIfaceContext env3 theta, - ifConArgTys = map (tidyToIfaceType env3) arg_tys, + ifConCtxt = tidyToIfaceContext env2 theta, + ifConArgTys = map (tidyToIfaceType env2) arg_tys, ifConFields = map getOccName (dataConFieldLabels data_con), ifConStricts = dataConStrictMarks data_con } where (univ_tvs, ex_tvs, eq_spec, theta, arg_tys, _) = dataConFullSig data_con - (env2, univ_tvs') = tidyTyClTyVarBndrs env1 univ_tvs - (env3, ex_tvs') = tidyTyVarBndrs env2 ex_tvs - to_eq_spec spec = [ (getOccName (tidyTyVar env3 tv), tidyToIfaceType env3 ty) + + -- Start with 'emptyTidyEnv' not 'env1', because the type of the + -- data constructor is fully standalone + (env1, univ_tvs') = tidyTyVarBndrs emptyTidyEnv univ_tvs + (env2, ex_tvs') = tidyTyVarBndrs env1 ex_tvs + to_eq_spec spec = [ (getOccName (tidyTyVar env2 tv), tidyToIfaceType env2 ty) | (tv,ty) <- spec] -- GitLab