, rrImps ∷ !Imports
}
+-- |@'insert' imp@ merges @imp@ with an existing one if any.
instance Unfoldable Imports ImportOp where
insert qi@(QualifiedImp {}) (Imports s) = Imports $ insert qi s
insert ui@(UnqualifiedImp {}) (Imports s)
(_ , Nothing ) → ui'
(Just ns, Just ns') → ui { impNames = Just (ns ⊕ ns') }
+ empty = Imports empty
+ singleton = Imports ∘ singleton
+
+-- FIXME: auto-derive
instance Foldable Imports ImportOp where
foldr f b (Imports s) = foldr f b s
+-- FIXME: auto-derive
instance Collection Imports ImportOp where
filter f (Imports s) = Imports $ filter f s
instance Monoid Imports where
- mempty = empty
- mappend (Imports α) (Imports β)
- = Imports $ insertManySorted β α
+ mempty = empty
+ mappend = insertMany
+-- FIXME: auto-derive
instance Map Imports ImportOp () where
lookup k (Imports s) = lookup k s
mapWithKey f (Imports m)
isProperSubmapBy f (Imports α) (Imports β)
= isProperSubmapBy f α β
+-- FIXME: auto-derive
instance Set Imports ImportOp where
haddock_candy = haddock_candy
+-- FIXME: auto-derive
instance SortingCollection Imports ImportOp where
minView (Imports s) = second Imports <$> minView s
unqualify ∷ Name → String → RewriteRule
unqualify (Name o _) m
= let pat = NamePat Nothing (Just o)
- iop = UnqualifiedImp (mkModName m)
- $ Just
+ iop = UnqualifiedImp (mkModName m) ∘ Just
$ singleton (VarName, o)
in
RewriteRule pat Unqualify (singleton iop)
unqualifyIn ∷ Name → Name → String → RewriteRule
unqualifyIn (Name name _) (Name tycl _) m
= let pat = NamePat Nothing (Just name)
- iop = UnqualifiedImp (mkModName m)
- $ Just
+ iop = UnqualifiedImp (mkModName m) ∘ Just
$ singleton (TcClsName, tycl)
in
RewriteRule pat Unqualify (singleton iop)