module Language.Fortran.Vars.Errors
( invalidArg'
, invalidArg
)
where
import Data.List ( foldl' )
genError :: Show a => String -> [a] -> String
genError :: forall a. Show a => String -> [a] -> String
genError String
funcName [a]
args =
let
argMsg :: String
argMsg = case [a]
args of
[] -> String
""
[ a
x ] -> String
" - " forall a. [a] -> [a] -> [a]
++ forall a. Show a => a -> String
show a
x
a
x : [a]
xs -> String
"s - " forall a. [a] -> [a] -> [a]
++ forall (t :: * -> *) b a.
Foldable t =>
(b -> a -> b) -> b -> t a -> b
foldl' (\String
acc a
y -> String
acc forall a. [a] -> [a] -> [a]
++ String
", " forall a. [a] -> [a] -> [a]
++ forall a. Show a => a -> String
show a
y) (forall a. Show a => a -> String
show a
x) [a]
xs
in String
funcName forall a. [a] -> [a] -> [a]
++ String
" : invalid argument" forall a. [a] -> [a] -> [a]
++ String
argMsg
invalidArg' :: Show a => String -> [a] -> Either String b
invalidArg' :: forall a b. Show a => String -> [a] -> Either String b
invalidArg' String
funcName [a]
args = forall a b. a -> Either a b
Left forall a b. (a -> b) -> a -> b
$ forall a. Show a => String -> [a] -> String
genError String
funcName [a]
args
invalidArg :: Show a => String -> [a] -> b
invalidArg :: forall a b. Show a => String -> [a] -> b
invalidArg String
funcName [a]
args = forall a. HasCallStack => String -> a
error forall a b. (a -> b) -> a -> b
$ forall a. Show a => String -> [a] -> String
genError String
funcName [a]
args