{-# LANGUAGE CPP #-} module CodeGen.Prelude ( module X , impossible , tshow , tputStrLn , anySingleBut ) where import Prelude as X import Control.Monad as X (guard, void) import Control.Monad.IO.Class as X (liftIO) import Data.Char as X (toLower) import Data.Either as X (either) import Data.Foldable as X (asum) import Data.Hashable as X (Hashable) import Data.HashMap.Strict as X (HashMap) import Data.HashSet as X (HashSet) import Data.List as X (nub, intercalate) import Data.Maybe as X (fromMaybe, mapMaybe, catMaybes, isJust, Maybe) import Data.Monoid as X ((<>)) import Data.Text as X (Text) import Data.Void as X (Void) import Debug.Trace as X import Text.Megaparsec as X (ParseError, runParser, Parsec, ParsecT, (<|>), choice, lookAhead, try, some, skipMany, optional, eof, many, atEnd) import Text.Megaparsec.Char as X import GHC.Exts as X (IsString(..)) import GHC.Generics as X (Generic) import qualified Data.Text as T import Text.Megaparsec (Token, MonadParsec) import qualified Text.Megaparsec as Compat.Megaparsec import qualified Text.Megaparsec.Char as Compat.Megaparsec impossible :: Show msg => msg -> a impossible x = error (show x) tshow :: Show t => t -> Text tshow = T.pack . show tputStrLn :: Text -> IO () tputStrLn = putStrLn . T.unpack #if MIN_VERSION_megaparsec(7,0,0) anySingleBut :: MonadParsec e s m => Token s -> m (Token s) anySingleBut = Compat.Megaparsec.anySingleBut #else anySingleBut :: MonadParsec e s m => Token s -> m (Token s) anySingleBut = Compat.Megaparsec.notChar #endif