X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=compiler%2FbasicTypes%2FMkId.lhs;h=7d472b12e9c64b4baf0868a555793b0a63dbe197;hb=da6ece6b866451c684dd96867e32c3fcba53c248;hp=68bafde6cee1ed116bab9949dd4af93646d75803;hpb=dffadd63e0e0015782e211909961f76a8abf2ddc;p=ghc-hetmet.git diff --git a/compiler/basicTypes/MkId.lhs b/compiler/basicTypes/MkId.lhs index 68bafde..7d472b1 100644 --- a/compiler/basicTypes/MkId.lhs +++ b/compiler/basicTypes/MkId.lhs @@ -656,7 +656,6 @@ mkRecordSelId tycon field_label -- T1 b' (c : [b]=[b']) (x:Maybe b') -- -> x `cast` Maybe (sym (right c)) - -- Generate the refinement for b'=b, -- and apply to (Maybe b'), to get (Maybe b) Succeeded refinement = gadtRefine emptyRefinement ex_tvs co_tvs @@ -828,8 +827,11 @@ at the outside. When dealing with classes it's very convenient to recover the original type signature from the class op selector. \begin{code} -mkDictSelId :: Name -> Class -> Id -mkDictSelId name clas +mkDictSelId :: Bool -- True <=> don't include the unfolding + -- Little point on imports without -O, because the + -- dictionary itself won't be visible + -> Name -> Class -> Id +mkDictSelId no_unf name clas = mkGlobalId (ClassOpId clas) name sel_ty info where sel_ty = mkForAllTys tyvars (mkFunTy (idType dict_id) (idType the_arg_id)) @@ -841,8 +843,9 @@ mkDictSelId name clas info = noCafIdInfo `setArityInfo` 1 - `setUnfoldingInfo` mkTopUnfolding rhs `setAllStrictnessInfo` Just strict_sig + `setUnfoldingInfo` (if no_unf then noUnfolding + else mkTopUnfolding rhs) -- We no longer use 'must-inline' on record selectors. They'll -- inline like crazy if they scrutinise a constructor