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
" - " String -> String -> String
forall a. [a] -> [a] -> [a]
++ a -> String
forall a. Show a => a -> String
show a
x
a
x : [a]
xs -> String
"s - " String -> String -> String
forall a. [a] -> [a] -> [a]
++ (String -> a -> String) -> String -> [a] -> String
forall (t :: * -> *) b a.
Foldable t =>
(b -> a -> b) -> b -> t a -> b
foldl' (\String
acc a
y -> String
acc String -> String -> String
forall a. [a] -> [a] -> [a]
++ String
", " String -> String -> String
forall a. [a] -> [a] -> [a]
++ a -> String
forall a. Show a => a -> String
show a
y) (a -> String
forall a. Show a => a -> String
show a
x) [a]
xs
in String
funcName String -> String -> String
forall a. [a] -> [a] -> [a]
++ String
" : invalid argument" String -> String -> String
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 = String -> Either String b
forall a b. a -> Either a b
Left (String -> Either String b) -> String -> Either String b
forall a b. (a -> b) -> a -> b
$ String -> [a] -> String
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 = String -> b
forall a. HasCallStack => String -> a
error (String -> b) -> String -> b
forall a b. (a -> b) -> a -> b
$ String -> [a] -> String
forall a. Show a => String -> [a] -> String
genError String
funcName [a]
args