-- Hoogle documentation, generated by Haddock
-- See Hoogle, http://www.haskell.org/hoogle/
-- | Detect dead code
--
-- Find declarations.
@package weeder
@version 2.4.1
module Weeder
-- | All information maintained by analyseHieFile.
data Analysis
Analysis :: Graph Declaration -> Map Declaration (Set RealSrcSpan) -> Set Declaration -> Map Module (Set Declaration) -> Map Module FilePath -> Analysis
-- | A graph between declarations, capturing dependencies.
[dependencyGraph] :: Analysis -> Graph Declaration
-- | A partial mapping between declarations and their definition site. This
-- Map is partial as we don't always know where a Declaration was defined
-- (e.g., it may come from a package without source code). We capture a
-- set of spans, because a declaration may be defined in multiple
-- locations, e.g., a type signature for a function separate from its
-- definition.
[declarationSites] :: Analysis -> Map Declaration (Set RealSrcSpan)
-- | The Set of all Declarations that are always reachable. This is used to
-- capture knowledge not yet modelled in weeder, such as instance
-- declarations depending on top-level functions.
[implicitRoots] :: Analysis -> Set Declaration
-- | All exports for a given module.
[exports] :: Analysis -> Map Module (Set Declaration)
-- | A map from modules to the file path to the .hs file defining them.
[modulePaths] :: Analysis -> Map Module FilePath
-- | Incrementally update Analysis with information in a
-- HieFile.
analyseHieFile :: MonadState Analysis m => HieFile -> m ()
-- | The empty analysis - the result of analysing zero .hie files.
emptyAnalysis :: Analysis
-- | The set of all known declarations, including usages.
allDeclarations :: Analysis -> Set Declaration
-- | A root for reachability analysis.
data Root
-- | A given declaration is a root.
DeclarationRoot :: Declaration -> Root
-- | All exported declarations in a module are roots.
ModuleRoot :: Module -> Root
-- | Determine the set of all declaration reachable from a set of roots.
reachable :: Analysis -> Set Root -> Set Declaration
data Declaration
Declaration :: Module -> OccName -> Declaration
-- | The module this declaration occurs in.
[declModule] :: Declaration -> Module
-- | The symbol name of a declaration.
[declOccName] :: Declaration -> OccName
instance GHC.Classes.Ord Weeder.Declaration
instance GHC.Classes.Eq Weeder.Declaration
instance GHC.Generics.Generic Weeder.Analysis
instance GHC.Classes.Ord Weeder.Root
instance GHC.Classes.Eq Weeder.Root
instance GHC.Show.Show Weeder.Declaration
module Weeder.Config
-- | Configuration for Weeder analysis.
data Config
Config :: Set String -> Bool -> Config
-- | Any declarations matching these regular expressions will be added to
-- the root set.
[rootPatterns] :: Config -> Set String
-- | If True, consider all declarations in a type class as part of the root
-- set. Weeder is currently unable to identify whether or not a type
-- class instance is used - enabling this option can prevent false
-- positives.
[typeClassRoots] :: Config -> Bool
-- | A Dhall expression decoder for Config.
--
-- This parses Dhall expressions of the type { roots : List Text,
-- type-class-roots : Bool }.
config :: Decoder Config
-- | This module provides an entry point to the Weeder executable.
module Weeder.Main
-- | Parse command line arguments and into a Config and run
-- mainWithConfig.
main :: IO ()
-- | Run Weeder in the current working directory with a given
-- Config.
--
-- This will recursively find all files with the given extension in the
-- given directories, perform analysis, and report all unused definitions
-- according to the Config.
mainWithConfig :: String -> [FilePath] -> Bool -> Config -> IO ()