X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=compiler%2FhsSyn%2FHsDecls.lhs;h=832f6165ff23490874999711543c9708dc0a2dbf;hb=f73446118d7168e238868b591be748ab0997045c;hp=cd04a1a7e00147b0da88e08ec02e900df404f0ff;hpb=5e5a08eb37f5513cecb47101a97fdaf09c4be040;p=ghc-hetmet.git diff --git a/compiler/hsSyn/HsDecls.lhs b/compiler/hsSyn/HsDecls.lhs index cd04a1a..832f616 100644 --- a/compiler/hsSyn/HsDecls.lhs +++ b/compiler/hsSyn/HsDecls.lhs @@ -42,7 +42,7 @@ module HsDecls ( CImportSpec(..), FoType(..), -- ** Data-constructor declarations ConDecl(..), LConDecl, ResType(..), ConDeclField(..), - HsConDeclDetails, hsConDeclArgTys, + HsConDeclDetails, hsConDeclArgTys, hsConDeclsNames, -- ** Document comments DocDecl(..), LDocDecl, docDeclDoc, -- ** Deprecations @@ -548,7 +548,7 @@ tyClDeclNames (ClassDecl {tcdLName = cls_name, tcdSigs = sigs, tcdATs = ats}) concatMap (tyClDeclNames . unLoc) ats ++ [n | L _ (TypeSig n _) <- sigs] tyClDeclNames (TyData {tcdLName = tc_name, tcdCons = cons}) - = tc_name : conDeclsNames (map unLoc cons) + = tc_name : hsConDeclsNames cons tyClDeclTyVars :: TyClDecl name -> [LHsTyVarBndr name] tyClDeclTyVars (TyFamily {tcdTyVars = tvs}) = tvs @@ -741,21 +741,21 @@ data ResType name \end{code} \begin{code} -conDeclsNames :: (Eq name) => [ConDecl name] -> [Located name] +hsConDeclsNames :: (Eq name) => [LConDecl name] -> [Located name] -- See tyClDeclNames for what this does -- The function is boringly complicated because of the records -- And since we only have equality, we have to be a little careful -conDeclsNames cons +hsConDeclsNames cons = snd (foldl do_one ([], []) cons) where - do_one (flds_seen, acc) (ConDecl { con_name = lname, con_details = RecCon flds }) + do_one (flds_seen, acc) (L _ (ConDecl { con_name = lname, con_details = RecCon flds })) = (map unLoc new_flds ++ flds_seen, lname : new_flds ++ acc) where new_flds = filterOut (\f -> unLoc f `elem` flds_seen) (map cd_fld_name flds) - do_one (flds_seen, acc) c - = (flds_seen, (con_name c):acc) + do_one (flds_seen, acc) (L _ (ConDecl { con_name = lname })) + = (flds_seen, lname:acc) \end{code}