testFullError :: SpecWith ()
testFullError = test s "FullError" input output
  where
    s :: Syntactic '[TmApp, TmBool, TmLam2, TyTop, TyBot, TmError, TmTry, TyBool, TmVar]
    s = crep
    input = [
      "\\x:Top.if error then (try x with true) else false",
      "error true",
      "(\\x:Bool.x) error"]
    output = [
      "\\x:Top.(if error then try x with true else false)",
      "(error true)",
      "(\\x:Bool.x error)"]
testFullError :: SpecWith ()
testFullError = test s "FullError" input output
  where
    s :: Syntactic '[TmApp, TmBool, TmLam2, TyTop, TyBot, TmError, TmTry, TyBool, TmVar]
    s = crep
    input = [
      "\\x:Top.if error then (try x with true) else false",
      "error true",
      "(\\x:Bool.x) error"]
    output = [
      "\\x:Top.(if error then try x with true else false)",
      "(error true)",
      "(\\x:Bool.x error)"]
testFullError = test s "FullError" input output
  where
    s :: Syntactic '[TmApp, TmBool, TmLam2, TyTop, TyBot, TmError, TmTry, TyBool, TmVar]
    s = crep
    input = [
      "\\x:Top.if error then (try x with true) else false",
      "error true",
      "(\\x:Bool.x) error"]
    output = [
      "\\x:Top.(if error then try x with true else false)",
      "(error true)",
      "(\\x:Bool.x error)"]