module HIndent.Pretty.Combinators.Op
( unlessSpecialOp
) where
import Control.Monad
import GHC.Types.Name
import GHC.Types.Name.Reader
import HIndent.Printer
unlessSpecialOp :: RdrName -> Printer () -> Printer ()
unlessSpecialOp :: RdrName -> Printer () -> Printer ()
unlessSpecialOp RdrName
name = Bool -> Printer () -> Printer ()
forall (f :: * -> *). Applicative f => Bool -> f () -> f ()
unless (RdrName -> Bool
isSpecialOp RdrName
name)
isSpecialOp :: RdrName -> Bool
isSpecialOp :: RdrName -> Bool
isSpecialOp (Unqual OccName
name) = String -> Bool
isSpecialOpString (String -> Bool) -> String -> Bool
forall a b. (a -> b) -> a -> b
$ OccName -> String
occNameString OccName
name
isSpecialOp Qual {} = Bool
False
isSpecialOp Orig {} = String -> Bool
forall a. HasCallStack => String -> a
error String
"This node is never used in the parsed stage."
isSpecialOp (Exact Name
name) = String -> Bool
isSpecialOpString (String -> Bool) -> String -> Bool
forall a b. (a -> b) -> a -> b
$ OccName -> String
occNameString (OccName -> String) -> OccName -> String
forall a b. (a -> b) -> a -> b
$ Name -> OccName
nameOccName Name
name
isSpecialOpString :: String -> Bool
isSpecialOpString :: String -> Bool
isSpecialOpString String
name = String
name String -> [String] -> Bool
forall a. Eq a => a -> [a] -> Bool
forall (t :: * -> *) a. (Foldable t, Eq a) => a -> t a -> Bool
`elem` [String
"()", String
"[]", String
"->", String
":"]