diff options
author | Adam Gundry <adam@well-typed.com> | 2017-02-08 21:22:54 +0000 |
---|---|---|
committer | Adam Gundry <adam@well-typed.com> | 2017-02-08 21:22:54 +0000 |
commit | 2833f0eae725e85bc180be151798f637bb5251c7 (patch) | |
tree | 2cc0abf2a5ed34a96b91ab87a13904720f82d192 | |
parent | bdd315839d1b906718d7bc7255fab3cbf0f702e2 (diff) | |
download | haskell-wip/orf-2017.tar.gz |
Use OccSet instead of [FastString] in rnHsRecFields.rn_dotdotwip/orf-2017
-rw-r--r-- | compiler/rename/RnPat.hs | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/compiler/rename/RnPat.hs b/compiler/rename/RnPat.hs index 84dcc6997b..c18138bc86 100644 --- a/compiler/rename/RnPat.hs +++ b/compiler/rename/RnPat.hs @@ -618,20 +618,20 @@ rnHsRecFields ctxt mk_arg (HsRecFields { rec_flds = flds, rec_dotdot = dotdot }) ; (rdr_env, lcl_env) <- getRdrEnvs ; con_fields <- lookupConstructorFields con ; when (null con_fields) (addErr (badDotDotCon con)) - ; let present_flds = map (occNameFS . rdrNameOcc) $ getFieldLbls flds + ; let present_flds = mkOccSet $ map rdrNameOcc (getFieldLbls flds) -- For constructor uses (but not patterns) -- the arg should be in scope locally; -- i.e. not top level or imported -- Eg. data R = R { x,y :: Int } -- f x = R { .. } -- Should expand to R {x=x}, not R{x=x,y=y} - arg_in_scope lbl = mkVarUnqual lbl `elemLocalRdrEnv` lcl_env + arg_in_scope lbl = mkRdrUnqual lbl `elemLocalRdrEnv` lcl_env (dot_dot_fields, dot_dot_gres) = unzip [ (fl, gre) | fl <- con_fields - , let lbl = flLabel fl - , not (lbl `elem` present_flds) + , let lbl = mkVarOccFS (flLabel fl) + , not (lbl `elemOccSet` present_flds) , Just gre <- [lookupGRE_FieldLabel rdr_env fl] -- Check selector is in scope , case ctxt of |