packages feed

tilia-0.1.1.0: corpora/vendored/other/cpp/guard-head-in-each-branch-out.hs

{-# LANGUAGE CPP #-}
{-# LANGUAGE MagicHash #-}
{-# LANGUAGE UnboxedTuples #-}

module FlatParse.Common.Numbers (anyDigit, report) where

anyDigit :: Word# -> Addr# -> Result
anyDigit acc s = case indexWord8OffAddr# s 0# of
#if MIN_VERSION_base(4,16,0)
  w
    | 1# <- leWord8# (wordToWord8# 0x30##) w,
      1# <- leWord8# w (wordToWord8# 0x39##) -> case timesWord2# acc 10## of
#else
  w
    | 1# <- leWord# 0x30## w,
      1# <- leWord# w 0x39## -> case timesWord2# acc 10## of
#endif
        (# 0##, r #) -> OK r
        _ -> Overflow
  _ -> Fail

report :: Handle -> Status -> IO ()
report h status
#ifdef mingw32_HOST_OS
  | isFailure status = do
      hPutStrLn h "failed"
#else
  | isFailure status,
    colour = do
      hPutStrLn h "\ESC[31mfailed\ESC[0m"
#endif
      hFlush h
  | otherwise = pure ()