{-# LANGUAGE CPP #-} #ifdef HAS_BOTH_AESON_AND_BENCHMARKS {-# LANGUAGE PackageImports #-} #endif {-# OPTIONS_GHC -fno-warn-unused-imports #-} module Typed.Common (load) where import Prelude () import Prelude.Compat import Data.ByteString.Lazy as L import System.Exit import System.IO #ifndef HAS_BOTH_AESON_AND_BENCHMARKS import Data.Aeson hiding (Result) #else import "aeson" Data.Aeson hiding (Result) import qualified "aeson-benchmarks" Data.Aeson as B #endif load :: FromJSON a => FilePath -> IO a load fileName = do mv <- eitherDecode' <$> L.readFile fileName case mv of Right v -> return v Left err -> do hPutStrLn stderr $ fileName ++ ": JSON decode failed - " ++ err exitWith (ExitFailure 1)