HaRe 0.8.1.0 → 0.8.1.1
raw patch · 10 files changed
+74/−207 lines, 10 filesPVP: major bump suggested
API removals or changes: PVP suggests a major version bump
API changes (from Hackage documentation)
- Language.Haskell.Refact.API: class (Data t, Data t1) => Update t t1
- Language.Haskell.Refact.API: defaultExp :: HsExpP
- Language.Haskell.Refact.API: defaultName :: Name
- Language.Haskell.Refact.API: defaultPN :: PName
- Language.Haskell.Refact.API: renamePN' :: (Data t) => Name -> Name -> Bool -> t -> RefactGhc t
- Language.Haskell.Refact.API: showEntities :: (t -> String) -> [t] -> String
- Language.Haskell.Refact.API: showPNwithLoc :: Located Name -> String
- Language.Haskell.Refact.API: update :: Update t t1 => t -> t -> t1 -> RefactGhc t1
- Language.Haskell.Refact.Utils.TypeUtils: defaultExp :: HsExpP
- Language.Haskell.Refact.Utils.TypeUtils: defaultName :: Name
- Language.Haskell.Refact.Utils.TypeUtils: defaultPN :: PName
- Language.Haskell.Refact.Utils.TypeUtils: renamePN' :: (Data t) => Name -> Name -> Bool -> t -> RefactGhc t
- Language.Haskell.Refact.Utils.TypeUtils: showEntities :: (t -> String) -> [t] -> String
- Language.Haskell.Refact.Utils.TypeUtils: showPNwithLoc :: Located Name -> String
- Language.Haskell.Refact.Utils.Utils: class (Data t, Data t1) => Update t t1
- Language.Haskell.Refact.Utils.Utils: instance (Data.Data.Data t, Outputable.OutputableBndr n, PlaceHolder.DataId n) => Language.Haskell.Refact.Utils.Utils.Update (HsPat.LPat n) t
- Language.Haskell.Refact.Utils.Utils: instance (Data.Data.Data t, Outputable.OutputableBndr n, PlaceHolder.DataId n) => Language.Haskell.Refact.Utils.Utils.Update (HsTypes.LHsType n) t
- Language.Haskell.Refact.Utils.Utils: instance (Data.Data.Data t, Outputable.OutputableBndr n, PlaceHolder.DataId n) => Language.Haskell.Refact.Utils.Utils.Update (SrcLoc.Located (HsExpr.HsExpr n)) t
- Language.Haskell.Refact.Utils.Utils: instance (Data.Data.Data t, Outputable.OutputableBndr n1, Outputable.OutputableBndr n2, PlaceHolder.DataId n1, PlaceHolder.DataId n2) => Language.Haskell.Refact.Utils.Utils.Update (HsBinds.LHsBindLR n1 n2) t
- Language.Haskell.Refact.Utils.Utils: update :: Update t t1 => t -> t -> t1 -> RefactGhc t1
+ Language.Haskell.Refact.API: renamePN :: (Data t) => Name -> Name -> Bool -> t -> RefactGhc t
+ Language.Haskell.Refact.Utils.TypeUtils: renamePN :: (Data t) => Name -> Name -> Bool -> t -> RefactGhc t
Files
- ChangeLog +2/−0
- HaRe.cabal +3/−3
- src/Language/Haskell/Refact/API.hs +3/−14
- src/Language/Haskell/Refact/Refactoring/MoveDef.hs +3/−5
- src/Language/Haskell/Refact/Refactoring/Renaming.hs +5/−5
- src/Language/Haskell/Refact/Refactoring/SwapArgs.hs +16/−6
- src/Language/Haskell/Refact/Utils/TypeUtils.hs +14/−77
- src/Language/Haskell/Refact/Utils/Utils.hs +5/−5
- src/Language/Haskell/Refact/Utils/Variables.hs +2/−71
- test/TypeUtilsSpec.hs +21/−21
ChangeLog view
@@ -1,3 +1,5 @@+2015-10-05 v0.8.1.1+ * Move to new/old home at https://github.com/RefactoringTools/HaRe 2015-10-05 v0.8.1.0 * Reinstate processing of CPP directives as comments #36 * Fix problem in renaming in a client module when the old name is
HaRe.cabal view
@@ -1,9 +1,9 @@ Name: HaRe-Version: 0.8.1.0+Version: 0.8.1.1 Author: Chris Brown, Huiqing Li, Simon Thompson, Alan Zimmerman Maintainer: Alan Zimmerman Stability: Alpha-Bug-Reports: http://github.com/alanz/HaRe/issues+Bug-Reports: http://github.com/RefactoringTools/HaRe/issues License: BSD3 License-File: LICENSE Homepage: https://github.com/RefactoringTools/HaRe/wiki@@ -339,4 +339,4 @@ source-repository head type: git- location: https://github.com/alanz/HaRe.git+ location: https://github.com/RefactoringTools/HaRe.git
src/Language/Haskell/Refact/API.hs view
@@ -149,7 +149,7 @@ , getModule -- *** Locations- ,defineLoc, useLoc, locToExp + ,defineLoc, useLoc, locToExp ,locToName, locToRdrName ,getName @@ -161,17 +161,8 @@ ,rmDecl, rmTypeSig, rmTypeSigs -- *** Updating- ,Update(update)- ,rmQualifier,qualifyToplevelName,renamePN',autoRenameLocalVar-- -- ** Miscellous- -- *** Parsing, writing and showing- , showEntities,showPNwithLoc- -- *** Locations- -- ,toRelativeLocs, rmLocs- -- *** Default values- ,defaultPN,defaultName,defaultExp-+ -- ,Update(update)+ ,rmQualifier,qualifyToplevelName,renamePN,autoRenameLocalVar -- *** Identifiers, expressions, patterns and declarations ,ghcToPN,lghcToPN, expToName, expToNameRdr@@ -190,8 +181,6 @@ -- The following functions are not in the the API yet. , causeNameClashInExports-- -- , removeOffset , declsSybTransform
src/Language/Haskell/Refact/Refactoring/MoveDef.hs view
@@ -1632,20 +1632,18 @@ -- |substitute an old expression by new expression-replaceExpWithUpdToks :: (SYB.Data t)- => t -> (GHC.Name, GHC.HsExpr GHC.RdrName)- -> RefactGhc t+replaceExpWithUpdToks :: GHC.LHsBind GHC.RdrName -> (GHC.Name, GHC.HsExpr GHC.RdrName)+ -> RefactGhc (GHC.LHsBind GHC.RdrName) replaceExpWithUpdToks decls subst = do nm <- getRefactNameMap let worker (e@(GHC.L l _)::GHC.LHsExpr GHC.RdrName) |(expToNameRdr nm e) == Just (fst subst)- = update e (GHC.L l (snd subst)) e+ = return (GHC.L l (snd subst)) worker x=return x -- = applyTP (full_buTP (idTP `adhocTP` worker)) decls everywhereMStaged' SYB.Parser (SYB.mkM worker) decls- -- | return True if pn is a local function/pattern name isLocalFunOrPatName :: SYB.Data t => GHC.Name -> t -> Bool
src/Language/Haskell/Refact/Refactoring/Renaming.hs view
@@ -174,7 +174,7 @@ then do logm $ "renameTopLevelVarName start..:should have qualified" parsed <- getRefactParsed- parsed' <- renamePN' oldPN newNameGhc True parsed+ parsed' <- renamePN oldPN newNameGhc True parsed putRefactParsed parsed' mempty logm $ "renameTopLevelVarName done:should have qualified" r' <- getRefactRenamed@@ -182,7 +182,7 @@ else do logm $ "renameTopLevelVarName start.." parsed <- getRefactParsed- parsed' <- renamePN' oldPN newNameGhc False parsed+ parsed' <- renamePN oldPN newNameGhc False parsed putRefactParsed parsed' mempty logm $ "renameTopLevelVarName done" r' <- getRefactRenamed@@ -257,7 +257,7 @@ logm $ "refactRenameSimple:(old,newStr,new,useQual)=" ++ showGhc (old,newStr,new,useQual) qualifyTopLevelVar newStr parsed <- getRefactParsed- parsed' <- renamePN' old new useQual parsed+ parsed' <- renamePN old new useQual parsed putRefactParsed parsed' mempty return () @@ -283,8 +283,8 @@ vs <- hsVisibleNames oldPN' renamed --Does this check names other than variable names? logm $ "renameInClientMod.worker:(vs,oldPN',isInScopeUnqualNew)=" ++ showGhc (vs,oldPN',isInScopeUnqualNew) parsed' <- if elem newName' ((nub vs) \\ [nameToString oldPN']) || isInScopeUnqualNew- then renamePN' oldPN' newNameGhc' True parsed --rename to qualified Name- else renamePN' oldPN' newNameGhc' False parsed -- do not qualify+ then renamePN oldPN' newNameGhc' True parsed --rename to qualified Name+ else renamePN oldPN' newNameGhc' False parsed -- do not qualify putRefactParsed parsed' mempty return ()
src/Language/Haskell/Refact/Refactoring/SwapArgs.hs view
@@ -79,9 +79,14 @@ inMod _ func = return func -- 2. All call sites of the function...- inExp nm expr@((GHC.L _x (GHC.HsApp (GHC.L _y (GHC.HsApp e e1)) e2))::GHC.LHsExpr GHC.RdrName)+ inExp nm ((GHC.L l (GHC.HsApp (GHC.L e0 (GHC.HsApp e e1)) e2))::GHC.LHsExpr GHC.RdrName) | cond- = update e2 e1 =<< update e1 e2 expr+ -- = update e2 e1 =<< update e1 e2 expr+ = do+ -- expr1 <- update e1 e2 expr+ -- expr2 <- update e2 e1 expr1+ -- return expr2+ return (GHC.L l (GHC.HsApp (GHC.L e0 (GHC.HsApp e e2)) e1)) where cond = case (expToNameRdr nm e) of Nothing -> False@@ -94,8 +99,10 @@ = do logm $ "doSwap.inType" let (t1:t2:ts) = tyFunToList types- t1' <- update t1 t2 t1- t2' <- update t2 t1 t2+ -- t1' <- update t1 t2 t1+ -- t2' <- update t2 t1 t2+ let t1' = t2+ let t2' = t1 return (GHC.L x (GHC.TypeSig [lname] (tyListToFun (t1':t2':ts)) pns)) inType nm (GHC.L _x (GHC.TypeSig (n:ns) _types _)::GHC.LSig GHC.RdrName)@@ -120,8 +127,11 @@ updateMatches [] = return [] updateMatches ((GHC.L x (GHC.Match mfn pats nothing rhs)::GHC.LMatch GHC.RdrName (GHC.LHsExpr GHC.RdrName)):matches) = case pats of- (p1:p2:ps) -> do p1' <- update p1 p2 p1- p2' <- update p2 p1 p2+ (p1:p2:ps) -> do+ -- p1' <- update p1 p2 p1+ -- p2' <- update p2 p1 p2+ let p1' = p2+ let p2' = p1 matches' <- updateMatches matches return ((GHC.L x (GHC.Match mfn (p1':p2':ps) nothing rhs)):matches') [p] -> return [GHC.L x (GHC.Match mfn [p] nothing rhs)]
src/Language/Haskell/Refact/Utils/TypeUtils.hs view
@@ -59,9 +59,8 @@ ,getTypeForName ,defines, definesP,definesTypeSig,definesTypeSigRdr- -- ,HasModName(hasModName), HasNameSpace(hasNameSpace) ,sameBind,sameBindRdr- {- ,usedByRhs -},UsedByRhs(..)+ ,UsedByRhs(..) -- ** Modules and files -- ,clientModsAndFiles,serverModsAndFiles,isAnExistingMod@@ -83,23 +82,13 @@ -- ,rmItemsFromExport, rmSubEntsFromExport, Delete(delete) -- ** Updating- -- ,Update(update)- {- ,qualifyPName-},rmQualifier,qualifyToplevelName,{- renamePN, -} renamePN' {- ,replaceNameInPN -},autoRenameLocalVar-- -- * Miscellous- -- ** Parsing, writing and showing- {- ,parseSourceFile,writeRefactoredFiles-}, showEntities,showPNwithLoc -- , newProj, addFile, chase- -- ** Locations- -- ,toRelativeLocs, rmLocs- -- ** Default values- ,defaultPN {- ,defaultPNT -},defaultName {-,defaultModName-},defaultExp -- ,defaultPat, defaultExpUnTyped-+ , rmQualifier, qualifyToplevelName, renamePN, autoRenameLocalVar -- ** Identifiers, expressions, patterns and declarations ,ghcToPN,lghcToPN, expToName, expToNameRdr ,nameToString ,patToNameRdr- {- ,expToPNT, expToPN, nameToExp,pNtoExp -},patToPNT {- , patToPN --, nameToPat -},pNtoPat+ , patToPNT, pNtoPat -- ** Others , divideDecls@@ -108,26 +97,18 @@ -- The following functions are not in the the API yet. , causeNameClashInExports {- , inRegion , unmodified -} - -- , removeOffset- , declsSybTransform- -- , hasDeclsSybTransform -- * Typed AST traversals (added by CMB) -- * Miscellous -- ,removeFromInts, getDataName, checkTypes, getPNs, getPN, getPNPats, mapASTOverTAST -- * Debug stuff- -- , getDeclAndToks, getSigAndToks- -- , getToksForDecl, removeToksOffset -- ++AZ++ remove this after debuggging , getParsedForRenamedLPat , getParsedForRenamedName , getParsedForRenamedLocated- -- , allPNT- -- , allPNTLens , rdrNameFromName , stripLeadingSpaces- -- , lookupNameGhc ) where import Control.Monad.State@@ -197,6 +178,7 @@ _ -> Nothing +-- --------------------------------------------------------------------- -- | Return True if the identifier is inscope and can be used without -- a qualifier.@@ -271,33 +253,20 @@ return newNames -- ------------------------------------------------------------------------ | Show a PName in a format like: 'pn'(at row:r, col: c).-showPNwithLoc:: GHC.Located GHC.Name -> String-showPNwithLoc pn@(GHC.L l _n)- = let (r,c) = getGhcLoc l- -- in " '"++pNtoName pn++"'" ++"(at row:"++show r ++ ",col:" ++ show c ++")"- in " '"++showGhc pn++"'" ++"(at row:"++show r ++ ",col:" ++ show c ++")" --- -----------------------------------------------------------------------defaultPN :: PName-defaultPN = PN (mkRdrName "nothing")-+-- TODO: get rid of this defaultName :: GHC.Name defaultName = n where un = GHC.mkUnique 'H' 0 -- H for HaRe :) n = GHC.localiseName $ GHC.mkSystemName un (GHC.mkVarOcc "nothing") --- | Default expression.-defaultExp::HsExpP--- defaultExp=Exp (HsId (HsVar defaultPNT))-defaultExp=GHC.HsVar $ mkRdrName "nothing"+-- --------------------------------------------------------------------- +-- |Make a simple unqualified 'GHC.RdrName' mkRdrName :: String -> GHC.RdrName mkRdrName s = GHC.mkVarUnqual (GHC.mkFastString s) --- --------------------------------------------------------------------- -- | Make a new GHC.Name, using the Unique Int sequence stored in the -- RefactState.@@ -403,13 +372,10 @@ _ -> False modIsUnQualifedImported _mod' modName'- =let -- imps =hsModImports mod- -- imp@(GHC.L _ (GHC.ImportDecl (GHC.L _ modName) qualify _source _safe isQualified _isImplicit as h))+ =let in isJust $ find (\(GHC.L _ (GHC.ImportDecl _ (GHC.L _ modName1) _qualify _source _safe isQualified _isImplicit _as _h)) -> modName1 == modName' && (not isQualified)) imps- -- in isJust $ find (\(HsImportDecl _ (SN modName1 _) qualify _ h) -> modName == modName1 && (not qualify)) imps - -- Original seems to be -- 1. pick up any module names in the export list with same unQual -- part as the new name@@ -513,7 +479,6 @@ checkName ((GHC.L l pn)::GHC.Located GHC.RdrName) | ((GHC.rdrNameOcc pn) == (GHC.nameOccName name)) &&- -- isUsedInRhs pname parsed && isUsedInRhs (GHC.L l name) parsed && GHC.isUnqual pn = Just True checkName _ = Nothing@@ -580,8 +545,6 @@ -- |Return True if a PName is a local PName. isLocalPN::GHC.Name -> Bool isLocalPN = GHC.isInternalName--- isLocalPN (PN i (UniqueNames.S _)) = True--- isLocalPN _ = False -- |Return True if the name has a @GHC.SrcSpan@, i.e. is declared in -- source we care about@@ -596,7 +559,6 @@ isFunOrPatName pn =isJust . SYB.somethingStaged SYB.Parser Nothing (Nothing `SYB.mkQ` worker) where- -- worker (decl::HsDeclP) worker (decl::GHC.LHsBind GHC.Name) | defines pn decl = Just True worker _ = Nothing@@ -982,19 +944,7 @@ } -- ----------------------------------------------------------------------{---- | Remove ImportDecl from the imports list, commonly returned from a RenamedSource type, so it can--- be further processed.---rmPreludeImports :: [GHC.Located (GHC.ImportDecl GHC.Name)] -> [GHC.Located (GHC.ImportDecl GHC.Name)]-rmPreludeImports ::- [GHC.Located (GHC.ImportDecl GHC.Name)]- -> [GHC.Located (GHC.ImportDecl GHC.Name)]-rmPreludeImports = filter isPrelude where- isPrelude = (/="Prelude") . GHC.moduleNameString . GHC.unLoc . GHC.ideclName . GHC.unLoc--} --- ---------------------------------------------------------------------- -- | Adding a declaration to the declaration list of the given syntax -- phrase. If the second argument is Nothing, then the declaration -- will be added to the beginning of the declaration list, but after@@ -1241,7 +1191,6 @@ addParamsToDecls decls pn paramPNames = do -- logm $ "addParamsToDecls (pn,paramPNames,modifyToks)=" ++ (showGhc (pn,paramPNames,modifyToks))- -- logm $ "addParamsToDecls: decls=" ++ (SYB.showData SYB.Renamer 0 decls) nameMap <- getRefactNameMap if (paramPNames /= []) then mapM (addParamToDecl nameMap) decls@@ -1466,8 +1415,8 @@ declsToDup = definingDeclsRdrNames nm [n] decls True False funBinding = filter isFunOrPatBindP declsToDup --get the fun binding. typeSig = map wrapSig $ definingSigsRdrNames nm [n] decls- funBinding'' <- renamePN' n newFunName False funBinding- typeSig'' <- renamePN' n newFunName False typeSig+ funBinding'' <- renamePN n newFunName False funBinding+ typeSig'' <- renamePN n newFunName False typeSig logm $ "duplicateDecl:funBinding''=" ++ showGhc funBinding'' funBinding3 <- mapM (\f@(GHC.L _ fb) -> do@@ -1558,12 +1507,9 @@ return expr _ -> do -- logm $ "rmDecl.inLet:length decls /= 1"- -- let decls2' = gtail "inLet" decls2 decls' <- doRmDecl decls1 decls2 letExpr' <- liftT $ replaceDecls letExpr decls' return letExpr'- -- localDecls' <- liftT $ replaceDecls localDecls decls'- -- return $ (GHC.L ss (GHC.HsLet localDecls' expr)) else do -- liftT $ replaceDecls localDecls decls return letExpr@@ -1592,7 +1538,6 @@ logDataWithAnns "doRmDeclList:(parent')" (parent') return parent' else do- -- liftT $ replaceDecls parent decls return parent -- ---------------------------------@@ -1782,9 +1727,6 @@ rename nm (ln@(GHC.L l pn)::GHC.Located GHC.RdrName) | elem (rdrName2NamePure nm ln) pns = do- -- let (rs,_) = break (=='.') $ reverse $ showGhc pn -- ++TODO: replace this with the appropriate formulation- -- s = reverse rs- -- return (GHC.L l (GHC.mkInternalName (GHC.nameUnique pn) (GHC.mkVarOcc s) l)) case pn of GHC.Qual _ n -> return (GHC.L l (GHC.Unqual n)) _ -> return ln@@ -1795,9 +1737,8 @@ -- | Replace all occurences of a top level GHC.Name with a qualified version. qualifyToplevelName :: GHC.Name -> RefactGhc () qualifyToplevelName n = do- -- renamed <- getRefactRenamed parsed <- getRefactParsed- parsed' <- renamePN' n n True parsed+ parsed' <- renamePN n n True parsed putRefactParsed parsed' emptyAnns return () @@ -1812,14 +1753,14 @@ -- TODO: the syntax phrase is required to be GHC.Located, not sure how -- to specify this without breaking the everywhereMStaged call -renamePN'::(SYB.Data t)+renamePN::(SYB.Data t) =>GHC.Name -- ^ The identifier to be renamed. ->GHC.Name -- ^ The new name, including possible qualifier ->Bool -- ^ True means use the qualified form for -- the new name. ->t -- ^ The syntax phrase ->RefactGhc t-renamePN' oldPN newName useQual t = do+renamePN oldPN newName useQual t = do -- logm $ "renamePN: (oldPN,newName)=" ++ (showGhc (oldPN,newName)) -- logm $ "renamePN: t=" ++ (SYB.showData SYB.Parser 0 t) nameMap <- getRefactNameMap@@ -2057,7 +1998,7 @@ ds <- hsVisibleNamesRdr pn tt let newNameStr = mkNewName (nameToString pn) (nub (f `union` d `union` ds)) 1 newName <- mkNewGhcName Nothing newNameStr- renamePN' pn newName False tt+ renamePN pn newName False tt -- --------------------------------------------------------------------- @@ -2180,10 +2121,6 @@ inName = nameSybQuery checker uns = map GHC.nameUnique pns-- -- worker (ln :: GHC.Located GHC.RdrName)- -- | elem (GHC.nameUnique (rdrName2NamePure nm ln)) uns = Just True- -- worker _ = Nothing -- ---------------------------------------------------------------------
src/Language/Haskell/Refact/Utils/Utils.hs view
@@ -20,7 +20,7 @@ , applyRefac , refactDone - , Update(..)+ -- , Update(..) , fileNameFromModSummary , getModuleName , clientModsAndFiles@@ -288,7 +288,7 @@ -} -- --------------------------------------------------------------------- -+{- -- ++AZ++ I think the intended function of this class has been superseded by -- ghc-exactprint HasDecls. class (SYB.Data t, SYB.Data t1) => Update t t1 where@@ -301,11 +301,11 @@ -> RefactGhc t1 -- ^ The result. instance (SYB.Data t, GHC.OutputableBndr n, GHC.DataId n)- => Update (GHC.Located (GHC.HsExpr n)) t where+ => Update (GHC.LHsExpr n) t where update oldExp newExp t = SYB.everywhereMStaged SYB.Parser (SYB.mkM inExp) t where- inExp (e::GHC.Located (GHC.HsExpr n))+ inExp (e::GHC.LHsExpr n) | sameOccurrence e oldExp = return newExp | otherwise = return e@@ -339,7 +339,7 @@ | sameOccurrence t' oldBind = return newBind | otherwise = return t'-+-} -- ---------------------------------------------------------------------
src/Language/Haskell/Refact/Utils/Variables.hs view
@@ -17,7 +17,6 @@ isFieldName , isClassName , isInstanceName- -- , hsPNs , isDeclaredIn,isDeclaredInRdr , FreeNames(..),DeclaredNames(..) , hsFreeAndDeclaredPNsOld@@ -39,7 +38,7 @@ -- ** Identifiers, expressions, patterns and declarations , FindEntity(..) , sameOccurrence- {- ,definingDecls -}, definedPNs, definedPNsRdr,definedNamesRdr+ , definedPNs, definedPNsRdr,definedNamesRdr , definingDeclsRdrNames,definingDeclsRdrNames',definingSigsRdrNames , definingDeclsNames, definingDeclsNames', definingSigsNames , definingTyClDeclsNames@@ -48,7 +47,6 @@ , definesTypeSig,definesTypeSigRdr,definesSigDRdr , definesP , allNames- -- ,simplifyDecl , hsPNs, hsNamess, hsNamessRdr , locToName, locToRdrName@@ -123,16 +121,7 @@ checkRdr n | sameOccurrence n ln = Just True | otherwise = Nothing-{-- findEntity n t = fromMaybe False res- where- res = SYB.something (Nothing `SYB.mkQ` worker) t - worker (name :: GHC.Located GHC.RdrName)- | sameOccurrence n name = Just True- worker _ = Nothing--}- -- --------------------------------------------------------------------- {- -- This is not precise enough, RdrNames are ambiguous@@ -291,7 +280,6 @@ hsFreeAndDeclaredRdr' nm t = do (FN f,DN d) <- hsFreeAndDeclared' let (f',d') = (nub f, nub d)- -- return (f' \\ d',d') return (FN f',DN d') -- hsFreeAndDeclared'=applyTU (stop_tdTU (failTU `adhocTU` exp @@ -464,9 +452,6 @@ `adhocTU` rhs )) t - -- TODO: ++AZ++ Note:After renaming, HsBindLR has field bind_fvs- -- containing locally bound free vars- -- expr -- expr (GHC.HsVar n) = return ([n],[]) @@ -575,7 +560,6 @@ return ((nub.map showGhc) f1, (nub.map showGhc) d1) --- hsFreeAndDeclaredPNs :: (SYB.Data t,GHC.Outputable t) => t -> RefactGhc ([GHC.Name],[GHC.Name]) hsFreeAndDeclaredPNs :: (SYB.Data t) => t -> RefactGhc ([GHC.Name],[GHC.Name]) hsFreeAndDeclaredPNs t = do -- logm $ "hsFreeAndDeclaredPNs:t=" ++ (showGhc t)@@ -653,11 +637,6 @@ -- ----------------------- - -- lhsdecls :: [GHC.LHsDecl GHC.Name] -> RefactGhc (FreeNames,DeclaredNames)- -- lhsdecls ds = recurseList ds-- -- ------------------------ lhsbinds :: [GHC.LHsBind GHC.Name] -> RefactGhc (FreeNames,DeclaredNames) lhsbinds bs = do (FN f,DN d) <- recurseList bs@@ -674,7 +653,6 @@ hsbind b@(GHC.FunBind _n _ (GHC.MG matches _ _ _) _ _ _) = do -- logm $ "hsFreeAndDeclaredGhc.hsbind:b=" ++ (showGhc b) let d = GHC.collectHsBindBinders b- -- let pats = concatMap (\(GHC.L _ (GHC.Match pat _ _)) -> pat) matches (fp,_dp) <- hsFreeAndDeclaredGhc matches -- logm $ "hsFreeAndDeclaredGhc.hsbind:(fp,_dp)=" ++ (show (fp,_dp)) -- logm $ "hsFreeAndDeclaredGhc.hsbind:(d)=" ++ (showGhc (d))@@ -733,8 +711,6 @@ let d = GHC.collectPatBinders lp - -- logm $ "hsFreeAndDeclaredGhc.lpat p=" ++ (SYB.showData SYB.Renamer 0 p)- (FN f,DN _dn) <- pat p -- logm $ "hsFreeAndDeclaredGhc.lpat:(fn,dn)=" ++ (showGhc (fn,dn)) return (FN f,DN d)@@ -779,7 +755,6 @@ pat p = error $ "hsFreeAndDeclaredGhc.pat:unimplemented:" ++ (showGhc p) - -- HsConDetails (LPat id) (HsRecFields id (LPat id)) details :: GHC.HsConPatDetails GHC.Name -> RefactGhc (FreeNames,DeclaredNames) details (GHC.PrefixCon args) = do -- logm $ "hsFreeAndDeclaredGhc.details:args=" ++ (showGhc args)@@ -2255,7 +2230,6 @@ parsed p = return $ hsFreeAndDeclaredRdr nm p - -- Match [LPat id] (Maybe (LHsType id)) (GRHSs id) match :: GHC.Match GHC.RdrName (GHC.LHsExpr GHC.RdrName) -> RefactGhc (FreeNames,DeclaredNames) match (GHC.Match _fn pats _type rhs) = do let (FN pf, DN pd) = hsFreeAndDeclaredRdr nm pats@@ -2343,7 +2317,6 @@ `adhocTU` match `adhocTU` expr `adhocTU` stmts )) t1- -- let (f',d') = fromMaybe ([],[]) r1 let (f',d') = r1 return (nub f', nub d') @@ -2351,7 +2324,6 @@ renamed ((grp,_,_,_)::GHC.RenamedSource) = hsFreeAndDeclaredPNs $ GHC.hs_valds grp - -- Match [LPat id] (Maybe (LHsType id)) (GRHSs id) match :: GHC.Match GHC.Name (GHC.LHsExpr GHC.Name) -> RefactGhc ([GHC.Name],[GHC.Name]) match ((GHC.Match _fn pats _type rhs):: GHC.Match GHC.Name (GHC.LHsExpr GHC.Name)) = do (pf, pd) <- hsFreeAndDeclaredPNs pats@@ -2403,7 +2375,6 @@ (df,dd) <- hsFreeAndDeclaredPNs matches return (nub (df `union` (ef \\ dd)), nub dd) - -- expr _ = return ([],[]) expr _ = mzero stmts ((GHC.BindStmt pat e1 e2 e3) :: GHC.Stmt GHC.Name (GHC.LHsExpr GHC.Name)) =@@ -2417,7 +2388,6 @@ stmts ((GHC.LetStmt binds) :: GHC.Stmt GHC.Name (GHC.LHsExpr GHC.Name)) = hsFreeAndDeclaredPNs binds - -- stmts _ = return ([],[]) stmts _ = mzero @@ -2516,43 +2486,4 @@ (col >= (GHC.srcSpanStartCol ss)) && (col <= (GHC.srcSpanEndCol ss)) --- ----------------------------------------------------------------------{--nameSybQuery :: (SYB.Typeable a, SYB.Typeable t)- => (GHC.Located a -> Maybe r) -> t -> Maybe r-nameSybQuery checker = q- where- q = Nothing `SYB.mkQ` worker- `SYB.extQ` workerBind- `SYB.extQ` workerExpr- `SYB.extQ` workerLIE- `SYB.extQ` workerHsTyVarBndr- `SYB.extQ` workerLHsType-- worker (pnt :: (GHC.Located a))- = checker pnt-- -- workerBind (GHC.L l (GHC.VarPat name) :: (GHC.Located (GHC.Pat a)))- workerBind (GHC.L l (GHC.VarPat name))- = checker (GHC.L l name)- workerBind _ = Nothing-- -- workerExpr ((GHC.L l (GHC.HsVar name)) :: (GHC.Located (GHC.HsExpr a)))- workerExpr ((GHC.L l (GHC.HsVar name)))- = checker (GHC.L l name)- workerExpr _ = Nothing-- workerLIE ((GHC.L _l (GHC.IEVar (GHC.L ln name))) :: (GHC.LIE a))- -- workerLIE ((GHC.L _l (GHC.IEVar (GHC.L ln name))))- = checker (GHC.L ln name)- workerLIE _ = Nothing-- -- workerHsTyVarBndr ((GHC.L l (GHC.UserTyVar name)):: (GHC.LHsTyVarBndr a))- workerHsTyVarBndr ((GHC.L l (GHC.UserTyVar name)))- = checker (GHC.L l name)- workerHsTyVarBndr _ = Nothing-- workerLHsType ((GHC.L l (GHC.HsTyVar name)))- = checker (GHC.L l name)- workerLHsType _ = Nothing--}+-- EOF
test/TypeUtilsSpec.hs view
@@ -2460,7 +2460,7 @@ renamed <- getRefactRenamed let Just (GHC.L _l n') = locToName (3, 1) renamed newName <- mkNewGhcName Nothing "bar2"- new <- renamePN' n' newName False parsed+ new <- renamePN n' newName False parsed putRefactParsed new emptyAnns return (new,newName,n') let@@ -2483,7 +2483,7 @@ let decl = head $ drop 0 declsr let Just (GHC.L _l n') = locToName (11, 21) renamed newName <- mkNewGhcName Nothing "p_1"- new <- renamePN' n' newName False decl+ new <- renamePN n' newName False decl parsed' <- liftT $ replaceDecls parsed (new:tail declsr) putRefactParsed parsed' emptyAnns return (new,newName,decl,n')@@ -2509,7 +2509,7 @@ parsed <- getRefactParsed decls <- liftT $ hsDecls parsed newName <- mkNewGhcName Nothing "bar2"- new <- renamePN' n newName False (head $ drop 3 decls)+ new <- renamePN n newName False (head $ drop 3 decls) parsed' <- liftT $ replaceDecls parsed (take 3 decls ++ [new] ++ drop 4 decls) putRefactParsed parsed' emptyAnns return (new,newName)@@ -2537,7 +2537,7 @@ decls <- liftT $ hsDecls parsed let decl = head $ drop 3 decls newName <- mkNewGhcName Nothing "bar2"- new <- renamePN' n newName False decl+ new <- renamePN n newName False decl parsed' <- liftT $ replaceDecls parsed (take 3 decls ++ [new] ++ drop 4 decls) putRefactParsed parsed' emptyAnns@@ -2562,7 +2562,7 @@ let comp = do newName <- mkNewGhcName Nothing "pointx1"- new <- renamePN' n newName False parsed+ new <- renamePN n newName False parsed putRefactParsed new emptyAnns @@ -2588,7 +2588,7 @@ comp = do logm $ "renamed:" ++ (SYB.showData SYB.Renamer 0 renamed) newName <- mkNewGhcName Nothing "NewPoint"- new <- renamePN' n newName False parsed+ new <- renamePN n newName False parsed putRefactParsed new emptyAnns @@ -2612,7 +2612,7 @@ let comp = do newName <- mkNewGhcName Nothing "newPoint"- new <- renamePN' n newName False parsed+ new <- renamePN n newName False parsed putRefactParsed new emptyAnns @@ -2637,7 +2637,7 @@ comp = do logm $ "renamed:" ++ (SYB.showData SYB.Renamer 0 renamed) newName <- mkNewGhcName (Just modu) "newPoint"- new <- renamePN' n newName True parsed+ new <- renamePN n newName True parsed putRefactParsed new emptyAnns @@ -2663,7 +2663,7 @@ logm $ "renamed:" ++ (SYB.showData SYB.Renamer 0 renamed) newName <- mkNewGhcName Nothing "ls"- new <- renamePN' n newName False parsed+ new <- renamePN n newName False parsed putRefactParsed new emptyAnns @@ -2687,7 +2687,7 @@ let comp = do newName <- mkNewGhcName (Just modu) "mySum"- new <- renamePN' n newName True parsed+ new <- renamePN n newName True parsed putRefactParsed new emptyAnns @@ -2715,7 +2715,7 @@ logm $ "renamed:" ++ (SYB.showData SYB.Renamer 0 renamed) newName <- mkNewGhcName (Just modu) "myNewFringe" - new <- renamePN' n newName True parsed+ new <- renamePN n newName True parsed putRefactParsed new emptyAnns return (new,newName)@@ -2740,7 +2740,7 @@ logm $ "renamed:" ++ (SYB.showData SYB.Renamer 0 renamed) newName <- mkNewGhcName Nothing "ls"- new <- renamePN' n newName False parsed+ new <- renamePN n newName False parsed putRefactParsed new emptyAnns @@ -2767,7 +2767,7 @@ logm $ "renamed:" ++ (SYB.showData SYB.Renamer 0 renamed) newName <- mkNewGhcName Nothing "listlonger"- new <- renamePN' n newName False parsed+ new <- renamePN n newName False parsed putRefactParsed new emptyAnns @@ -2793,7 +2793,7 @@ logm $ "renamed:" ++ (SYB.showData SYB.Renamer 0 renamed) newName <- mkNewGhcName Nothing "io"- new <- renamePN' n newName False parsed+ new <- renamePN n newName False parsed putRefactParsed new emptyAnns @@ -2819,7 +2819,7 @@ logm $ "renamed:" ++ (SYB.showData SYB.Renamer 0 renamed) newName <- mkNewGhcName Nothing "ioFunLong"- new <- renamePN' n newName False parsed+ new <- renamePN n newName False parsed putRefactParsed new emptyAnns @@ -2844,7 +2844,7 @@ logm $ "renamed:" ++ (SYB.showData SYB.Renamer 0 renamed) newName <- mkNewGhcName Nothing "q"- new <- renamePN' n newName False parsed+ new <- renamePN n newName False parsed putRefactParsed new emptyAnns @@ -2870,7 +2870,7 @@ logm $ "renamed:" ++ (SYB.showData SYB.Renamer 0 renamed) newName <- mkNewGhcName Nothing "square"- new <- renamePN' n newName False parsed+ new <- renamePN n newName False parsed putRefactParsed new emptyAnns @@ -2895,7 +2895,7 @@ logm $ "renamed:" ++ (SYB.showData SYB.Renamer 0 renamed) newName <- mkNewGhcName Nothing "x"- new <- renamePN' n newName False parsed+ new <- renamePN n newName False parsed putRefactParsed new emptyAnns @@ -2921,7 +2921,7 @@ newName <- mkNewGhcName Nothing "xxxlong" -- new <- renamePN n newName False renamed- new <- renamePN' n newName False parsed+ new <- renamePN n newName False parsed putRefactParsed new emptyAnns @@ -2948,7 +2948,7 @@ logm $ "renamed:" ++ (SYB.showData SYB.Renamer 0 renamed) newName <- mkNewGhcName Nothing "xxxlong"- new <- renamePN' n newName False parsed+ new <- renamePN n newName False parsed putRefactParsed new emptyAnns @@ -2975,7 +2975,7 @@ logm $ "parsed:" ++ (SYB.showData SYB.Parser 0 parsed) newName <- mkNewGhcName Nothing "NewType"- new <- renamePN' n newName False parsed+ new <- renamePN n newName False parsed putRefactParsed new emptyAnns logm $ "parsed:after" ++ (SYB.showData SYB.Parser 0 new)