Safe Haskell | Safe-Inferred |
---|---|
Language | Haskell2010 |
Ormolu.Fixity
Description
Definitions for fixity analysis.
Synopsis
- data OpName
- pattern OpName :: Text -> OpName
- unOpName :: OpName -> Text
- occOpName :: OccName -> OpName
- data FixityDirection
- data FixityInfo = FixityInfo {
- fiDirection :: Maybe FixityDirection
- fiMinPrecedence :: Int
- fiMaxPrecedence :: Int
- type FixityMap = Map OpName FixityInfo
- data LazyFixityMap
- lookupFixity :: OpName -> LazyFixityMap -> Maybe FixityInfo
- data HackageInfo = HackageInfo (Map PackageName FixityMap) (Map PackageName Int)
- defaultStrategyThreshold :: Float
- defaultFixityInfo :: FixityInfo
- buildFixityMap :: Float -> Set PackageName -> LazyFixityMap
- buildFixityMap' :: Map PackageName FixityMap -> Map PackageName Int -> Set PackageName -> Float -> Set PackageName -> LazyFixityMap
- bootPackages :: Set PackageName
- packageToOps :: Map PackageName FixityMap
- packageToPopularity :: Map PackageName Int
Documentation
An operator name.
data FixityDirection Source #
Fixity direction.
Instances
data FixityInfo Source #
Fixity information about an infix operator that takes the uncertainty that can arise from conflicting definitions into account.
Constructors
FixityInfo | |
Fields
|
Instances
Semigroup FixityInfo Source # | Gives the ability to merge two (maybe conflicting) definitions for an operator, keeping the higher level of compatible information from both. |
Defined in Ormolu.Fixity.Internal Methods (<>) :: FixityInfo -> FixityInfo -> FixityInfo sconcat :: NonEmpty FixityInfo -> FixityInfo stimes :: Integral b => b -> FixityInfo -> FixityInfo | |
Generic FixityInfo Source # | |
Defined in Ormolu.Fixity.Internal Associated Types type Rep FixityInfo :: Type -> Type | |
Show FixityInfo Source # | |
Defined in Ormolu.Fixity.Internal Methods showsPrec :: Int -> FixityInfo -> ShowS show :: FixityInfo -> String showList :: [FixityInfo] -> ShowS | |
Binary FixityInfo Source # | |
Defined in Ormolu.Fixity.Internal | |
Eq FixityInfo Source # | |
Defined in Ormolu.Fixity.Internal | |
Ord FixityInfo Source # | |
Defined in Ormolu.Fixity.Internal Methods compare :: FixityInfo -> FixityInfo -> Ordering (<) :: FixityInfo -> FixityInfo -> Bool (<=) :: FixityInfo -> FixityInfo -> Bool (>) :: FixityInfo -> FixityInfo -> Bool (>=) :: FixityInfo -> FixityInfo -> Bool max :: FixityInfo -> FixityInfo -> FixityInfo min :: FixityInfo -> FixityInfo -> FixityInfo | |
type Rep FixityInfo Source # | |
Defined in Ormolu.Fixity.Internal type Rep FixityInfo = D1 ('MetaData "FixityInfo" "Ormolu.Fixity.Internal" "ormolu-0.5.3.0-LSqmAwaUDYM2znHf8JMYPC" 'False) (C1 ('MetaCons "FixityInfo" 'PrefixI 'True) (S1 ('MetaSel ('Just "fiDirection") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe FixityDirection)) :*: (S1 ('MetaSel ('Just "fiMinPrecedence") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Int) :*: S1 ('MetaSel ('Just "fiMaxPrecedence") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Int)))) |
type FixityMap = Map OpName FixityInfo Source #
Map from the operator name to its FixityInfo
.
data LazyFixityMap Source #
Instances
Show LazyFixityMap Source # | |
Defined in Ormolu.Fixity.Internal Methods showsPrec :: Int -> LazyFixityMap -> ShowS show :: LazyFixityMap -> String showList :: [LazyFixityMap] -> ShowS |
lookupFixity :: OpName -> LazyFixityMap -> Maybe FixityInfo Source #
Lookup a FixityInfo
of an operator. This might have drastically
different performance depending on whether this is an "unusual" operator.
data HackageInfo Source #
The map of operators declared by each package and the popularity of each package, if available.
Constructors
HackageInfo | |
Fields
|
Instances
Generic HackageInfo Source # | |
Defined in Ormolu.Fixity.Internal Associated Types type Rep HackageInfo :: Type -> Type | |
Binary HackageInfo Source # | |
Defined in Ormolu.Fixity.Internal | |
type Rep HackageInfo Source # | |
Defined in Ormolu.Fixity.Internal type Rep HackageInfo = D1 ('MetaData "HackageInfo" "Ormolu.Fixity.Internal" "ormolu-0.5.3.0-LSqmAwaUDYM2znHf8JMYPC" 'False) (C1 ('MetaCons "HackageInfo" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Map PackageName FixityMap)) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Map PackageName Int)))) |
defaultStrategyThreshold :: Float Source #
The default value for the popularity ratio threshold, after which a very popular definition from packageToOps will completely rule out conflicting definitions instead of being merged with them.
defaultFixityInfo :: FixityInfo Source #
The lowest level of information we can have about an operator.
Arguments
:: Float | Popularity ratio threshold, after which a very popular package will completely rule out conflicting definitions coming from other packages instead of being merged with them |
-> Set PackageName | Explicitly known dependencies |
-> LazyFixityMap | Resulting map |
Build a fixity map using the given popularity threshold and a list of cabal dependencies. Dependencies from the list have higher priority than other packages.
Arguments
:: Map PackageName FixityMap | Map from package to fixity map for operators defined in this package |
-> Map PackageName Int | Map from package to popularity |
-> Set PackageName | Higher priority packages |
-> Float | Popularity ratio threshold, after which a very popular package will completely rule out conflicting definitions coming from other packages instead of being merged with them |
-> Set PackageName | Explicitly known dependencies |
-> LazyFixityMap | Resulting map |
Build a fixity map using the given popularity threshold and a list of cabal dependencies. Dependencies from the list have higher priority than other packages. This specific version of the function allows the user to specify the package databases used to build the final fixity map.
bootPackages :: Set PackageName Source #
List of packages shipped with GHC, for which the download count from Hackage does not reflect their high popularity. See https://github.com/tweag/ormolu/pull/830#issuecomment-986609572. "base" is not is this list, because it is already whitelisted by buildFixityMap'.
packageToOps :: Map PackageName FixityMap Source #
packageToPopularity :: Map PackageName Int Source #