module Data.Aeson.Schema.Utils.Invariant (
  unreachable,
) where

{- | An error function to indicate that a branch is unreachable. Provides a useful error message
 if it ends up happening, pointing users to write a bug report.
-}
unreachable :: String -> a
unreachable :: String -> a
unreachable String
msg =
  String -> a
forall a. HasCallStack => String -> a
error (String -> a) -> String -> a
forall a b. (a -> b) -> a -> b
$
    [String] -> String
unlines
      [ String
"`aeson-schemas` internal error: " String -> String -> String
forall a. [a] -> [a] -> [a]
++ String
msg
      , String
"Please file a bug report at https://github.com/LeapYear/aeson-schemas/issues/"
      ]