From c8fac0a6665c2058061cfb58c57226e9de1bed8a Mon Sep 17 00:00:00 2001 From: gnumonik Date: Thu, 18 Apr 2024 20:42:26 -0400 Subject: [PATCH] Guard/case desugaring w/ correct types --- npm-package/.gitignore | 2 - npm-package/LICENSE | 6 - npm-package/README.md | 62 --- npm-package/index.js | 1 - npm-package/package.json | 49 -- npm-package/purs.bin.placeholder | 7 - src/Language/PureScript/CoreFn/Desugar.hs | 50 +- src/Language/PureScript/CoreFn/Pretty/Expr.hs | 9 +- .../PureScript/CoreFn/Pretty/Types.hs | 4 +- .../PureScript/Sugar/CaseDeclarations.hs | 34 +- .../passing/4310/output/Lib/index.cfn.pretty | 20 +- .../output/ForeignKinds.Lib/index.cfn.pretty | 8 +- .../passing/Import/output/M2/index.cfn.pretty | 2 +- tests/purus/passing/Misc/Lib.purs | 11 +- .../passing/Misc/output/Lib/externs.cbor | Bin 0 -> 32952 bytes .../passing/Misc/output/Lib/fakeminus.plc | 1 + tests/purus/passing/Misc/output/Lib/index.cfn | 1 + .../passing/Misc/output/Lib/index.cfn.pretty | 426 ++++++++++++++++++ tests/purus/passing/Misc/output/Lib/main.plc | 1 + tests/purus/passing/Misc/output/cache-db.json | 2 +- .../output/Main/index.cfn.pretty | 2 +- .../output/M1/index.cfn.pretty | 2 +- .../output/Main/index.cfn.pretty | 2 +- .../output/Main/index.cfn.pretty | 4 +- .../output/Middle/index.cfn.pretty | 4 +- .../output/Test/index.cfn.pretty | 5 +- 26 files changed, 539 insertions(+), 176 deletions(-) delete mode 100644 npm-package/.gitignore delete mode 100644 npm-package/LICENSE delete mode 100644 npm-package/README.md delete mode 100644 npm-package/index.js delete mode 100644 npm-package/package.json delete mode 100755 npm-package/purs.bin.placeholder create mode 100644 tests/purus/passing/Misc/output/Lib/externs.cbor create mode 100644 tests/purus/passing/Misc/output/Lib/fakeminus.plc create mode 100644 tests/purus/passing/Misc/output/Lib/index.cfn create mode 100644 tests/purus/passing/Misc/output/Lib/index.cfn.pretty create mode 100644 tests/purus/passing/Misc/output/Lib/main.plc diff --git a/npm-package/.gitignore b/npm-package/.gitignore deleted file mode 100644 index 059fb4c54..000000000 --- a/npm-package/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -purs.bin -package-lock.json diff --git a/npm-package/LICENSE b/npm-package/LICENSE deleted file mode 100644 index d99869e6a..000000000 --- a/npm-package/LICENSE +++ /dev/null @@ -1,6 +0,0 @@ -ISC License (ISC) -Copyright 2017 - 2019 Watanabe Shinnosuke - -Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted, provided that the above copyright notice and this permission notice appear in all copies. - -THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. diff --git a/npm-package/README.md b/npm-package/README.md deleted file mode 100644 index de5495598..000000000 --- a/npm-package/README.md +++ /dev/null @@ -1,62 +0,0 @@ -# PureScript npm package - -[![npm version](http://img.shields.io/npm/v/purescript.svg)](https://www.npmjs.com/package/purescript) -[![Build Status](https://travis-ci.org/purescript-contrib/node-purescript.svg?branch=master)](https://travis-ci.org/purescript-contrib/node-purescript) - -[PureScript](https://github.com/purescript/purescript) binary wrapper that makes it seamlessly available via [npm](https://www.npmjs.com/) - -## Prerequisites - -This package makes maximum use of `postinstall` [script](https://docs.npmjs.com/misc/scripts), so please make sure that [`ignore-scripts` npm-config](https://docs.npmjs.com/misc/config#ignore-scripts) is not enabled before installation. - -```console -$ npm config get ignore-scripts -false -``` - -## Installation - -[Use](https://docs.npmjs.com/cli/install) [npm](https://docs.npmjs.com/about-npm/). - -``` -npm install purescript -``` - -Once the command above is executed, - -__1.__ First, it checks if a PureScript binary has been already cached, and restores that if available. - -__2.__ The second plan: if no cache is available, it downloads a prebuilt binary from [the PureScript release page](https://github.com/purescript/purescript/releases). - -__3.__ The last resort: if no prebuilt binary is provided for your platform or the downloaded binary doesn't work correctly, it downloads [the PureScript source code](https://github.com/purescript/purescript/tree/master) and compile it with [Stack](https://docs.haskellstack.org/). - -## API - -### `require('purescript')` - -Type: `string` - -An absolute path to the installed PureScript binary, which can be used with [`child_process`](https://nodejs.org/api/child_process.html) functions. - -```javascript -const {execFile} = require('child_process'); -const purs = require('purescript'); //=> '/Users/you/example/node_modules/purescript/purs.bin' - -execFile(purs, ['compile', 'input.purs', '--output', 'output.purs'], () => { - console.log('Compiled.'); -}); -``` - -## CLI - -You can use it via CLI by installing it [globally](https://docs.npmjs.com/files/folders#global-installation). - -``` -npm install --global purescript - -purs --help -``` - -## License - -[ISC License](./LICENSE) © 2017 - 2019 Watanabe Shinnosuke diff --git a/npm-package/index.js b/npm-package/index.js deleted file mode 100644 index b4fec3cf5..000000000 --- a/npm-package/index.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require.resolve('./purs.bin'); diff --git a/npm-package/package.json b/npm-package/package.json deleted file mode 100644 index b24866695..000000000 --- a/npm-package/package.json +++ /dev/null @@ -1,49 +0,0 @@ -{ - "name": "purescript", - "version": "0.15.13", - "license": "ISC", - "description": "PureScript wrapper that makes it available as a local dependency", - "author": { - "name": "Watanabe Shinnosuke", - "url": "http://github.com/shinnn" - }, - "files": [ - "index.js", - "purs.bin" - ], - "bin": { - "purs": "purs.bin" - }, - "dependencies": { - "purescript-installer": "^0.3.5" - }, - "homepage": "https://github.com/purescript/purescript", - "repository": { - "type": "git", - "url": "git+https://github.com/purescript/purescript.git" - }, - "bugs": { - "url": "https://github.com/purescript/npm-installer/issues" - }, - "keywords": [ - "cli", - "build", - "install", - "installation", - "fallback", - "purs", - "purescript", - "haskell", - "language", - "compile", - "compiler", - "bin", - "binary", - "wrapper" - ], - "scripts": { - "prepublishOnly": "node -e \"require('fs').copyFileSync('purs.bin.placeholder', 'purs.bin');\"", - "postinstall": "install-purescript --purs-ver=0.15.13", - "test": "echo 'Error: no test specified' && exit 1" - } -} diff --git a/npm-package/purs.bin.placeholder b/npm-package/purs.bin.placeholder deleted file mode 100755 index ca25a635f..000000000 --- a/npm-package/purs.bin.placeholder +++ /dev/null @@ -1,7 +0,0 @@ -# This is a placeholder file of a PureScript binary installed with npm. If you -# see this file, that means the installation has failed and the placeholder has -# not been replaced with a valid binary. Try installing the `purescript` npm -# package again. - -echo >&2 "purescript npm installer: installation failed; please try installing again" -exit 1 diff --git a/src/Language/PureScript/CoreFn/Desugar.hs b/src/Language/PureScript/CoreFn/Desugar.hs index ae3010c2d..9051bc7ac 100644 --- a/src/Language/PureScript/CoreFn/Desugar.hs +++ b/src/Language/PureScript/CoreFn/Desugar.hs @@ -391,16 +391,25 @@ exprToCoreFn mn ss mTy app@(A.App fun arg) -- Dunno what to do here. Haven't encountered an Unused so far, will need to see one to figure out how to handle them exprToCoreFn _ _ _ (A.Unused _) = -- ????? need to figure out what this _is_ error "Don't know what to do w/ exprToCoreFn A.Unused" --- Variables should *always* be bound & typed in the Environment before we encounter them. + +exprToCoreFn _ _ (Just ty) (A.Var ss ident@(Qualified _ (GenIdent _ _))) = wrapTrace ("exprToCoreFn VAR (gen) " <> show ident) $ + gets checkEnv >>= \env -> + pure $ Var (ss, [], getValueMeta env ident) (purusTy ty) ident +-- Non-generated Variables should *always* be bound & typed in the Environment before we encounter them. -- NOTE: Not sure if we should ignore a type passed in? Generally we shouldn't *pass* types here, but bind variables exprToCoreFn _ _ _ (A.Var ss ident) = wrapTrace ("exprToCoreFn VAR " <> show ident) $ gets checkEnv >>= \env -> case lookupValue env ident of Just (ty,_,_) -> pure $ Var (ss, [], getValueMeta env ident) (purusTy ty) ident Nothing -> lookupDictType ident >>= \case Just ty -> pure $ Var (ss, [], getValueMeta env ident) (purusTy ty) ident - Nothing -> do - traceM $ "No known type for identifier " <> show ident - error "boom" + Nothing -> internalError $ "No known type for identifier " <> show ident + +exprToCoreFn _ _ mty expr@(A.Var ss ident) = internalError + $ "Internal compiler error (exprToCoreFn var fail): Cannot synthesize type for var " + <> show expr + <> "\nSupplied type: " + <> show (ppType 100 <$> mty) + -- If-Then-Else Turns into a case expression exprToCoreFn mn ss (Just resT) (A.IfThenElse cond th el) = wrapTrace "exprToCoreFn IFTE" $ do condE <- exprToCoreFn mn ss (Just tyBoolean) cond @@ -421,13 +430,44 @@ exprToCoreFn _ _ (Just ctorTy) (A.Constructor ss name) = wrapTrace ("exprToCore exprToCoreFn _ _ Nothing ctor@(A.Constructor _ _) = internalError $ "Error while desugaring Constructor expression. No type provided for:\n" <> renderValue 100 ctor --- Case expressions +{- Case Expressions + + For ordinary case expressions (i.e. those not generated by the compiler during guard desugaring), + the type can be determined by the type of a top-level declaration or + explicit type annotation (which may be either supplied by the user or inferred by the + PS typechecker) and therefore should be passed explicitly. + + For compiler-generated case expressions (specifically: those generated during case/guard desugaring - + some get generated during typeclass desugaring but we have special machinery to ensure that + those types can be synthesized), we cannot be sure that the whole case expression has an explicit + type annotation, so we try to deduce the type from the types of the alternative branches. + + NOTE: This is kind of a hack to let us reuse (rather than rewrite) the existing case + desugaring machinery. In order to correctly type the generated `let` bindings + (see Language.PureScript.Sugar.CaseDeclarations), we must manually construct a polymorphic + type that the PS typechecker cannot infer or deduce. We cannot construct such a type without + the initial PS typechecker pass. We could write two nearly-identical versions of the + case desugaring machinery and try to run the typechecker twice, but that adds a lot of + complexity (machinery is complicated) and would not be good for performance (typechecking + and inference have bad complexity). + +-} exprToCoreFn mn ss (Just caseTy) astCase@(A.Case vs alts) = wrapTrace "exprToCoreFn CASE" $ do traceM $ "CASE:\n" <> renderValue 100 astCase traceM $ "CASE TY:\n" <> show (ppType 100 caseTy) (vs',ts) <- unzip <$> traverse (exprToCoreFn mn ss Nothing >=> (\ e -> pure (e, exprType e))) vs -- extract type information for the *scrutinees* alts' <- traverse (altToCoreFn mn ss caseTy ts) alts -- see explanation in altToCoreFn. We pass in the types of the scrutinee(s) pure $ Case (ssA ss) (purusTy caseTy) vs' alts' +exprToCoreFn mn ss Nothing astCase@(A.Case vs alts@(alt:_)) = wrapTrace "exprToCoreFn CASE (no type)" $ do + case alt of + A.CaseAlternative _ (A.GuardedExpr _ body1:_) -> do + caseTy <- exprType <$> exprToCoreFn mn ss Nothing body1 + traceM $ "CASE:\n" <> renderValue 100 astCase + traceM $ "CASE TY:\n" <> show (ppType 100 caseTy) + (vs',ts) <- unzip <$> traverse (exprToCoreFn mn ss Nothing >=> (\ e -> pure (e, exprType e))) vs -- extract type information for the *scrutinees* + alts' <- traverse (altToCoreFn mn ss caseTy ts) alts -- see explanation in altToCoreFn. We pass in the types of the scrutinee(s) + pure $ Case (ssA ss) (purusTy caseTy) vs' alts' + _ -> internalError $ "Error while desugaring Case expression. Could not synthesize type of: " <> renderValue 100 astCase exprToCoreFn _ _ Nothing astCase@(A.Case _ _) = internalError $ "Error while desugaring Case expression. No type provided for:\n" <> renderValue 100 astCase diff --git a/src/Language/PureScript/CoreFn/Pretty/Expr.hs b/src/Language/PureScript/CoreFn/Pretty/Expr.hs index 716418c34..0a8356715 100644 --- a/src/Language/PureScript/CoreFn/Pretty/Expr.hs +++ b/src/Language/PureScript/CoreFn/Pretty/Expr.hs @@ -124,8 +124,9 @@ prettyValue (ObjectUpdate _ _ty o _copyFields ps) = do prettyValue app@(App _ t1 t2) = case analyzeApp app of Just (fun,args) -> do atom <- fmtSep =<< traverse prettyValueAtom (fun:args) - ty <- prettyType $ appType t1 t2 - pure . group . align $ parens (atom <:> ty) + pure . group . align $ atom + -- ty <- prettyType $ appType t1 t2 + -- pure . group . align $ parens (atom <:> ty) {- TODO: change back ask >>= \case OneLine -> pure . group . align . hsep . map (asOneLine prettyValueAtom) $ (fun:args) @@ -170,8 +171,8 @@ prettyValueAtom (Var _ ty ident) = prettyType ty >>= \ty' -> pure . parens $ pretty (showIdent (disqualify ident)) <:> ty' prettyValueAtom expr = do -- TODO change this back (need more anns for testing) v <- prettyValue expr - t <- prettyType (exprType expr) - pure $ parens (v <:> t) + -- t <- prettyType (exprType expr) + pure $ parens v -- <:> t) prettyLiteralValue :: Literal (Expr a) -> Printer ann prettyLiteralValue (NumericLiteral n) = ignoreFmt $ pretty $ either show show n diff --git a/src/Language/PureScript/CoreFn/Pretty/Types.hs b/src/Language/PureScript/CoreFn/Pretty/Types.hs index 0ce7a3c89..eae290145 100644 --- a/src/Language/PureScript/CoreFn/Pretty/Types.hs +++ b/src/Language/PureScript/CoreFn/Pretty/Types.hs @@ -72,7 +72,7 @@ prettyType t = group <$> case t of ConstrainedType _ _ _ -> error "TODO: ConstrainedType (shouldn't ever appear in Purus CoreFn)" - Skolem _ _ _ _ _ -> error "TODO: Skolem (shouldn't ever appear in Purus CoreFn)" + Skolem _ var _ i _ -> pure $ pretty var <> "#" <> pretty i REmpty _ -> pure "{}" @@ -142,7 +142,7 @@ prettyType t = group <$> case t of REmpty _ -> pure $ Right [] KindApp _ REmpty{} _ -> pure $ Right [] -- REmpty is sometimes wrapped in a kind app TypeVar _ txt -> pure $ Left ([],pretty txt) - other -> error $ "Malformed row fields: \n" <> prettyTypeStr other + other -> Right . pure <$> prettyType other -- error $ "Malformed row fields: \n" <> prettyTypeStr other -- TODO For debugging, remove later diff --git a/src/Language/PureScript/Sugar/CaseDeclarations.hs b/src/Language/PureScript/Sugar/CaseDeclarations.hs index 303bf5039..1d2d0e4c8 100644 --- a/src/Language/PureScript/Sugar/CaseDeclarations.hs +++ b/src/Language/PureScript/Sugar/CaseDeclarations.hs @@ -17,15 +17,17 @@ import Data.Maybe (catMaybes, mapMaybe) import Control.Monad ((<=<), forM, replicateM, join, unless) import Control.Monad.Error.Class (MonadError(..)) -import Control.Monad.Supply.Class (MonadSupply) +import Control.Monad.Supply.Class (MonadSupply, freshName) import Language.PureScript.AST import Language.PureScript.Crash (internalError) -import Language.PureScript.Environment (NameKind(..)) +import Language.PureScript.Environment (NameKind(..), function) import Language.PureScript.Errors (ErrorMessage(..), MultipleErrors(..), SimpleErrorMessage(..), addHint, errorMessage', parU, rethrow, withPosition) -import Language.PureScript.Names (pattern ByNullSourcePos, Ident, Qualified(..), freshIdent') +import Language.PureScript.Names (pattern ByNullSourcePos, Ident(..), Qualified(..), freshIdent') import Language.PureScript.TypeChecker.Monad (guardWith) +import Debug.Trace +import Language.PureScript.Types (SourceType, Type (TypeVar), quantify) -- | -- Replace all top-level binders in a module with case expressions. -- @@ -64,8 +66,9 @@ desugarGuardedExprs ss (Case scrut alternatives) -- we may evaluate the scrutinee more than once when a guard occurs. -- We bind the scrutinee to Vars here to mitigate this case. (scrut', scrut_decls) <- unzip <$> forM scrut (\e -> do + let mkTyped ex = TypedValue False ex (unsafeExprType e) scrut_id <- freshIdent' - pure ( Var ss (Qualified ByNullSourcePos scrut_id) + pure ( mkTyped $ Var ss (Qualified ByNullSourcePos scrut_id) , ValueDecl (ss, []) scrut_id Private [] [MkUnguarded e] ) ) @@ -79,6 +82,8 @@ desugarGuardedExprs ss (Case scrut alternatives) isTrivialExpr (TypedValue _ e _) = isTrivialExpr e isTrivialExpr _ = False + + desugarGuardedExprs ss (Case scrut alternatives) = let -- Alternatives which do not have guards are @@ -177,6 +182,10 @@ desugarGuardedExprs ss (Case scrut alternatives) = alt_fail' n | all isIrrefutable vb = [] | otherwise = alt_fail n + eTy = unsafeExprType e + + mkType ex = TypedValue False ex eTy + -- we are here: -- @@ -187,7 +196,7 @@ desugarGuardedExprs ss (Case scrut alternatives) = -- in case scrut of -- we are here -- ... -- - in Case scrut + in mkType $ Case scrut (CaseAlternative vb [MkUnguarded (desugarGuard gs e alt_fail)] : alt_fail' (length scrut)) @@ -227,16 +236,23 @@ desugarGuardedExprs ss (Case scrut alternatives) = rem_case_id <- freshIdent' unused_binder <- freshIdent' + freshTyVar <- freshName + let + remTy = quantify $ function (TypeVar (ss,[]) freshTyVar) (unsafeExprType desugared) + mkType e = TypedValue False e remTy + goto_rem_case :: Expr - goto_rem_case = Var ss (Qualified ByNullSourcePos rem_case_id) + goto_rem_case = mkType (Var ss (Qualified ByNullSourcePos rem_case_id)) `App` Literal ss (BooleanLiteral True) alt_fail :: Int -> [CaseAlternative] alt_fail n = [CaseAlternative (replicate n NullBinder) [MkUnguarded goto_rem_case]] + + pure $ Let FromLet [ ValueDecl (ss, []) rem_case_id Private [] - [MkUnguarded (Abs (VarBinder ss unused_binder) desugared)] + [MkUnguarded $ mkType (Abs (VarBinder ss unused_binder ) desugared)] ] (mk_body alt_fail) | otherwise @@ -420,3 +436,7 @@ makeCaseDeclaration ss ident alternatives = do | a == b = Just a | otherwise = Nothing resolveName _ _ = Nothing + +unsafeExprType :: Expr -> SourceType +unsafeExprType (TypedValue _ _ t) = t +unsafeExprType other = error $ "INTERNAL ERROR: Expected a TypedValue during case desugaring but got: " <> show other diff --git a/tests/purus/passing/4310/output/Lib/index.cfn.pretty b/tests/purus/passing/4310/output/Lib/index.cfn.pretty index 7b70be8d3..d807163ae 100644 --- a/tests/purus/passing/4310/output/Lib/index.cfn.pretty +++ b/tests/purus/passing/4310/output/Lib/index.cfn.pretty @@ -22,10 +22,8 @@ Test$Dict = \(x: { runTest :: a -> String }) -> (x: { runTest :: a -> String }) testInt :: Test$Dict Int testInt = - ((Test$Dict: { runTest :: Int -> String } -> Test$Dict Int) - ({ runTest: \(v: Int) -> ("4": String) }: { - runTest :: Int -> String - }): Test$Dict Int) + (Test$Dict: { runTest :: Int -> String } -> Test$Dict Int) + ({ runTest: \(v: Int) -> ("4": String) }: { runTest :: Int -> String }) runTest :: forall (@a :: Type). Test$Dict a -> a -> String runTest = @@ -40,17 +38,17 @@ test/\ :: forall (a :: Type) (b :: Type). Test$Dict a -> Test$Dict b -> Test$Dic test/\ = \(dictTest: Test$Dict a) -> \(dictTest1: Test$Dict b) -> - ((Test$Dict: { runTest :: (Tuple a b) -> String } -> + (Test$Dict: { runTest :: (Tuple a b) -> String } -> Test$Dict (Tuple a b)) ({ runTest: \(v: (Tuple a b)) -> case (v: (Tuple a b)) of Tuple a b -> - ((mappend: String -> String -> String) - (((runTest: forall (@a :: Type). Test$Dict a -> a -> String) + (mappend: String -> String -> String) + ((runTest: forall (@a :: Type). Test$Dict a -> a -> String) (dictTest: Test$Dict a) - (a: a): String): String) - (((runTest: forall (@a :: Type). Test$Dict a -> a -> String) + (a: a)) + ((runTest: forall (@a :: Type). Test$Dict a -> a -> String) (dictTest1: Test$Dict b) - (b: b): String): String): String) - }: { runTest :: (Tuple a b) -> String }): Test$Dict (Tuple a b)) \ No newline at end of file + (b: b)) + }: { runTest :: (Tuple a b) -> String }) \ No newline at end of file diff --git a/tests/purus/passing/ForeignKind/output/ForeignKinds.Lib/index.cfn.pretty b/tests/purus/passing/ForeignKind/output/ForeignKinds.Lib/index.cfn.pretty index 46b1cc109..a864242b8 100644 --- a/tests/purus/passing/ForeignKind/output/ForeignKinds.Lib/index.cfn.pretty +++ b/tests/purus/passing/ForeignKind/output/ForeignKinds.Lib/index.cfn.pretty @@ -38,14 +38,14 @@ proxy0 = (NatProxy: NatProxy Zero) addNatZero :: ((AddNat$Dict Zero r) r) addNatZero = - ((AddNat$Dict: Record {}@Type -> ((AddNat$Dict Zero r) r)) - ({ }: Record {}@Type): ((AddNat$Dict Zero r) r)) + (AddNat$Dict: Record {}@Type -> ((AddNat$Dict Zero r) r)) + ({ }: Record {}@Type) addNatSucc :: forall (l :: Nat) (r :: Nat) (o :: Nat). ((AddNat$Dict l r) o) -> ((AddNat$Dict Succ l r) Succ o) addNatSucc = \($__unused: ((AddNat$Dict l r) o)) -> - ((AddNat$Dict: Record {}@Type -> ((AddNat$Dict Succ l r) Succ o)) - ({ }: Record {}@Type): ((AddNat$Dict Succ l r) Succ o)) + (AddNat$Dict: Record {}@Type -> ((AddNat$Dict Succ l r) Succ o)) + ({ }: Record {}@Type) addNat :: forall (l :: Nat) (r :: Nat) (o :: Nat). ((AddNat$Dict l r) o) -> NatProxy l -> NatProxy r -> NatProxy o addNat = diff --git a/tests/purus/passing/Import/output/M2/index.cfn.pretty b/tests/purus/passing/Import/output/M2/index.cfn.pretty index 0ac40f8b6..ef851f528 100644 --- a/tests/purus/passing/Import/output/M2/index.cfn.pretty +++ b/tests/purus/passing/Import/output/M2/index.cfn.pretty @@ -11,4 +11,4 @@ Foreign: Declarations: main :: forall (t1 :: Type). t1 -> Int -main = \(v: t1) -> ((foo: forall (a :: Type). a -> a) (42: Int): Int) \ No newline at end of file +main = \(v: t1) -> (foo: forall (a :: Type). a -> a) (42: Int) \ No newline at end of file diff --git a/tests/purus/passing/Misc/Lib.purs b/tests/purus/passing/Misc/Lib.purs index 50c31de5e..68bbaf146 100644 --- a/tests/purus/passing/Misc/Lib.purs +++ b/tests/purus/passing/Misc/Lib.purs @@ -172,10 +172,13 @@ infixr 5 plus as + main = plus 1 1 -guardedCase :: Int -> Int -guardedCase x = case x of - y | eq y 2 -> 2 - _ -> 0 +guardedCase :: Int -> Int -> Int +guardedCase w x = case w, x of + y, z | eq y 2 + , aPred y + , eq z 0 + , eq y nestedBinds -> 2 + _, _ -> 0 nestedApplications :: Int nestedApplications = i (f (g (h 2))) 4 diff --git a/tests/purus/passing/Misc/output/Lib/externs.cbor b/tests/purus/passing/Misc/output/Lib/externs.cbor new file mode 100644 index 0000000000000000000000000000000000000000..fbdc1f6133979467a1c58e78d5166f8f39a1a361 GIT binary patch literal 32952 zcmeGlO>bLO_L-rbLQ8?rl3So{pk*j+Nn?i~Kxm`_7y33LuP^nT@EGlKkznHz}oO9oO@80L<_MU6EL5w9n>?G&=4&9%R*d#f)uf_kHVZlzgk!hijGy;NB^_j#$FKL>v@4L`20 zd6~?bCw>>FI^KM6#Q`cGT*<9@d}0?|hy}}~O0(|3`_6Un8k)!Gv1?ZS6K#ewkR ze66|^R0x`{rThg@F5i+1Qrg`5V{E%De*=nozf>s%wTsQ=_GZVs{6V$yX{FKe7UYL| z$6JI??^mnkz^`e1z9qv@B+*S-$&5GbYZ0z?KO-OBYSlRixarp70!n)h@J=Dl9dhypK>l9QS{M|KPxpHjJN1Z7k7g$`2X_D4pfWi!+yQF>;N11 z7@sp^y`BVd<=w-`asI!GKtzd022+)&VOIY0-sApcR;5%6Od zK$%vXrE;U>V&=k18P@N|*~^lD#zDx!GORBSa7znKzg7qeANcja0lX&j@%fdNaw+d) zJh)_aSX*I9bRb`<&M*FRrQkPQcrUF~%hx`2q+E%BKldB?q66=N|79&GH~<#%Zdxt{ z%PWm*jtQ@VL@y`=F41IS$gS^L_m)s{BSF7#$etT_?@iT-bf&h$*|N4{0ue+Y{HKsLx;R=w+7{B%XUTgiY z@FS~IX73Yg-d^#70|bd+M`J(Gc&eodS&UXa5# z4%roQ9;JXwQASOCC7SVXHFR;>!SrjFcKUJ`CFsF4u+EoNdZY8$X4~r_&kGl>ocyqq zZ`kLqJghU5wd3+LvVS_y|S1uom2SjC&x-f$U8>}sv>!&Aoc zi3|9q2*j11y|KoNsNNmj`)620*Y}xTalrU$A7gvd^GC1OeJu9bb|(JZzx;-~#bIJ3 z5fh28gOgd54y+-@L1lA*phAR^V#YxgpT7(Uss}r%tkBeIoZNT%E$HSJ3b0Q1eteuZ z8k?O_tWdN*!ATLr+T*HBJ8o0a!pORRysE6%YW)|hGI<cQKMSrSz=;R z3YuaF?F`ypag$K@PKqOpPK1K6mw6HzKa+=tR2-2tyoRT^$>*h@3B_Tli#;CF*ri8O zpQp8DWPyn-&_~5Xf7^uFB?$WjMNl5IQ6P@uFbcE(6~Wm1T}($axVB2OJzzeVI29hbO+%W#3HQ_OIIan~2p zsHMk@y6Zct9?Za?kX@L_m9Y&IeHpF~GmvCI+L1)%&?{~N0Yyl>dTJ^E0S%sU6engy z|L@Ok9(oifTsQGG#gk%ON`FebC znl{`W2P|is(7#)X_r}&U4k76g9-OMKlbUX3h;#zayH6O^wQ4P3oo5a`r$m`C&*HT` zh@ogOdXvG&Y2@Sd(=BZc!eX_DXMS+j3Looo4{GQ2XQ0<5&Oi^yy2T{>C^Gpo-K}7Lhk)l)@)Q(ycQ~q;c_t$!{k}< zI#D{KE7-;56!lX)m&=N?p`>Xp7e6e+St@dv40B?NvsOqL<19t5nC$GG!_=M=$6In3 zr7GsdqWDOZU@WC93O$Bda^j^BRYEPaE4So^Vh8om!6^tX(6HQ6D-82S+EY#(bIyt* zpo>}YF2|k<=mp)c`4*iOFA(i_(oHJ9>M@qFS&Hge@eVr;&Wc%LV@{VQZkOAcc2;CV zSr|zr24eU_D!VR8MN!Z3lFF=jE0i=5JuOD~fSm}*yPWWefmrIoY>$4Su`9!;hvP=! zQ;F@q-8t?4EG~q0SFpjQm784X`&dZru2h4{J2#ooR5JmEumfGB!-TS^a*h*<;$(;<;cD~{tz8Ti$+AW0Qp(eftD-7u z+;fehfD80M8l%;zj=verS-?PeSk2iOh~a#xs?(aYkwf8*CHgXSXO@vfm7}pXD+*}r zo$=#|;Fo_M?@UREa=nUtRO`uOD%EeaO94(~(+rIT>9^i-66&JBL4!pY2w+5_0y;Td zLS3X>xG1K>Ja!rK7%Q1BiZjIgw9W@DNcilzT`~pop#m6ZvoR1$Ybo4n`Aat;4pQrG z@F=sGvhLU=IOmNcc8Qd@mq|nSibUR^n=4ZQ6A44k5vtoQIg@B*93CnQkqkGSEeP@D zSokRUl*MTsq1uCl7d*(zV6wQTlYB!*0wZDv$(y2MX&mBEvkF~NAtlJ|js*A9u(cRi zSH}04+Ls_zoLsCLqdcmr(yunPM_9voqFUN;C9)_lJhjKxggXL6^MLMrioNI#RL1Ua z6{TH;=x~8yc;)H@(lH*Nb}67GyK<~l^Ii@km<~|jL@9%|2rq)QH^%okOaHww<*G7) z#D~`JO1X^{GLki?lu?BErdq~HWEY36yW(y3pi-AA<*s;1 zXN5bc)Wrwwi9AE|F%U!dsqDsXZGRG}s2_nrB^J|1T_jaNEJ?An>54aX!$gvDT!W^e zyJ7}?;~HleyDLr;3r1^*?;EEG$qXmob%g?AX)J}^NMrP@k=`*oTIMpY+V!8G11LzWw8yc?`LFGK{xkpBi6 z@5a!^lcf8M$6*8wfdb!Gg>N!4;RdR3L%fHHu-0bieuK=pA)t|A@4gDi^ntIdS6Miw zh-IUL!p*=NG{uZ^vqZ)bR|I0Qi)U&Zuno~{7KOe8bvVo9C|t69N~g~6-*3>`vjOX+ zY@7R>zWoNR0SK&VfT{)it;q(>j&H!q@7Gx3V~3qAW^O8R)i`1%o;e2IpD=2E>W^e& z8G4I>@MlE$b1Fjl$^b@4-^A_vP1wD1A2hp(+2y8LlyC#c?GZDcs>~I^q zEw_zgJvM{A4~Qc$>W(Y0g5d~^4t{&s3*W?TBHeFlhRWd1HxfAEgXn+q=ZTwoaX*g|`34Q&s}Zl66k%%eTH0xKAfz%>7`CFICWc&OkKb6b+Q z@jxJLrR@D?i+Ud@bcz$Ey$Z)3^{>d?uaLk}Fw58DFl=)Nm&7~ZB=+wq6e~X79GCb-oQXybM${_`f-ggl&5E8xbTJVI)_8 z4&9v*sWA}8Y|1?~W}`?=zIn|)^nSx$h2w2%+;RgYPg3yfHy=twb(ng}ZMo4j() zKSyr-fxL!Sx&3Dk@-L@m;3_IuwdhTmaLc8=_w9!U)_!9-K}Gc1t#-%iG<$yrt^`bf zbEnQ8UbP7~zQM(ofIWP_A&XBjg$v)5F_}Xqv(F4uSf)*x#fe(6>;)E6gC&M{#91jV LgIB%(E>8Uqqtkha literal 0 HcmV?d00001 diff --git a/tests/purus/passing/Misc/output/Lib/fakeminus.plc b/tests/purus/passing/Misc/output/Lib/fakeminus.plc new file mode 100644 index 000000000..b128c4f50 --- /dev/null +++ b/tests/purus/passing/Misc/output/Lib/fakeminus.plc @@ -0,0 +1 @@ +Program {_progAnn = Original (), _progVer = Version {_versionMajor = 1, _versionMinor = 1, _versionPatch = 0}, _progTerm = LamAbs (Original ()) (Name {_nameText = "v", _nameUnique = Unique {unUnique = 86}}) (TyBuiltin (Original ()) (SomeTypeIn DefaultUniInteger)) (LamAbs (Original ()) (Name {_nameText = "v1", _nameUnique = Unique {unUnique = 87}}) (TyBuiltin (Original ()) (SomeTypeIn DefaultUniInteger)) (Constant (Original ()) (Some (ValueOf DefaultUniInteger 42))))} \ No newline at end of file diff --git a/tests/purus/passing/Misc/output/Lib/index.cfn b/tests/purus/passing/Misc/output/Lib/index.cfn new file mode 100644 index 000000000..f40375f3c --- /dev/null +++ b/tests/purus/passing/Misc/output/Lib/index.cfn @@ -0,0 +1 @@ +{"builtWith":"0.0.1","comments":[],"dataTypes":{"ADataRec":["data",[],[{"dataCtorAnn":[{"end":[104,25],"name":"tests/purus/passing/Misc/Lib.purs","start":[104,15]},[]],"dataCtorFields":[[{"Ident":"value0"},{"annotation":[{"end":[104,58],"name":"tests/purus/passing/Misc/Lib.purs","start":[104,26]},[]],"contents":[{"annotation":[{"end":[104,27],"name":"tests/purus/passing/Misc/Lib.purs","start":[104,26]},[]],"contents":[["Prim"],"Record"],"tag":"TypeConstructor"},{"annotation":[{"end":[104,39],"name":"tests/purus/passing/Misc/Lib.purs","start":[104,27]},[]],"contents":["hello",{"annotation":[{"end":[104,39],"name":"tests/purus/passing/Misc/Lib.purs","start":[104,36]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"},{"annotation":[{"end":[104,57],"name":"tests/purus/passing/Misc/Lib.purs","start":[104,41]},[]],"contents":["world",{"annotation":[{"end":[104,57],"name":"tests/purus/passing/Misc/Lib.purs","start":[104,50]},[]],"contents":[["Prim"],"Boolean"],"tag":"TypeConstructor"},{"annotation":[{"end":[104,58],"name":"tests/purus/passing/Misc/Lib.purs","start":[104,57]},[]],"tag":"REmpty"}],"tag":"RCons"}],"tag":"RCons"}],"tag":"TypeApp"}]],"dataCtorName":"ADataRec"}]],"ANewtypeRec":["newtype",[],[{"dataCtorAnn":[{"end":[106,47],"name":"tests/purus/passing/Misc/Lib.purs","start":[106,21]},[]],"dataCtorFields":[[{"Ident":"value0"},{"annotation":[{"end":[106,47],"name":"tests/purus/passing/Misc/Lib.purs","start":[106,35]},[]],"contents":[{"annotation":[{"end":[106,36],"name":"tests/purus/passing/Misc/Lib.purs","start":[106,35]},[]],"contents":[["Prim"],"Record"],"tag":"TypeConstructor"},{"annotation":[{"end":[106,46],"name":"tests/purus/passing/Misc/Lib.purs","start":[106,36]},[]],"contents":["foo",{"annotation":[{"end":[106,46],"name":"tests/purus/passing/Misc/Lib.purs","start":[106,43]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"},{"annotation":[{"end":[106,47],"name":"tests/purus/passing/Misc/Lib.purs","start":[106,46]},[]],"tag":"REmpty"}],"tag":"RCons"}],"tag":"TypeApp"}]],"dataCtorName":"ANewTypeRec"}]],"ASum":["data",[],[{"dataCtorAnn":[{"end":[108,20],"name":"tests/purus/passing/Misc/Lib.purs","start":[108,11]},[]],"dataCtorFields":[[{"Ident":"value0"},{"annotation":[{"end":[108,24],"name":"tests/purus/passing/Misc/Lib.purs","start":[108,21]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}]],"dataCtorName":"Constr1"},{"dataCtorAnn":[{"end":[108,34],"name":"tests/purus/passing/Misc/Lib.purs","start":[108,25]},[]],"dataCtorFields":[[{"Ident":"value0"},{"annotation":[{"end":[108,42],"name":"tests/purus/passing/Misc/Lib.purs","start":[108,35]},[]],"contents":[["Prim"],"Boolean"],"tag":"TypeConstructor"}]],"dataCtorName":"Constr2"}]],"Eq$Dict":["newtype",[["a",null]],[{"dataCtorAnn":[{"end":[6,26],"name":"tests/purus/passing/Misc/Lib.purs","start":[5,1]},[{"BlockComment":" Type Classes "},{"LineComment":" Single Param"}]],"dataCtorFields":[[{"Ident":"dict"},{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Record"],"tag":"TypeConstructor"},{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":["eq",{"annotation":[{"end":[6,26],"name":"tests/purus/passing/Misc/Lib.purs","start":[6,9]},[]],"contents":[{"annotation":[{"end":[6,26],"name":"tests/purus/passing/Misc/Lib.purs","start":[6,9]},[]],"contents":[{"annotation":[{"end":[6,13],"name":"tests/purus/passing/Misc/Lib.purs","start":[6,11]},[]],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[6,10],"name":"tests/purus/passing/Misc/Lib.purs","start":[6,9]},[]],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[{"end":[6,26],"name":"tests/purus/passing/Misc/Lib.purs","start":[6,14]},[]],"contents":[{"annotation":[{"end":[6,26],"name":"tests/purus/passing/Misc/Lib.purs","start":[6,14]},[]],"contents":[{"annotation":[{"end":[6,18],"name":"tests/purus/passing/Misc/Lib.purs","start":[6,16]},[]],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[6,15],"name":"tests/purus/passing/Misc/Lib.purs","start":[6,14]},[]],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[{"end":[6,26],"name":"tests/purus/passing/Misc/Lib.purs","start":[6,19]},[]],"contents":[["Prim"],"Boolean"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"tag":"REmpty"}],"tag":"RCons"}],"tag":"TypeApp"}]],"dataCtorName":"Eq$Dict"}]],"Eq2$Dict":["newtype",[["a",null],["b",null]],[{"dataCtorAnn":[{"end":[30,27],"name":"tests/purus/passing/Misc/Lib.purs","start":[29,1]},[{"LineComment":" Multi Param"}]],"dataCtorFields":[[{"Ident":"dict"},{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Record"],"tag":"TypeConstructor"},{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":["eq2",{"annotation":[{"end":[30,27],"name":"tests/purus/passing/Misc/Lib.purs","start":[30,10]},[]],"contents":[{"annotation":[{"end":[30,27],"name":"tests/purus/passing/Misc/Lib.purs","start":[30,10]},[]],"contents":[{"annotation":[{"end":[30,14],"name":"tests/purus/passing/Misc/Lib.purs","start":[30,12]},[]],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[30,11],"name":"tests/purus/passing/Misc/Lib.purs","start":[30,10]},[]],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[{"end":[30,27],"name":"tests/purus/passing/Misc/Lib.purs","start":[30,15]},[]],"contents":[{"annotation":[{"end":[30,27],"name":"tests/purus/passing/Misc/Lib.purs","start":[30,15]},[]],"contents":[{"annotation":[{"end":[30,19],"name":"tests/purus/passing/Misc/Lib.purs","start":[30,17]},[]],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[30,16],"name":"tests/purus/passing/Misc/Lib.purs","start":[30,15]},[]],"contents":"b","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[{"end":[30,27],"name":"tests/purus/passing/Misc/Lib.purs","start":[30,20]},[]],"contents":[["Prim"],"Boolean"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"tag":"REmpty"}],"tag":"RCons"}],"tag":"TypeApp"}]],"dataCtorName":"Eq2$Dict"}]]},"decls":[{"annotation":{"meta":{"metaType":"IsTypeClassConstructor"},"sourceSpan":{"end":[30,27],"start":[29,1]}},"bindType":"NonRec","expression":{"annotation":{"meta":{"metaType":"IsNewtype"},"sourceSpan":{"end":[30,27],"start":[29,1]}},"argument":"x","body":{"annotation":{"meta":null,"sourceSpan":{"end":[30,27],"start":[29,1]}},"kind":"Var","type":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Record"],"tag":"TypeConstructor"},{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":["eq2",{"annotation":[{"end":[30,27],"name":"tests/purus/passing/Misc/Lib.purs","start":[30,10]},[]],"contents":[{"annotation":[{"end":[30,27],"name":"tests/purus/passing/Misc/Lib.purs","start":[30,10]},[]],"contents":[{"annotation":[{"end":[30,14],"name":"tests/purus/passing/Misc/Lib.purs","start":[30,12]},[]],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[30,11],"name":"tests/purus/passing/Misc/Lib.purs","start":[30,10]},[]],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[{"end":[30,27],"name":"tests/purus/passing/Misc/Lib.purs","start":[30,15]},[]],"contents":[{"annotation":[{"end":[30,27],"name":"tests/purus/passing/Misc/Lib.purs","start":[30,15]},[]],"contents":[{"annotation":[{"end":[30,19],"name":"tests/purus/passing/Misc/Lib.purs","start":[30,17]},[]],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[30,16],"name":"tests/purus/passing/Misc/Lib.purs","start":[30,15]},[]],"contents":"b","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[{"end":[30,27],"name":"tests/purus/passing/Misc/Lib.purs","start":[30,20]},[]],"contents":[["Prim"],"Boolean"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"tag":"REmpty"}],"tag":"RCons"}],"tag":"TypeApp"},"value":{"identifier":"x","sourcePos":[0,0]}},"kind":"Abs","type":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":{"identifier":"a","kind":null,"skolem":null,"type":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":{"identifier":"b","kind":null,"skolem":null,"type":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Record"],"tag":"TypeConstructor"},{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":["eq2",{"annotation":[{"end":[30,27],"name":"tests/purus/passing/Misc/Lib.purs","start":[30,10]},[]],"contents":[{"annotation":[{"end":[30,27],"name":"tests/purus/passing/Misc/Lib.purs","start":[30,10]},[]],"contents":[{"annotation":[{"end":[30,14],"name":"tests/purus/passing/Misc/Lib.purs","start":[30,12]},[]],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[30,11],"name":"tests/purus/passing/Misc/Lib.purs","start":[30,10]},[]],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[{"end":[30,27],"name":"tests/purus/passing/Misc/Lib.purs","start":[30,15]},[]],"contents":[{"annotation":[{"end":[30,27],"name":"tests/purus/passing/Misc/Lib.purs","start":[30,15]},[]],"contents":[{"annotation":[{"end":[30,19],"name":"tests/purus/passing/Misc/Lib.purs","start":[30,17]},[]],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[30,16],"name":"tests/purus/passing/Misc/Lib.purs","start":[30,15]},[]],"contents":"b","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[{"end":[30,27],"name":"tests/purus/passing/Misc/Lib.purs","start":[30,20]},[]],"contents":[["Prim"],"Boolean"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"tag":"REmpty"}],"tag":"RCons"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Record"],"tag":"TypeConstructor"},{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":["eq2",{"annotation":[{"end":[30,27],"name":"tests/purus/passing/Misc/Lib.purs","start":[30,10]},[]],"contents":[{"annotation":[{"end":[30,27],"name":"tests/purus/passing/Misc/Lib.purs","start":[30,10]},[]],"contents":[{"annotation":[{"end":[30,14],"name":"tests/purus/passing/Misc/Lib.purs","start":[30,12]},[]],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[30,11],"name":"tests/purus/passing/Misc/Lib.purs","start":[30,10]},[]],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[{"end":[30,27],"name":"tests/purus/passing/Misc/Lib.purs","start":[30,15]},[]],"contents":[{"annotation":[{"end":[30,27],"name":"tests/purus/passing/Misc/Lib.purs","start":[30,15]},[]],"contents":[{"annotation":[{"end":[30,19],"name":"tests/purus/passing/Misc/Lib.purs","start":[30,17]},[]],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[30,16],"name":"tests/purus/passing/Misc/Lib.purs","start":[30,15]},[]],"contents":"b","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[{"end":[30,27],"name":"tests/purus/passing/Misc/Lib.purs","start":[30,20]},[]],"contents":[["Prim"],"Boolean"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"tag":"REmpty"}],"tag":"RCons"}],"tag":"TypeApp"}],"tag":"TypeApp"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"identifier":"Eq2$Dict"},{"annotation":{"meta":{"metaType":"IsTypeClassConstructor"},"sourceSpan":{"end":[6,26],"start":[5,1]}},"bindType":"NonRec","expression":{"annotation":{"meta":{"metaType":"IsNewtype"},"sourceSpan":{"end":[6,26],"start":[5,1]}},"argument":"x","body":{"annotation":{"meta":null,"sourceSpan":{"end":[6,26],"start":[5,1]}},"kind":"Var","type":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Record"],"tag":"TypeConstructor"},{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":["eq",{"annotation":[{"end":[6,26],"name":"tests/purus/passing/Misc/Lib.purs","start":[6,9]},[]],"contents":[{"annotation":[{"end":[6,26],"name":"tests/purus/passing/Misc/Lib.purs","start":[6,9]},[]],"contents":[{"annotation":[{"end":[6,13],"name":"tests/purus/passing/Misc/Lib.purs","start":[6,11]},[]],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[6,10],"name":"tests/purus/passing/Misc/Lib.purs","start":[6,9]},[]],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[{"end":[6,26],"name":"tests/purus/passing/Misc/Lib.purs","start":[6,14]},[]],"contents":[{"annotation":[{"end":[6,26],"name":"tests/purus/passing/Misc/Lib.purs","start":[6,14]},[]],"contents":[{"annotation":[{"end":[6,18],"name":"tests/purus/passing/Misc/Lib.purs","start":[6,16]},[]],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[6,15],"name":"tests/purus/passing/Misc/Lib.purs","start":[6,14]},[]],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[{"end":[6,26],"name":"tests/purus/passing/Misc/Lib.purs","start":[6,19]},[]],"contents":[["Prim"],"Boolean"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"tag":"REmpty"}],"tag":"RCons"}],"tag":"TypeApp"},"value":{"identifier":"x","sourcePos":[0,0]}},"kind":"Abs","type":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":{"identifier":"a","kind":null,"skolem":null,"type":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Record"],"tag":"TypeConstructor"},{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":["eq",{"annotation":[{"end":[6,26],"name":"tests/purus/passing/Misc/Lib.purs","start":[6,9]},[]],"contents":[{"annotation":[{"end":[6,26],"name":"tests/purus/passing/Misc/Lib.purs","start":[6,9]},[]],"contents":[{"annotation":[{"end":[6,13],"name":"tests/purus/passing/Misc/Lib.purs","start":[6,11]},[]],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[6,10],"name":"tests/purus/passing/Misc/Lib.purs","start":[6,9]},[]],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[{"end":[6,26],"name":"tests/purus/passing/Misc/Lib.purs","start":[6,14]},[]],"contents":[{"annotation":[{"end":[6,26],"name":"tests/purus/passing/Misc/Lib.purs","start":[6,14]},[]],"contents":[{"annotation":[{"end":[6,18],"name":"tests/purus/passing/Misc/Lib.purs","start":[6,16]},[]],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[6,15],"name":"tests/purus/passing/Misc/Lib.purs","start":[6,14]},[]],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[{"end":[6,26],"name":"tests/purus/passing/Misc/Lib.purs","start":[6,19]},[]],"contents":[["Prim"],"Boolean"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"tag":"REmpty"}],"tag":"RCons"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Record"],"tag":"TypeConstructor"},{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":["eq",{"annotation":[{"end":[6,26],"name":"tests/purus/passing/Misc/Lib.purs","start":[6,9]},[]],"contents":[{"annotation":[{"end":[6,26],"name":"tests/purus/passing/Misc/Lib.purs","start":[6,9]},[]],"contents":[{"annotation":[{"end":[6,13],"name":"tests/purus/passing/Misc/Lib.purs","start":[6,11]},[]],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[6,10],"name":"tests/purus/passing/Misc/Lib.purs","start":[6,9]},[]],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[{"end":[6,26],"name":"tests/purus/passing/Misc/Lib.purs","start":[6,14]},[]],"contents":[{"annotation":[{"end":[6,26],"name":"tests/purus/passing/Misc/Lib.purs","start":[6,14]},[]],"contents":[{"annotation":[{"end":[6,18],"name":"tests/purus/passing/Misc/Lib.purs","start":[6,16]},[]],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[6,15],"name":"tests/purus/passing/Misc/Lib.purs","start":[6,14]},[]],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[{"end":[6,26],"name":"tests/purus/passing/Misc/Lib.purs","start":[6,19]},[]],"contents":[["Prim"],"Boolean"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"tag":"REmpty"}],"tag":"RCons"}],"tag":"TypeApp"}],"tag":"TypeApp"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"identifier":"Eq$Dict"},{"annotation":{"meta":null,"sourceSpan":{"end":[51,58],"start":[41,1]}},"bindType":"NonRec","expression":{"annotation":{"meta":null,"sourceSpan":{"end":[51,58],"start":[41,1]}},"constructorName":"ConInt","fieldNames":["value0"],"kind":"Constructor","type":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[42,15],"name":"tests/purus/passing/Misc/Lib.purs","start":[42,12]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Lib"],"TestBinderSum"],"tag":"TypeConstructor"}],"tag":"TypeApp"},"typeName":"TestBinderSum"},"identifier":"ConInt"},{"annotation":{"meta":null,"sourceSpan":{"end":[51,58],"start":[41,1]}},"bindType":"NonRec","expression":{"annotation":{"meta":null,"sourceSpan":{"end":[51,58],"start":[41,1]}},"constructorName":"ConInts","fieldNames":["value0"],"kind":"Constructor","type":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[43,23],"name":"tests/purus/passing/Misc/Lib.purs","start":[43,14]},[]],"contents":[{"annotation":[{"end":[43,19],"name":"tests/purus/passing/Misc/Lib.purs","start":[43,14]},[]],"contents":[["Prim"],"Array"],"tag":"TypeConstructor"},{"annotation":[{"end":[43,23],"name":"tests/purus/passing/Misc/Lib.purs","start":[43,20]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Lib"],"TestBinderSum"],"tag":"TypeConstructor"}],"tag":"TypeApp"},"typeName":"TestBinderSum"},"identifier":"ConInts"},{"annotation":{"meta":null,"sourceSpan":{"end":[51,58],"start":[41,1]}},"bindType":"NonRec","expression":{"annotation":{"meta":null,"sourceSpan":{"end":[51,58],"start":[41,1]}},"constructorName":"ConBoolean","fieldNames":["value0"],"kind":"Constructor","type":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[44,23],"name":"tests/purus/passing/Misc/Lib.purs","start":[44,16]},[]],"contents":[["Prim"],"Boolean"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Lib"],"TestBinderSum"],"tag":"TypeConstructor"}],"tag":"TypeApp"},"typeName":"TestBinderSum"},"identifier":"ConBoolean"},{"annotation":{"meta":null,"sourceSpan":{"end":[51,58],"start":[41,1]}},"bindType":"NonRec","expression":{"annotation":{"meta":null,"sourceSpan":{"end":[51,58],"start":[41,1]}},"constructorName":"ConString","fieldNames":["value0"],"kind":"Constructor","type":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[45,21],"name":"tests/purus/passing/Misc/Lib.purs","start":[45,15]},[]],"contents":[["Prim"],"String"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Lib"],"TestBinderSum"],"tag":"TypeConstructor"}],"tag":"TypeApp"},"typeName":"TestBinderSum"},"identifier":"ConString"},{"annotation":{"meta":null,"sourceSpan":{"end":[51,58],"start":[41,1]}},"bindType":"NonRec","expression":{"annotation":{"meta":null,"sourceSpan":{"end":[51,58],"start":[41,1]}},"constructorName":"ConChar","fieldNames":["value0"],"kind":"Constructor","type":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[46,17],"name":"tests/purus/passing/Misc/Lib.purs","start":[46,13]},[]],"contents":[["Prim"],"Char"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Lib"],"TestBinderSum"],"tag":"TypeConstructor"}],"tag":"TypeApp"},"typeName":"TestBinderSum"},"identifier":"ConChar"},{"annotation":{"meta":null,"sourceSpan":{"end":[51,58],"start":[41,1]}},"bindType":"NonRec","expression":{"annotation":{"meta":null,"sourceSpan":{"end":[51,58],"start":[41,1]}},"constructorName":"ConNested","fieldNames":["value0"],"kind":"Constructor","type":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Lib"],"TestBinderSum"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Lib"],"TestBinderSum"],"tag":"TypeConstructor"}],"tag":"TypeApp"},"typeName":"TestBinderSum"},"identifier":"ConNested"},{"annotation":{"meta":null,"sourceSpan":{"end":[51,58],"start":[41,1]}},"bindType":"NonRec","expression":{"annotation":{"meta":null,"sourceSpan":{"end":[51,58],"start":[41,1]}},"constructorName":"ConQuantified","fieldNames":["value0"],"kind":"Constructor","type":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[48,38],"name":"tests/purus/passing/Misc/Lib.purs","start":[48,20]},[]],"contents":{"identifier":"x","kind":{"annotation":[{"end":[48,34],"name":"tests/purus/passing/Misc/Lib.purs","start":[48,32]},[]],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"},"skolem":null,"type":{"annotation":[{"end":[48,38],"name":"tests/purus/passing/Misc/Lib.purs","start":[48,30]},[]],"contents":[{"annotation":[{"end":[48,38],"name":"tests/purus/passing/Misc/Lib.purs","start":[48,30]},[]],"contents":[{"annotation":[{"end":[48,34],"name":"tests/purus/passing/Misc/Lib.purs","start":[48,32]},[]],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[48,31],"name":"tests/purus/passing/Misc/Lib.purs","start":[48,30]},[]],"contents":"x","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[{"end":[48,38],"name":"tests/purus/passing/Misc/Lib.purs","start":[48,35]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}],"tag":"TypeApp"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}],"tag":"TypeApp"},{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Lib"],"TestBinderSum"],"tag":"TypeConstructor"}],"tag":"TypeApp"},"typeName":"TestBinderSum"},"identifier":"ConQuantified"},{"annotation":{"meta":null,"sourceSpan":{"end":[51,58],"start":[41,1]}},"bindType":"NonRec","expression":{"annotation":{"meta":null,"sourceSpan":{"end":[51,58],"start":[41,1]}},"constructorName":"ConConstrained","fieldNames":["value0"],"kind":"Constructor","type":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[49,47],"name":"tests/purus/passing/Misc/Lib.purs","start":[49,21]},[]],"contents":{"identifier":"x","kind":{"annotation":[{"end":[49,35],"name":"tests/purus/passing/Misc/Lib.purs","start":[49,31]},[]],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"},"skolem":null,"type":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Lib"],"Eq$Dict"],"tag":"TypeConstructor"},{"annotation":[{"end":[49,35],"name":"tests/purus/passing/Misc/Lib.purs","start":[49,34]},[]],"contents":"x","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[{"end":[49,47],"name":"tests/purus/passing/Misc/Lib.purs","start":[49,39]},[]],"contents":[{"annotation":[{"end":[49,47],"name":"tests/purus/passing/Misc/Lib.purs","start":[49,39]},[]],"contents":[{"annotation":[{"end":[49,43],"name":"tests/purus/passing/Misc/Lib.purs","start":[49,41]},[]],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[49,40],"name":"tests/purus/passing/Misc/Lib.purs","start":[49,39]},[]],"contents":"x","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[{"end":[49,47],"name":"tests/purus/passing/Misc/Lib.purs","start":[49,44]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}],"tag":"TypeApp"},{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Lib"],"TestBinderSum"],"tag":"TypeConstructor"}],"tag":"TypeApp"},"typeName":"TestBinderSum"},"identifier":"ConConstrained"},{"annotation":{"meta":null,"sourceSpan":{"end":[51,58],"start":[41,1]}},"bindType":"NonRec","expression":{"annotation":{"meta":null,"sourceSpan":{"end":[51,58],"start":[41,1]}},"constructorName":"ConObject","fieldNames":["value0"],"kind":"Constructor","type":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[50,32],"name":"tests/purus/passing/Misc/Lib.purs","start":[50,15]},[]],"contents":[{"annotation":[{"end":[50,16],"name":"tests/purus/passing/Misc/Lib.purs","start":[50,15]},[]],"contents":[["Prim"],"Record"],"tag":"TypeConstructor"},{"annotation":[{"end":[50,31],"name":"tests/purus/passing/Misc/Lib.purs","start":[50,16]},[]],"contents":["objField",{"annotation":[{"end":[50,31],"name":"tests/purus/passing/Misc/Lib.purs","start":[50,28]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"},{"annotation":[{"end":[50,32],"name":"tests/purus/passing/Misc/Lib.purs","start":[50,31]},[]],"contents":[{"annotation":[{"end":[50,32],"name":"tests/purus/passing/Misc/Lib.purs","start":[50,31]},[]],"tag":"REmpty"},{"annotation":[{"end":[50,31],"name":"tests/purus/passing/Misc/Lib.purs","start":[50,28]},[]],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"}],"tag":"KindApp"}],"tag":"RCons"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Lib"],"TestBinderSum"],"tag":"TypeConstructor"}],"tag":"TypeApp"},"typeName":"TestBinderSum"},"identifier":"ConObject"},{"annotation":{"meta":null,"sourceSpan":{"end":[51,58],"start":[41,1]}},"bindType":"NonRec","expression":{"annotation":{"meta":null,"sourceSpan":{"end":[51,58],"start":[41,1]}},"constructorName":"ConObjectQuantified","fieldNames":["value0"],"kind":"Constructor","type":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[51,58],"name":"tests/purus/passing/Misc/Lib.purs","start":[51,25]},[]],"contents":[{"annotation":[{"end":[51,26],"name":"tests/purus/passing/Misc/Lib.purs","start":[51,25]},[]],"contents":[["Prim"],"Record"],"tag":"TypeConstructor"},{"annotation":[{"end":[51,57],"name":"tests/purus/passing/Misc/Lib.purs","start":[51,26]},[]],"contents":["objFieldQ",{"annotation":[{"end":[51,57],"name":"tests/purus/passing/Misc/Lib.purs","start":[51,39]},[]],"contents":{"identifier":"x","kind":{"annotation":[{"end":[51,53],"name":"tests/purus/passing/Misc/Lib.purs","start":[51,51]},[]],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"},"skolem":null,"type":{"annotation":[{"end":[51,57],"name":"tests/purus/passing/Misc/Lib.purs","start":[51,49]},[]],"contents":[{"annotation":[{"end":[51,57],"name":"tests/purus/passing/Misc/Lib.purs","start":[51,49]},[]],"contents":[{"annotation":[{"end":[51,53],"name":"tests/purus/passing/Misc/Lib.purs","start":[51,51]},[]],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[51,50],"name":"tests/purus/passing/Misc/Lib.purs","start":[51,49]},[]],"contents":"x","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[{"end":[51,57],"name":"tests/purus/passing/Misc/Lib.purs","start":[51,54]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}],"tag":"TypeApp"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},{"annotation":[{"end":[51,58],"name":"tests/purus/passing/Misc/Lib.purs","start":[51,57]},[]],"contents":[{"annotation":[{"end":[51,58],"name":"tests/purus/passing/Misc/Lib.purs","start":[51,57]},[]],"tag":"REmpty"},{"annotation":[{"end":[51,57],"name":"tests/purus/passing/Misc/Lib.purs","start":[51,39]},[]],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"}],"tag":"KindApp"}],"tag":"RCons"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Lib"],"TestBinderSum"],"tag":"TypeConstructor"}],"tag":"TypeApp"},"typeName":"TestBinderSum"},"identifier":"ConObjectQuantified"},{"annotation":{"meta":null,"sourceSpan":{"end":[108,42],"start":[108,1]}},"bindType":"NonRec","expression":{"annotation":{"meta":null,"sourceSpan":{"end":[108,42],"start":[108,1]}},"constructorName":"Constr1","fieldNames":["value0"],"kind":"Constructor","type":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[108,24],"name":"tests/purus/passing/Misc/Lib.purs","start":[108,21]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Lib"],"ASum"],"tag":"TypeConstructor"}],"tag":"TypeApp"},"typeName":"ASum"},"identifier":"Constr1"},{"annotation":{"meta":null,"sourceSpan":{"end":[108,42],"start":[108,1]}},"bindType":"NonRec","expression":{"annotation":{"meta":null,"sourceSpan":{"end":[108,42],"start":[108,1]}},"constructorName":"Constr2","fieldNames":["value0"],"kind":"Constructor","type":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[108,42],"name":"tests/purus/passing/Misc/Lib.purs","start":[108,35]},[]],"contents":[["Prim"],"Boolean"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Lib"],"ASum"],"tag":"TypeConstructor"}],"tag":"TypeApp"},"typeName":"ASum"},"identifier":"Constr2"},{"annotation":{"meta":null,"sourceSpan":{"end":[106,47],"start":[106,1]}},"bindType":"NonRec","expression":{"annotation":{"meta":{"metaType":"IsNewtype"},"sourceSpan":{"end":[106,47],"start":[106,1]}},"argument":"x","body":{"annotation":{"meta":null,"sourceSpan":{"end":[106,47],"start":[106,1]}},"kind":"Var","type":{"annotation":[{"end":[106,47],"name":"tests/purus/passing/Misc/Lib.purs","start":[106,35]},[]],"contents":[{"annotation":[{"end":[106,36],"name":"tests/purus/passing/Misc/Lib.purs","start":[106,35]},[]],"contents":[["Prim"],"Record"],"tag":"TypeConstructor"},{"annotation":[{"end":[106,46],"name":"tests/purus/passing/Misc/Lib.purs","start":[106,36]},[]],"contents":["foo",{"annotation":[{"end":[106,46],"name":"tests/purus/passing/Misc/Lib.purs","start":[106,43]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"},{"annotation":[{"end":[106,47],"name":"tests/purus/passing/Misc/Lib.purs","start":[106,46]},[]],"tag":"REmpty"}],"tag":"RCons"}],"tag":"TypeApp"},"value":{"identifier":"x","sourcePos":[0,0]}},"kind":"Abs","type":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[106,47],"name":"tests/purus/passing/Misc/Lib.purs","start":[106,35]},[]],"contents":[{"annotation":[{"end":[106,36],"name":"tests/purus/passing/Misc/Lib.purs","start":[106,35]},[]],"contents":[["Prim"],"Record"],"tag":"TypeConstructor"},{"annotation":[{"end":[106,46],"name":"tests/purus/passing/Misc/Lib.purs","start":[106,36]},[]],"contents":["foo",{"annotation":[{"end":[106,46],"name":"tests/purus/passing/Misc/Lib.purs","start":[106,43]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"},{"annotation":[{"end":[106,47],"name":"tests/purus/passing/Misc/Lib.purs","start":[106,46]},[]],"tag":"REmpty"}],"tag":"RCons"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[{"end":[106,47],"name":"tests/purus/passing/Misc/Lib.purs","start":[106,35]},[]],"contents":[{"annotation":[{"end":[106,36],"name":"tests/purus/passing/Misc/Lib.purs","start":[106,35]},[]],"contents":[["Prim"],"Record"],"tag":"TypeConstructor"},{"annotation":[{"end":[106,46],"name":"tests/purus/passing/Misc/Lib.purs","start":[106,36]},[]],"contents":["foo",{"annotation":[{"end":[106,46],"name":"tests/purus/passing/Misc/Lib.purs","start":[106,43]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"},{"annotation":[{"end":[106,47],"name":"tests/purus/passing/Misc/Lib.purs","start":[106,46]},[]],"tag":"REmpty"}],"tag":"RCons"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"identifier":"ANewTypeRec"},{"annotation":{"meta":null,"sourceSpan":{"end":[104,58],"start":[104,1]}},"bindType":"NonRec","expression":{"annotation":{"meta":null,"sourceSpan":{"end":[104,58],"start":[104,1]}},"constructorName":"ADataRec","fieldNames":["value0"],"kind":"Constructor","type":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[104,58],"name":"tests/purus/passing/Misc/Lib.purs","start":[104,26]},[]],"contents":[{"annotation":[{"end":[104,27],"name":"tests/purus/passing/Misc/Lib.purs","start":[104,26]},[]],"contents":[["Prim"],"Record"],"tag":"TypeConstructor"},{"annotation":[{"end":[104,39],"name":"tests/purus/passing/Misc/Lib.purs","start":[104,27]},[]],"contents":["hello",{"annotation":[{"end":[104,39],"name":"tests/purus/passing/Misc/Lib.purs","start":[104,36]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"},{"annotation":[{"end":[104,57],"name":"tests/purus/passing/Misc/Lib.purs","start":[104,41]},[]],"contents":["world",{"annotation":[{"end":[104,57],"name":"tests/purus/passing/Misc/Lib.purs","start":[104,50]},[]],"contents":[["Prim"],"Boolean"],"tag":"TypeConstructor"},{"annotation":[{"end":[104,58],"name":"tests/purus/passing/Misc/Lib.purs","start":[104,57]},[]],"contents":[{"annotation":[{"end":[104,58],"name":"tests/purus/passing/Misc/Lib.purs","start":[104,57]},[]],"tag":"REmpty"},{"annotation":[{"end":[104,39],"name":"tests/purus/passing/Misc/Lib.purs","start":[104,36]},[]],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"}],"tag":"KindApp"}],"tag":"RCons"}],"tag":"RCons"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Lib"],"ADataRec"],"tag":"TypeConstructor"}],"tag":"TypeApp"},"typeName":"ADataRec"},"identifier":"ADataRec"},{"annotation":{"meta":null,"sourceSpan":{"end":[12,16],"start":[11,1]}},"bindType":"NonRec","expression":{"abstraction":{"annotation":{"meta":{"metaType":"IsNewtype"},"sourceSpan":{"end":[12,16],"start":[11,1]}},"kind":"Var","type":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Record"],"tag":"TypeConstructor"},{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":["eq",{"annotation":[{"end":[6,26],"name":"tests/purus/passing/Misc/Lib.purs","start":[6,9]},[]],"contents":[{"annotation":[{"end":[6,26],"name":"tests/purus/passing/Misc/Lib.purs","start":[6,9]},[]],"contents":[{"annotation":[{"end":[6,13],"name":"tests/purus/passing/Misc/Lib.purs","start":[6,11]},[]],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[11,16],"name":"tests/purus/passing/Misc/Lib.purs","start":[11,13]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[{"end":[6,26],"name":"tests/purus/passing/Misc/Lib.purs","start":[6,14]},[]],"contents":[{"annotation":[{"end":[6,26],"name":"tests/purus/passing/Misc/Lib.purs","start":[6,14]},[]],"contents":[{"annotation":[{"end":[6,18],"name":"tests/purus/passing/Misc/Lib.purs","start":[6,16]},[]],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[11,16],"name":"tests/purus/passing/Misc/Lib.purs","start":[11,13]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[{"end":[6,26],"name":"tests/purus/passing/Misc/Lib.purs","start":[6,19]},[]],"contents":[["Prim"],"Boolean"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"tag":"REmpty"},{"annotation":[{"end":[6,13],"name":"tests/purus/passing/Misc/Lib.purs","start":[6,11]},[]],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"}],"tag":"KindApp"}],"tag":"RCons"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Lib"],"Eq$Dict"],"tag":"TypeConstructor"},{"annotation":[{"end":[11,16],"name":"tests/purus/passing/Misc/Lib.purs","start":[11,13]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"},"value":{"identifier":"Eq$Dict","moduleName":["Lib"]}},"annotation":{"meta":null,"sourceSpan":{"end":[12,16],"start":[11,1]}},"argument":{"annotation":{"meta":null,"sourceSpan":{"end":[12,16],"start":[11,1]}},"kind":"Literal","type":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Record"],"tag":"TypeConstructor"},{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":["eq",{"annotation":[{"end":[6,26],"name":"tests/purus/passing/Misc/Lib.purs","start":[6,9]},[]],"contents":[{"annotation":[{"end":[6,26],"name":"tests/purus/passing/Misc/Lib.purs","start":[6,9]},[]],"contents":[{"annotation":[{"end":[6,13],"name":"tests/purus/passing/Misc/Lib.purs","start":[6,11]},[]],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[11,16],"name":"tests/purus/passing/Misc/Lib.purs","start":[11,13]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[{"end":[6,26],"name":"tests/purus/passing/Misc/Lib.purs","start":[6,14]},[]],"contents":[{"annotation":[{"end":[6,26],"name":"tests/purus/passing/Misc/Lib.purs","start":[6,14]},[]],"contents":[{"annotation":[{"end":[6,18],"name":"tests/purus/passing/Misc/Lib.purs","start":[6,16]},[]],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[11,16],"name":"tests/purus/passing/Misc/Lib.purs","start":[11,13]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[{"end":[6,26],"name":"tests/purus/passing/Misc/Lib.purs","start":[6,19]},[]],"contents":[["Prim"],"Boolean"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"tag":"REmpty"},{"annotation":[{"end":[6,13],"name":"tests/purus/passing/Misc/Lib.purs","start":[6,11]},[]],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"}],"tag":"KindApp"}],"tag":"RCons"}],"tag":"TypeApp"},"value":{"literalType":"ObjectLiteral","value":[["eq",{"annotation":{"meta":null,"sourceSpan":{"end":[12,16],"start":[12,3]}},"argument":"v","body":{"annotation":{"meta":null,"sourceSpan":{"end":[12,16],"start":[12,3]}},"argument":"v1","body":{"annotation":{"meta":null,"sourceSpan":{"end":[12,16],"start":[12,12]}},"kind":"Literal","type":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Boolean"],"tag":"TypeConstructor"},"value":{"literalType":"BooleanLiteral","value":true}},"kind":"Abs","type":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[11,16],"name":"tests/purus/passing/Misc/Lib.purs","start":[11,13]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[{"end":[6,26],"name":"tests/purus/passing/Misc/Lib.purs","start":[6,19]},[]],"contents":[["Prim"],"Boolean"],"tag":"TypeConstructor"}],"tag":"TypeApp"}},"kind":"Abs","type":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[11,16],"name":"tests/purus/passing/Misc/Lib.purs","start":[11,13]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[{"end":[6,26],"name":"tests/purus/passing/Misc/Lib.purs","start":[6,14]},[]],"contents":[{"annotation":[{"end":[6,26],"name":"tests/purus/passing/Misc/Lib.purs","start":[6,14]},[]],"contents":[{"annotation":[{"end":[6,18],"name":"tests/purus/passing/Misc/Lib.purs","start":[6,16]},[]],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[11,16],"name":"tests/purus/passing/Misc/Lib.purs","start":[11,13]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[{"end":[6,26],"name":"tests/purus/passing/Misc/Lib.purs","start":[6,19]},[]],"contents":[["Prim"],"Boolean"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"}}]]}},"kind":"App"},"identifier":"eqInt"},{"annotation":{"meta":null,"sourceSpan":{"end":[33,17],"start":[32,1]}},"bindType":"NonRec","expression":{"abstraction":{"annotation":{"meta":{"metaType":"IsNewtype"},"sourceSpan":{"end":[33,17],"start":[32,1]}},"kind":"Var","type":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Record"],"tag":"TypeConstructor"},{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":["eq2",{"annotation":[{"end":[30,27],"name":"tests/purus/passing/Misc/Lib.purs","start":[30,10]},[]],"contents":[{"annotation":[{"end":[30,27],"name":"tests/purus/passing/Misc/Lib.purs","start":[30,10]},[]],"contents":[{"annotation":[{"end":[30,14],"name":"tests/purus/passing/Misc/Lib.purs","start":[30,12]},[]],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[32,17],"name":"tests/purus/passing/Misc/Lib.purs","start":[32,14]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[{"end":[30,27],"name":"tests/purus/passing/Misc/Lib.purs","start":[30,15]},[]],"contents":[{"annotation":[{"end":[30,27],"name":"tests/purus/passing/Misc/Lib.purs","start":[30,15]},[]],"contents":[{"annotation":[{"end":[30,19],"name":"tests/purus/passing/Misc/Lib.purs","start":[30,17]},[]],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[32,25],"name":"tests/purus/passing/Misc/Lib.purs","start":[32,18]},[]],"contents":[["Prim"],"Boolean"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[{"end":[30,27],"name":"tests/purus/passing/Misc/Lib.purs","start":[30,20]},[]],"contents":[["Prim"],"Boolean"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"tag":"REmpty"},{"annotation":[{"end":[30,14],"name":"tests/purus/passing/Misc/Lib.purs","start":[30,12]},[]],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"}],"tag":"KindApp"}],"tag":"RCons"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Lib"],"Eq2$Dict"],"tag":"TypeConstructor"},{"annotation":[{"end":[32,17],"name":"tests/purus/passing/Misc/Lib.purs","start":[32,14]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[{"end":[32,25],"name":"tests/purus/passing/Misc/Lib.purs","start":[32,18]},[]],"contents":[["Prim"],"Boolean"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"},"value":{"identifier":"Eq2$Dict","moduleName":["Lib"]}},"annotation":{"meta":null,"sourceSpan":{"end":[33,17],"start":[32,1]}},"argument":{"annotation":{"meta":null,"sourceSpan":{"end":[33,17],"start":[32,1]}},"kind":"Literal","type":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Record"],"tag":"TypeConstructor"},{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":["eq2",{"annotation":[{"end":[30,27],"name":"tests/purus/passing/Misc/Lib.purs","start":[30,10]},[]],"contents":[{"annotation":[{"end":[30,27],"name":"tests/purus/passing/Misc/Lib.purs","start":[30,10]},[]],"contents":[{"annotation":[{"end":[30,14],"name":"tests/purus/passing/Misc/Lib.purs","start":[30,12]},[]],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[32,17],"name":"tests/purus/passing/Misc/Lib.purs","start":[32,14]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[{"end":[30,27],"name":"tests/purus/passing/Misc/Lib.purs","start":[30,15]},[]],"contents":[{"annotation":[{"end":[30,27],"name":"tests/purus/passing/Misc/Lib.purs","start":[30,15]},[]],"contents":[{"annotation":[{"end":[30,19],"name":"tests/purus/passing/Misc/Lib.purs","start":[30,17]},[]],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[32,25],"name":"tests/purus/passing/Misc/Lib.purs","start":[32,18]},[]],"contents":[["Prim"],"Boolean"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[{"end":[30,27],"name":"tests/purus/passing/Misc/Lib.purs","start":[30,20]},[]],"contents":[["Prim"],"Boolean"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"tag":"REmpty"},{"annotation":[{"end":[30,14],"name":"tests/purus/passing/Misc/Lib.purs","start":[30,12]},[]],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"}],"tag":"KindApp"}],"tag":"RCons"}],"tag":"TypeApp"},"value":{"literalType":"ObjectLiteral","value":[["eq2",{"annotation":{"meta":null,"sourceSpan":{"end":[33,17],"start":[33,3]}},"argument":"v","body":{"annotation":{"meta":null,"sourceSpan":{"end":[33,17],"start":[33,3]}},"argument":"v1","body":{"annotation":{"meta":null,"sourceSpan":{"end":[33,17],"start":[33,13]}},"kind":"Literal","type":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Boolean"],"tag":"TypeConstructor"},"value":{"literalType":"BooleanLiteral","value":true}},"kind":"Abs","type":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[32,25],"name":"tests/purus/passing/Misc/Lib.purs","start":[32,18]},[]],"contents":[["Prim"],"Boolean"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[{"end":[30,27],"name":"tests/purus/passing/Misc/Lib.purs","start":[30,20]},[]],"contents":[["Prim"],"Boolean"],"tag":"TypeConstructor"}],"tag":"TypeApp"}},"kind":"Abs","type":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[32,17],"name":"tests/purus/passing/Misc/Lib.purs","start":[32,14]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[{"end":[30,27],"name":"tests/purus/passing/Misc/Lib.purs","start":[30,15]},[]],"contents":[{"annotation":[{"end":[30,27],"name":"tests/purus/passing/Misc/Lib.purs","start":[30,15]},[]],"contents":[{"annotation":[{"end":[30,19],"name":"tests/purus/passing/Misc/Lib.purs","start":[30,17]},[]],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[32,25],"name":"tests/purus/passing/Misc/Lib.purs","start":[32,18]},[]],"contents":[["Prim"],"Boolean"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[{"end":[30,27],"name":"tests/purus/passing/Misc/Lib.purs","start":[30,20]},[]],"contents":[["Prim"],"Boolean"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"}}]]}},"kind":"App"},"identifier":"eq2IntBoolean"},{"annotation":{"meta":null,"sourceSpan":{"end":[120,24],"start":[120,1]}},"bindType":"NonRec","expression":{"annotation":{"meta":null,"sourceSpan":{"end":[123,17],"start":[121,1]}},"argument":"x","body":{"annotation":{"meta":null,"sourceSpan":{"end":[123,17],"start":[121,14]}},"caseAlternatives":[{"binders":[{"annotation":{"meta":{"constructorType":"SumType","identifiers":["value0"],"metaType":"IsConstructor"},"sourceSpan":{"end":[122,12],"start":[122,3]}},"binderType":"ConstructorBinder","binders":[{"annotation":{"meta":null,"sourceSpan":{"end":[122,12],"start":[122,11]}},"binderType":"VarBinder","identifier":"y"}],"constructorName":{"identifier":"Constr1","moduleName":["Lib"]},"typeName":{"identifier":"ASum","moduleName":["Lib"]}}],"expression":{"annotation":{"meta":null,"sourceSpan":{"end":[122,17],"start":[122,16]}},"kind":"Literal","type":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"},"value":{"literalType":"IntLiteral","value":1}},"isGuarded":false},{"binders":[{"annotation":{"meta":{"constructorType":"SumType","identifiers":["value0"],"metaType":"IsConstructor"},"sourceSpan":{"end":[123,12],"start":[123,3]}},"binderType":"ConstructorBinder","binders":[{"annotation":{"meta":null,"sourceSpan":{"end":[123,12],"start":[123,11]}},"binderType":"VarBinder","identifier":"z"}],"constructorName":{"identifier":"Constr2","moduleName":["Lib"]},"typeName":{"identifier":"ASum","moduleName":["Lib"]}}],"expression":{"annotation":{"meta":null,"sourceSpan":{"end":[123,17],"start":[123,16]}},"kind":"Literal","type":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"},"value":{"literalType":"IntLiteral","value":2}},"isGuarded":false}],"caseExpressions":[{"annotation":{"meta":null,"sourceSpan":{"end":[121,20],"start":[121,19]}},"kind":"Var","type":{"annotation":[{"end":[120,17],"name":"tests/purus/passing/Misc/Lib.purs","start":[120,13]},[]],"contents":[["Lib"],"ASum"],"tag":"TypeConstructor"},"value":{"identifier":"x","sourcePos":[121,1]}}],"kind":"Case","type":{"annotation":[{"end":[120,24],"name":"tests/purus/passing/Misc/Lib.purs","start":[120,21]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}},"kind":"Abs","type":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[120,17],"name":"tests/purus/passing/Misc/Lib.purs","start":[120,13]},[]],"contents":[["Lib"],"ASum"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[{"end":[120,24],"name":"tests/purus/passing/Misc/Lib.purs","start":[120,21]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}],"tag":"TypeApp"}},"identifier":"testasum"},{"annotation":{"meta":null,"sourceSpan":{"end":[163,19],"start":[163,1]}},"bindType":"NonRec","expression":{"abstraction":{"abstraction":{"annotation":{"meta":null,"sourceSpan":{"end":[164,33],"start":[164,15]}},"kind":"Var","type":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"},"value":{"identifier":"addInteger","moduleName":["Builtin"]}},"annotation":{"meta":null,"sourceSpan":{"end":[164,35],"start":[164,15]}},"argument":{"annotation":{"meta":null,"sourceSpan":{"end":[164,35],"start":[164,34]}},"kind":"Literal","type":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"},"value":{"literalType":"IntLiteral","value":1}},"kind":"App"},"annotation":{"meta":null,"sourceSpan":{"end":[164,37],"start":[164,15]}},"argument":{"annotation":{"meta":null,"sourceSpan":{"end":[164,37],"start":[164,36]}},"kind":"Literal","type":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"},"value":{"literalType":"IntLiteral","value":2}},"kind":"App"},"identifier":"testBuiltin"},{"annotation":{"meta":null,"sourceSpan":{"end":[53,37],"start":[53,1]}},"bindType":"NonRec","expression":{"annotation":{"meta":null,"sourceSpan":{"end":[68,17],"start":[54,1]}},"argument":"x","body":{"annotation":{"meta":null,"sourceSpan":{"end":[68,17],"start":[54,17]}},"caseAlternatives":[{"binders":[{"annotation":{"meta":null,"sourceSpan":{"end":[55,15],"start":[55,3]}},"binder":{"annotation":{"meta":{"constructorType":"SumType","identifiers":["value0"],"metaType":"IsConstructor"},"sourceSpan":{"end":[55,14],"start":[55,6]}},"binderType":"ConstructorBinder","binders":[{"annotation":{"meta":null,"sourceSpan":{"end":[55,14],"start":[55,13]}},"binderType":"LiteralBinder","literal":{"literalType":"IntLiteral","value":3}}],"constructorName":{"identifier":"ConInt","moduleName":["Lib"]},"typeName":{"identifier":"TestBinderSum","moduleName":["Lib"]}},"binderType":"NamedBinder","identifier":"a"}],"expression":{"annotation":{"meta":null,"sourceSpan":{"end":[55,21],"start":[55,20]}},"kind":"Literal","type":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"},"value":{"literalType":"IntLiteral","value":1}},"isGuarded":false},{"binders":[{"annotation":{"meta":{"constructorType":"SumType","identifiers":["value0"],"metaType":"IsConstructor"},"sourceSpan":{"end":[56,11],"start":[56,3]}},"binderType":"ConstructorBinder","binders":[{"annotation":{"meta":null,"sourceSpan":{"end":[56,11],"start":[56,10]}},"binderType":"VarBinder","identifier":"a"}],"constructorName":{"identifier":"ConInt","moduleName":["Lib"]},"typeName":{"identifier":"TestBinderSum","moduleName":["Lib"]}}],"expression":{"annotation":{"meta":null,"sourceSpan":{"end":[56,16],"start":[56,15]}},"kind":"Var","type":{"annotation":[{"end":[42,15],"name":"tests/purus/passing/Misc/Lib.purs","start":[42,12]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"},"value":{"identifier":"a","sourcePos":[56,10]}},"isGuarded":false},{"binders":[{"annotation":{"meta":{"constructorType":"SumType","identifiers":["value0"],"metaType":"IsConstructor"},"sourceSpan":{"end":[57,29],"start":[57,3]}},"binderType":"ConstructorBinder","binders":[{"annotation":{"meta":null,"sourceSpan":{"end":[57,15],"start":[57,12]}},"binderType":"LiteralBinder","literal":{"literalType":"ArrayLiteral","value":[{"annotation":{"meta":null,"sourceSpan":{"end":[57,14],"start":[57,13]}},"binderType":"LiteralBinder","literal":{"literalType":"IntLiteral","value":3}}]}}],"constructorName":{"identifier":"ConInts","moduleName":["Lib"]},"typeName":{"identifier":"TestBinderSum","moduleName":["Lib"]}}],"expression":{"annotation":{"meta":null,"sourceSpan":{"end":[57,34],"start":[57,33]}},"kind":"Literal","type":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"},"value":{"literalType":"IntLiteral","value":2}},"isGuarded":false},{"binders":[{"annotation":{"meta":{"constructorType":"SumType","identifiers":["value0"],"metaType":"IsConstructor"},"sourceSpan":{"end":[58,16],"start":[58,3]}},"binderType":"ConstructorBinder","binders":[{"annotation":{"meta":null,"sourceSpan":{"end":[58,16],"start":[58,11]}},"binderType":"LiteralBinder","literal":{"literalType":"ArrayLiteral","value":[{"annotation":{"meta":null,"sourceSpan":{"end":[58,13],"start":[58,12]}},"binderType":"VarBinder","identifier":"a"},{"annotation":{"meta":null,"sourceSpan":{"end":[58,15],"start":[58,14]}},"binderType":"VarBinder","identifier":"b"}]}}],"constructorName":{"identifier":"ConInts","moduleName":["Lib"]},"typeName":{"identifier":"TestBinderSum","moduleName":["Lib"]}}],"expression":{"annotation":{"meta":null,"sourceSpan":{"end":[58,21],"start":[58,20]}},"kind":"Var","type":{"annotation":[{"end":[43,23],"name":"tests/purus/passing/Misc/Lib.purs","start":[43,20]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"},"value":{"identifier":"b","sourcePos":[58,14]}},"isGuarded":false},{"binders":[{"annotation":{"meta":{"constructorType":"SumType","identifiers":["value0"],"metaType":"IsConstructor"},"sourceSpan":{"end":[59,18],"start":[59,3]}},"binderType":"ConstructorBinder","binders":[{"annotation":{"meta":null,"sourceSpan":{"end":[59,18],"start":[59,14]}},"binderType":"LiteralBinder","literal":{"literalType":"BooleanLiteral","value":true}}],"constructorName":{"identifier":"ConBoolean","moduleName":["Lib"]},"typeName":{"identifier":"TestBinderSum","moduleName":["Lib"]}}],"expression":{"annotation":{"meta":null,"sourceSpan":{"end":[59,24],"start":[59,23]}},"kind":"Literal","type":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"},"value":{"literalType":"IntLiteral","value":4}},"isGuarded":false},{"binders":[{"annotation":{"meta":{"constructorType":"SumType","identifiers":["value0"],"metaType":"IsConstructor"},"sourceSpan":{"end":[60,15],"start":[60,3]}},"binderType":"ConstructorBinder","binders":[{"annotation":{"meta":null,"sourceSpan":{"end":[60,15],"start":[60,11]}},"binderType":"LiteralBinder","literal":{"literalType":"CharLiteral","value":"\n"}}],"constructorName":{"identifier":"ConChar","moduleName":["Lib"]},"typeName":{"identifier":"TestBinderSum","moduleName":["Lib"]}}],"expression":{"annotation":{"meta":null,"sourceSpan":{"end":[60,20],"start":[60,19]}},"kind":"Literal","type":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"},"value":{"literalType":"IntLiteral","value":5}},"isGuarded":false},{"binders":[{"annotation":{"meta":{"constructorType":"SumType","identifiers":["value0"],"metaType":"IsConstructor"},"sourceSpan":{"end":[61,23],"start":[61,3]}},"binderType":"ConstructorBinder","binders":[{"annotation":{"meta":{"constructorType":"SumType","identifiers":["value0"],"metaType":"IsConstructor"},"sourceSpan":{"end":[61,22],"start":[61,14]}},"binderType":"ConstructorBinder","binders":[{"annotation":{"meta":null,"sourceSpan":{"end":[61,22],"start":[61,21]}},"binderType":"LiteralBinder","literal":{"literalType":"IntLiteral","value":2}}],"constructorName":{"identifier":"ConInt","moduleName":["Lib"]},"typeName":{"identifier":"TestBinderSum","moduleName":["Lib"]}}],"constructorName":{"identifier":"ConNested","moduleName":["Lib"]},"typeName":{"identifier":"TestBinderSum","moduleName":["Lib"]}}],"expression":{"annotation":{"meta":null,"sourceSpan":{"end":[61,28],"start":[61,27]}},"kind":"Literal","type":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"},"value":{"literalType":"IntLiteral","value":6}},"isGuarded":false},{"binders":[{"annotation":{"meta":{"constructorType":"SumType","identifiers":["value0"],"metaType":"IsConstructor"},"sourceSpan":{"end":[62,18],"start":[62,3]}},"binderType":"ConstructorBinder","binders":[{"annotation":{"meta":null,"sourceSpan":{"end":[62,18],"start":[62,17]}},"binderType":"VarBinder","identifier":"f"}],"constructorName":{"identifier":"ConQuantified","moduleName":["Lib"]},"typeName":{"identifier":"TestBinderSum","moduleName":["Lib"]}}],"expression":{"abstraction":{"annotation":{"meta":null,"sourceSpan":{"end":[62,23],"start":[62,22]}},"kind":"Var","type":{"annotation":[{"end":[48,38],"name":"tests/purus/passing/Misc/Lib.purs","start":[48,20]},[]],"contents":{"identifier":"x","kind":{"annotation":[{"end":[48,34],"name":"tests/purus/passing/Misc/Lib.purs","start":[48,32]},[]],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"},"skolem":null,"type":{"annotation":[{"end":[48,38],"name":"tests/purus/passing/Misc/Lib.purs","start":[48,30]},[]],"contents":[{"annotation":[{"end":[48,38],"name":"tests/purus/passing/Misc/Lib.purs","start":[48,30]},[]],"contents":[{"annotation":[{"end":[48,34],"name":"tests/purus/passing/Misc/Lib.purs","start":[48,32]},[]],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[48,31],"name":"tests/purus/passing/Misc/Lib.purs","start":[48,30]},[]],"contents":"x","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[{"end":[48,38],"name":"tests/purus/passing/Misc/Lib.purs","start":[48,35]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}],"tag":"TypeApp"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"value":{"identifier":"f","sourcePos":[62,17]}},"annotation":{"meta":null,"sourceSpan":{"end":[62,31],"start":[62,22]}},"argument":{"annotation":{"meta":null,"sourceSpan":{"end":[62,31],"start":[62,24]}},"kind":"Literal","type":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"String"],"tag":"TypeConstructor"},"value":{"literalType":"StringLiteral","value":"hello"}},"kind":"App"},"isGuarded":false},{"binders":[{"annotation":{"meta":{"constructorType":"SumType","identifiers":["value0"],"metaType":"IsConstructor"},"sourceSpan":{"end":[63,19],"start":[63,3]}},"binderType":"ConstructorBinder","binders":[{"annotation":{"meta":null,"sourceSpan":{"end":[63,19],"start":[63,18]}},"binderType":"VarBinder","identifier":"f"}],"constructorName":{"identifier":"ConConstrained","moduleName":["Lib"]},"typeName":{"identifier":"TestBinderSum","moduleName":["Lib"]}}],"expression":{"abstraction":{"abstraction":{"annotation":{"meta":null,"sourceSpan":{"end":[63,24],"start":[63,23]}},"kind":"Var","type":{"annotation":[{"end":[49,47],"name":"tests/purus/passing/Misc/Lib.purs","start":[49,21]},[]],"contents":{"identifier":"x","kind":{"annotation":[{"end":[49,35],"name":"tests/purus/passing/Misc/Lib.purs","start":[49,31]},[]],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"},"skolem":null,"type":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Lib"],"Eq$Dict"],"tag":"TypeConstructor"},{"annotation":[{"end":[49,35],"name":"tests/purus/passing/Misc/Lib.purs","start":[49,34]},[]],"contents":"x","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[{"end":[49,47],"name":"tests/purus/passing/Misc/Lib.purs","start":[49,39]},[]],"contents":[{"annotation":[{"end":[49,47],"name":"tests/purus/passing/Misc/Lib.purs","start":[49,39]},[]],"contents":[{"annotation":[{"end":[49,43],"name":"tests/purus/passing/Misc/Lib.purs","start":[49,41]},[]],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[49,40],"name":"tests/purus/passing/Misc/Lib.purs","start":[49,39]},[]],"contents":"x","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[{"end":[49,47],"name":"tests/purus/passing/Misc/Lib.purs","start":[49,44]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"value":{"identifier":"f","sourcePos":[63,18]}},"annotation":{"meta":null,"sourceSpan":{"end":[63,26],"start":[63,23]}},"argument":{"annotation":{"meta":null,"sourceSpan":{"end":[0,0],"start":[0,0]}},"kind":"Var","type":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Lib"],"Eq$Dict"],"tag":"TypeConstructor"},{"annotation":[{"end":[11,16],"name":"tests/purus/passing/Misc/Lib.purs","start":[11,13]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}],"tag":"TypeApp"},"value":{"identifier":"eqInt","moduleName":["Lib"]}},"kind":"App"},"annotation":{"meta":null,"sourceSpan":{"end":[63,26],"start":[63,23]}},"argument":{"annotation":{"meta":null,"sourceSpan":{"end":[63,26],"start":[63,25]}},"kind":"Literal","type":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"},"value":{"literalType":"IntLiteral","value":2}},"kind":"App"},"isGuarded":false},{"binders":[{"annotation":{"meta":{"constructorType":"SumType","identifiers":["value0"],"metaType":"IsConstructor"},"sourceSpan":{"end":[64,18],"start":[64,3]}},"binderType":"ConstructorBinder","binders":[{"annotation":{"meta":null,"sourceSpan":{"end":[64,18],"start":[64,13]}},"binderType":"VarBinder","identifier":"other"}],"constructorName":{"identifier":"ConNested","moduleName":["Lib"]},"typeName":{"identifier":"TestBinderSum","moduleName":["Lib"]}}],"expression":{"annotation":{"meta":null,"sourceSpan":{"end":[64,23],"start":[64,22]}},"kind":"Literal","type":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"},"value":{"literalType":"IntLiteral","value":7}},"isGuarded":false},{"binders":[{"annotation":{"meta":{"constructorType":"SumType","identifiers":["value0"],"metaType":"IsConstructor"},"sourceSpan":{"end":[65,16],"start":[65,3]}},"binderType":"ConstructorBinder","binders":[{"annotation":{"meta":null,"sourceSpan":{"end":[65,16],"start":[65,13]}},"binderType":"VarBinder","identifier":"obj"}],"constructorName":{"identifier":"ConObject","moduleName":["Lib"]},"typeName":{"identifier":"TestBinderSum","moduleName":["Lib"]}}],"expression":{"annotation":{"meta":null,"sourceSpan":{"end":[65,32],"start":[65,20]}},"expression":{"annotation":{"meta":null,"sourceSpan":{"end":[65,23],"start":[65,20]}},"kind":"Var","type":{"annotation":[{"end":[50,32],"name":"tests/purus/passing/Misc/Lib.purs","start":[50,15]},[]],"contents":[{"annotation":[{"end":[50,16],"name":"tests/purus/passing/Misc/Lib.purs","start":[50,15]},[]],"contents":[["Prim"],"Record"],"tag":"TypeConstructor"},{"annotation":[{"end":[50,31],"name":"tests/purus/passing/Misc/Lib.purs","start":[50,16]},[]],"contents":["objField",{"annotation":[{"end":[50,31],"name":"tests/purus/passing/Misc/Lib.purs","start":[50,28]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"},{"annotation":[{"end":[50,32],"name":"tests/purus/passing/Misc/Lib.purs","start":[50,31]},[]],"contents":[{"annotation":[{"end":[50,32],"name":"tests/purus/passing/Misc/Lib.purs","start":[50,31]},[]],"tag":"REmpty"},{"annotation":[{"end":[50,31],"name":"tests/purus/passing/Misc/Lib.purs","start":[50,28]},[]],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"}],"tag":"KindApp"}],"tag":"RCons"}],"tag":"TypeApp"},"value":{"identifier":"obj","sourcePos":[65,13]}},"fieldName":"objField","kind":"Accessor","type":{"annotation":[{"end":[53,37],"name":"tests/purus/passing/Misc/Lib.purs","start":[53,34]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}},"isGuarded":false},{"binders":[{"annotation":{"meta":{"constructorType":"SumType","identifiers":["value0"],"metaType":"IsConstructor"},"sourceSpan":{"end":[66,27],"start":[66,3]}},"binderType":"ConstructorBinder","binders":[{"annotation":{"meta":null,"sourceSpan":{"end":[66,27],"start":[66,23]}},"binderType":"VarBinder","identifier":"objQ"}],"constructorName":{"identifier":"ConObjectQuantified","moduleName":["Lib"]},"typeName":{"identifier":"TestBinderSum","moduleName":["Lib"]}}],"expression":{"abstraction":{"annotation":{"meta":null,"sourceSpan":{"end":[66,45],"start":[66,31]}},"expression":{"annotation":{"meta":null,"sourceSpan":{"end":[66,35],"start":[66,31]}},"kind":"Var","type":{"annotation":[{"end":[51,58],"name":"tests/purus/passing/Misc/Lib.purs","start":[51,25]},[]],"contents":[{"annotation":[{"end":[51,26],"name":"tests/purus/passing/Misc/Lib.purs","start":[51,25]},[]],"contents":[["Prim"],"Record"],"tag":"TypeConstructor"},{"annotation":[{"end":[51,57],"name":"tests/purus/passing/Misc/Lib.purs","start":[51,26]},[]],"contents":["objFieldQ",{"annotation":[{"end":[51,57],"name":"tests/purus/passing/Misc/Lib.purs","start":[51,39]},[]],"contents":{"identifier":"x","kind":{"annotation":[{"end":[51,53],"name":"tests/purus/passing/Misc/Lib.purs","start":[51,51]},[]],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"},"skolem":null,"type":{"annotation":[{"end":[51,57],"name":"tests/purus/passing/Misc/Lib.purs","start":[51,49]},[]],"contents":[{"annotation":[{"end":[51,57],"name":"tests/purus/passing/Misc/Lib.purs","start":[51,49]},[]],"contents":[{"annotation":[{"end":[51,53],"name":"tests/purus/passing/Misc/Lib.purs","start":[51,51]},[]],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[51,50],"name":"tests/purus/passing/Misc/Lib.purs","start":[51,49]},[]],"contents":"x","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[{"end":[51,57],"name":"tests/purus/passing/Misc/Lib.purs","start":[51,54]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}],"tag":"TypeApp"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},{"annotation":[{"end":[51,58],"name":"tests/purus/passing/Misc/Lib.purs","start":[51,57]},[]],"contents":[{"annotation":[{"end":[51,58],"name":"tests/purus/passing/Misc/Lib.purs","start":[51,57]},[]],"tag":"REmpty"},{"annotation":[{"end":[51,57],"name":"tests/purus/passing/Misc/Lib.purs","start":[51,39]},[]],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"}],"tag":"KindApp"}],"tag":"RCons"}],"tag":"TypeApp"},"value":{"identifier":"objQ","sourcePos":[66,23]}},"fieldName":"objFieldQ","kind":"Accessor","type":{"annotation":[{"end":[51,57],"name":"tests/purus/passing/Misc/Lib.purs","start":[51,49]},[]],"contents":[{"annotation":[{"end":[51,57],"name":"tests/purus/passing/Misc/Lib.purs","start":[51,49]},[]],"contents":[{"annotation":[{"end":[51,53],"name":"tests/purus/passing/Misc/Lib.purs","start":[51,51]},[]],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"String"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[{"end":[51,57],"name":"tests/purus/passing/Misc/Lib.purs","start":[51,54]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}],"tag":"TypeApp"}},"annotation":{"meta":null,"sourceSpan":{"end":[66,53],"start":[66,31]}},"argument":{"annotation":{"meta":null,"sourceSpan":{"end":[66,53],"start":[66,46]}},"kind":"Literal","type":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"String"],"tag":"TypeConstructor"},"value":{"literalType":"StringLiteral","value":"world"}},"kind":"App"},"isGuarded":false},{"binders":[{"annotation":{"meta":{"constructorType":"SumType","identifiers":["value0"],"metaType":"IsConstructor"},"sourceSpan":{"end":[67,26],"start":[67,3]}},"binderType":"ConstructorBinder","binders":[{"annotation":{"meta":null,"sourceSpan":{"end":[67,26],"start":[67,13]}},"binderType":"LiteralBinder","literal":{"literalType":"ObjectLiteral","value":[["objField",{"annotation":{"meta":null,"sourceSpan":{"end":[67,25],"start":[67,24]}},"binderType":"VarBinder","identifier":"f"}]]}}],"constructorName":{"identifier":"ConObject","moduleName":["Lib"]},"typeName":{"identifier":"TestBinderSum","moduleName":["Lib"]}}],"expression":{"annotation":{"meta":null,"sourceSpan":{"end":[67,31],"start":[67,30]}},"kind":"Var","type":{"annotation":[{"end":[50,31],"name":"tests/purus/passing/Misc/Lib.purs","start":[50,28]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"},"value":{"identifier":"f","sourcePos":[67,24]}},"isGuarded":false},{"binders":[{"annotation":{"meta":null,"sourceSpan":{"end":[68,4],"start":[68,3]}},"binderType":"NullBinder"}],"expression":{"annotation":{"meta":null,"sourceSpan":{"end":[68,17],"start":[68,16]}},"kind":"Literal","type":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"},"value":{"literalType":"IntLiteral","value":0}},"isGuarded":false}],"caseExpressions":[{"annotation":{"meta":null,"sourceSpan":{"end":[54,23],"start":[54,22]}},"kind":"Var","type":{"annotation":[{"end":[53,29],"name":"tests/purus/passing/Misc/Lib.purs","start":[53,16]},[]],"contents":[["Lib"],"TestBinderSum"],"tag":"TypeConstructor"},"value":{"identifier":"x","sourcePos":[54,1]}}],"kind":"Case","type":{"annotation":[{"end":[53,37],"name":"tests/purus/passing/Misc/Lib.purs","start":[53,34]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}},"kind":"Abs","type":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[53,29],"name":"tests/purus/passing/Misc/Lib.purs","start":[53,16]},[]],"contents":[["Lib"],"TestBinderSum"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[{"end":[53,37],"name":"tests/purus/passing/Misc/Lib.purs","start":[53,34]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}],"tag":"TypeApp"}},"identifier":"testBinders"},{"bindType":"Rec","binds":[{"annotation":{"meta":null,"sourceSpan":{"end":[160,28],"start":[160,1]}},"expression":{"annotation":{"meta":null,"sourceSpan":{"end":[161,18],"start":[161,1]}},"argument":"x","body":{"abstraction":{"annotation":{"meta":null,"sourceSpan":{"end":[161,16],"start":[161,11]}},"kind":"Var","type":{"annotation":[{"end":[157,28],"name":"tests/purus/passing/Misc/Lib.purs","start":[157,10]},[]],"contents":{"identifier":"x","kind":{"annotation":[{"end":[157,24],"name":"tests/purus/passing/Misc/Lib.purs","start":[157,22]},[]],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"},"skolem":9,"type":{"annotation":[{"end":[157,28],"name":"tests/purus/passing/Misc/Lib.purs","start":[157,20]},[]],"contents":[{"annotation":[{"end":[157,28],"name":"tests/purus/passing/Misc/Lib.purs","start":[157,20]},[]],"contents":[{"annotation":[{"end":[157,24],"name":"tests/purus/passing/Misc/Lib.purs","start":[157,22]},[]],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[157,21],"name":"tests/purus/passing/Misc/Lib.purs","start":[157,20]},[]],"contents":"x","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[{"end":[157,28],"name":"tests/purus/passing/Misc/Lib.purs","start":[157,25]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}],"tag":"TypeApp"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"value":{"identifier":"recF1","moduleName":["Lib"]}},"annotation":{"meta":null,"sourceSpan":{"end":[161,18],"start":[161,11]}},"argument":{"annotation":{"meta":null,"sourceSpan":{"end":[161,18],"start":[161,17]}},"kind":"Var","type":{"annotation":[{"end":[160,21],"name":"tests/purus/passing/Misc/Lib.purs","start":[160,20]},[]],"contents":"x","tag":"TypeVar"},"value":{"identifier":"x","sourcePos":[161,1]}},"kind":"App"},"kind":"Abs","type":{"annotation":[{"end":[160,28],"name":"tests/purus/passing/Misc/Lib.purs","start":[160,10]},[]],"contents":{"identifier":"x","kind":{"annotation":[{"end":[160,24],"name":"tests/purus/passing/Misc/Lib.purs","start":[160,22]},[]],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"},"skolem":7,"type":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[160,21],"name":"tests/purus/passing/Misc/Lib.purs","start":[160,20]},[]],"contents":"x","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[{"end":[160,28],"name":"tests/purus/passing/Misc/Lib.purs","start":[160,25]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}],"tag":"TypeApp"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"identifier":"recG1"},{"annotation":{"meta":null,"sourceSpan":{"end":[157,28],"start":[157,1]}},"expression":{"annotation":{"meta":null,"sourceSpan":{"end":[158,18],"start":[158,1]}},"argument":"x","body":{"abstraction":{"annotation":{"meta":null,"sourceSpan":{"end":[158,16],"start":[158,11]}},"kind":"Var","type":{"annotation":[{"end":[160,28],"name":"tests/purus/passing/Misc/Lib.purs","start":[160,10]},[]],"contents":{"identifier":"x","kind":{"annotation":[{"end":[160,24],"name":"tests/purus/passing/Misc/Lib.purs","start":[160,22]},[]],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"},"skolem":6,"type":{"annotation":[{"end":[160,28],"name":"tests/purus/passing/Misc/Lib.purs","start":[160,20]},[]],"contents":[{"annotation":[{"end":[160,28],"name":"tests/purus/passing/Misc/Lib.purs","start":[160,20]},[]],"contents":[{"annotation":[{"end":[160,24],"name":"tests/purus/passing/Misc/Lib.purs","start":[160,22]},[]],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[160,21],"name":"tests/purus/passing/Misc/Lib.purs","start":[160,20]},[]],"contents":"x","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[{"end":[160,28],"name":"tests/purus/passing/Misc/Lib.purs","start":[160,25]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}],"tag":"TypeApp"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"value":{"identifier":"recG1","moduleName":["Lib"]}},"annotation":{"meta":null,"sourceSpan":{"end":[158,18],"start":[158,11]}},"argument":{"annotation":{"meta":null,"sourceSpan":{"end":[158,18],"start":[158,17]}},"kind":"Var","type":{"annotation":[{"end":[157,21],"name":"tests/purus/passing/Misc/Lib.purs","start":[157,20]},[]],"contents":"x","tag":"TypeVar"},"value":{"identifier":"x","sourcePos":[158,1]}},"kind":"App"},"kind":"Abs","type":{"annotation":[{"end":[157,28],"name":"tests/purus/passing/Misc/Lib.purs","start":[157,10]},[]],"contents":{"identifier":"x","kind":{"annotation":[{"end":[157,24],"name":"tests/purus/passing/Misc/Lib.purs","start":[157,22]},[]],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"},"skolem":10,"type":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[157,21],"name":"tests/purus/passing/Misc/Lib.purs","start":[157,20]},[]],"contents":"x","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[{"end":[157,28],"name":"tests/purus/passing/Misc/Lib.purs","start":[157,25]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}],"tag":"TypeApp"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"identifier":"recF1"}]},{"annotation":{"meta":null,"sourceSpan":{"end":[201,53],"start":[201,1]}},"bindType":"NonRec","expression":{"annotation":{"meta":{"metaType":"IsWhere"},"sourceSpan":{"end":[202,33],"start":[202,13]}},"binds":[{"annotation":{"meta":null,"sourceSpan":{"end":[204,29],"start":[204,5]}},"bindType":"NonRec","expression":{"annotation":{"meta":null,"sourceSpan":{"end":[205,13],"start":[205,5]}},"argument":"v","body":{"annotation":{"meta":null,"sourceSpan":{"end":[205,13],"start":[205,12]}},"kind":"Literal","type":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"},"value":{"literalType":"IntLiteral","value":5}},"kind":"Abs","type":{"annotation":[{"end":[204,29],"name":"tests/purus/passing/Misc/Lib.purs","start":[204,11]},[]],"contents":{"identifier":"y","kind":{"annotation":[{"end":[204,25],"name":"tests/purus/passing/Misc/Lib.purs","start":[204,23]},[]],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"},"skolem":14,"type":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[204,22],"name":"tests/purus/passing/Misc/Lib.purs","start":[204,21]},[]],"contents":"y","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[{"end":[204,29],"name":"tests/purus/passing/Misc/Lib.purs","start":[204,26]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}],"tag":"TypeApp"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"identifier":"go"}],"expression":{"annotation":{"meta":null,"sourceSpan":{"end":[202,33],"start":[202,13]}},"kind":"Literal","type":{"annotation":[{"end":[201,53],"name":"tests/purus/passing/Misc/Lib.purs","start":[201,14]},[]],"contents":[{"annotation":[{"end":[201,15],"name":"tests/purus/passing/Misc/Lib.purs","start":[201,14]},[]],"contents":[["Prim"],"Record"],"tag":"TypeConstructor"},{"annotation":[{"end":[201,40],"name":"tests/purus/passing/Misc/Lib.purs","start":[201,15]},[]],"contents":["bar",{"annotation":[{"end":[201,40],"name":"tests/purus/passing/Misc/Lib.purs","start":[201,22]},[]],"contents":{"identifier":"x","kind":{"annotation":[{"end":[201,36],"name":"tests/purus/passing/Misc/Lib.purs","start":[201,34]},[]],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"},"skolem":12,"type":{"annotation":[{"end":[201,40],"name":"tests/purus/passing/Misc/Lib.purs","start":[201,32]},[]],"contents":[{"annotation":[{"end":[201,40],"name":"tests/purus/passing/Misc/Lib.purs","start":[201,32]},[]],"contents":[{"annotation":[{"end":[201,36],"name":"tests/purus/passing/Misc/Lib.purs","start":[201,34]},[]],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[201,33],"name":"tests/purus/passing/Misc/Lib.purs","start":[201,32]},[]],"contents":"x","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[{"end":[201,40],"name":"tests/purus/passing/Misc/Lib.purs","start":[201,37]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}],"tag":"TypeApp"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},{"annotation":[{"end":[201,52],"name":"tests/purus/passing/Misc/Lib.purs","start":[201,42]},[]],"contents":["baz",{"annotation":[{"end":[201,52],"name":"tests/purus/passing/Misc/Lib.purs","start":[201,49]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"},{"annotation":[{"end":[201,53],"name":"tests/purus/passing/Misc/Lib.purs","start":[201,52]},[]],"contents":[{"annotation":[{"end":[201,53],"name":"tests/purus/passing/Misc/Lib.purs","start":[201,52]},[]],"tag":"REmpty"},{"annotation":[{"end":[201,40],"name":"tests/purus/passing/Misc/Lib.purs","start":[201,22]},[]],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"}],"tag":"KindApp"}],"tag":"RCons"}],"tag":"RCons"}],"tag":"TypeApp"},"value":{"literalType":"ObjectLiteral","value":[["baz",{"annotation":{"meta":null,"sourceSpan":{"end":[202,32],"start":[202,29]}},"kind":"Literal","type":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"},"value":{"literalType":"IntLiteral","value":100}}],["bar",{"annotation":{"meta":null,"sourceSpan":{"end":[202,21],"start":[202,19]}},"kind":"Var","type":{"annotation":[{"end":[204,29],"name":"tests/purus/passing/Misc/Lib.purs","start":[204,11]},[]],"contents":{"identifier":"y","kind":{"annotation":[{"end":[204,25],"name":"tests/purus/passing/Misc/Lib.purs","start":[204,23]},[]],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"},"skolem":14,"type":{"annotation":[{"end":[204,29],"name":"tests/purus/passing/Misc/Lib.purs","start":[204,21]},[]],"contents":[{"annotation":[{"end":[204,29],"name":"tests/purus/passing/Misc/Lib.purs","start":[204,21]},[]],"contents":[{"annotation":[{"end":[204,25],"name":"tests/purus/passing/Misc/Lib.purs","start":[204,23]},[]],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[204,22],"name":"tests/purus/passing/Misc/Lib.purs","start":[204,21]},[]],"contents":"y","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[{"end":[204,29],"name":"tests/purus/passing/Misc/Lib.purs","start":[204,26]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}],"tag":"TypeApp"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"value":{"identifier":"go","sourcePos":[204,5]}}]]}},"kind":"Let"},"identifier":"polyInObj"},{"annotation":{"meta":null,"sourceSpan":{"end":[207,22],"start":[207,1]}},"bindType":"NonRec","expression":{"annotation":{"meta":null,"sourceSpan":{"end":[209,32],"start":[208,18]}},"caseAlternatives":[{"binders":[{"annotation":{"meta":null,"sourceSpan":{"end":[209,19],"start":[209,3]}},"binderType":"LiteralBinder","literal":{"literalType":"ObjectLiteral","value":[["bar",{"annotation":{"meta":null,"sourceSpan":{"end":[209,10],"start":[209,9]}},"binderType":"VarBinder","identifier":"f"}],["baz",{"annotation":{"meta":null,"sourceSpan":{"end":[209,18],"start":[209,17]}},"binderType":"NullBinder"}]]}}],"expression":{"abstraction":{"annotation":{"meta":null,"sourceSpan":{"end":[209,24],"start":[209,23]}},"kind":"Var","type":{"annotation":[{"end":[201,40],"name":"tests/purus/passing/Misc/Lib.purs","start":[201,22]},[]],"contents":{"identifier":"x","kind":{"annotation":[{"end":[201,36],"name":"tests/purus/passing/Misc/Lib.purs","start":[201,34]},[]],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"},"skolem":12,"type":{"annotation":[{"end":[201,40],"name":"tests/purus/passing/Misc/Lib.purs","start":[201,32]},[]],"contents":[{"annotation":[{"end":[201,40],"name":"tests/purus/passing/Misc/Lib.purs","start":[201,32]},[]],"contents":[{"annotation":[{"end":[201,36],"name":"tests/purus/passing/Misc/Lib.purs","start":[201,34]},[]],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[201,33],"name":"tests/purus/passing/Misc/Lib.purs","start":[201,32]},[]],"contents":"x","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[{"end":[201,40],"name":"tests/purus/passing/Misc/Lib.purs","start":[201,37]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}],"tag":"TypeApp"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"value":{"identifier":"f","sourcePos":[209,9]}},"annotation":{"meta":null,"sourceSpan":{"end":[209,32],"start":[209,23]}},"argument":{"annotation":{"meta":null,"sourceSpan":{"end":[209,32],"start":[209,25]}},"kind":"Literal","type":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"String"],"tag":"TypeConstructor"},"value":{"literalType":"StringLiteral","value":"hello"}},"kind":"App"},"isGuarded":false}],"caseExpressions":[{"annotation":{"meta":null,"sourceSpan":{"end":[208,32],"start":[208,23]}},"kind":"Var","type":{"annotation":[{"end":[201,53],"name":"tests/purus/passing/Misc/Lib.purs","start":[201,14]},[]],"contents":[{"annotation":[{"end":[201,15],"name":"tests/purus/passing/Misc/Lib.purs","start":[201,14]},[]],"contents":[["Prim"],"Record"],"tag":"TypeConstructor"},{"annotation":[{"end":[201,40],"name":"tests/purus/passing/Misc/Lib.purs","start":[201,15]},[]],"contents":["bar",{"annotation":[{"end":[201,40],"name":"tests/purus/passing/Misc/Lib.purs","start":[201,22]},[]],"contents":{"identifier":"x","kind":{"annotation":[{"end":[201,36],"name":"tests/purus/passing/Misc/Lib.purs","start":[201,34]},[]],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"},"skolem":12,"type":{"annotation":[{"end":[201,40],"name":"tests/purus/passing/Misc/Lib.purs","start":[201,32]},[]],"contents":[{"annotation":[{"end":[201,40],"name":"tests/purus/passing/Misc/Lib.purs","start":[201,32]},[]],"contents":[{"annotation":[{"end":[201,36],"name":"tests/purus/passing/Misc/Lib.purs","start":[201,34]},[]],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[201,33],"name":"tests/purus/passing/Misc/Lib.purs","start":[201,32]},[]],"contents":"x","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[{"end":[201,40],"name":"tests/purus/passing/Misc/Lib.purs","start":[201,37]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}],"tag":"TypeApp"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},{"annotation":[{"end":[201,52],"name":"tests/purus/passing/Misc/Lib.purs","start":[201,42]},[]],"contents":["baz",{"annotation":[{"end":[201,52],"name":"tests/purus/passing/Misc/Lib.purs","start":[201,49]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"},{"annotation":[{"end":[201,53],"name":"tests/purus/passing/Misc/Lib.purs","start":[201,52]},[]],"contents":[{"annotation":[{"end":[201,53],"name":"tests/purus/passing/Misc/Lib.purs","start":[201,52]},[]],"tag":"REmpty"},{"annotation":[{"end":[201,40],"name":"tests/purus/passing/Misc/Lib.purs","start":[201,22]},[]],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"}],"tag":"KindApp"}],"tag":"RCons"}],"tag":"RCons"}],"tag":"TypeApp"},"value":{"identifier":"polyInObj","moduleName":["Lib"]}}],"kind":"Case","type":{"annotation":[{"end":[207,22],"name":"tests/purus/passing/Misc/Lib.purs","start":[207,19]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}},"identifier":"polyInObjMatch"},{"annotation":{"meta":null,"sourceSpan":{"end":[168,26],"start":[168,1]}},"bindType":"NonRec","expression":{"annotation":{"meta":null,"sourceSpan":{"end":[169,34],"start":[169,1]}},"argument":"a","body":{"annotation":{"meta":null,"sourceSpan":{"end":[169,34],"start":[169,1]}},"argument":"b","body":{"abstraction":{"abstraction":{"annotation":{"meta":null,"sourceSpan":{"end":[169,30],"start":[169,12]}},"kind":"Var","type":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"},"value":{"identifier":"addInteger","moduleName":["Builtin"]}},"annotation":{"meta":null,"sourceSpan":{"end":[169,32],"start":[169,12]}},"argument":{"annotation":{"meta":null,"sourceSpan":{"end":[169,32],"start":[169,31]}},"kind":"Var","type":{"annotation":[{"end":[168,12],"name":"tests/purus/passing/Misc/Lib.purs","start":[168,9]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"},"value":{"identifier":"a","sourcePos":[169,1]}},"kind":"App"},"annotation":{"meta":null,"sourceSpan":{"end":[169,34],"start":[169,12]}},"argument":{"annotation":{"meta":null,"sourceSpan":{"end":[169,34],"start":[169,33]}},"kind":"Var","type":{"annotation":[{"end":[168,19],"name":"tests/purus/passing/Misc/Lib.purs","start":[168,16]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"},"value":{"identifier":"b","sourcePos":[169,1]}},"kind":"App"},"kind":"Abs","type":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[168,19],"name":"tests/purus/passing/Misc/Lib.purs","start":[168,16]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[{"end":[168,26],"name":"tests/purus/passing/Misc/Lib.purs","start":[168,23]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}],"tag":"TypeApp"}},"kind":"Abs","type":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[168,12],"name":"tests/purus/passing/Misc/Lib.purs","start":[168,9]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[{"end":[168,26],"name":"tests/purus/passing/Misc/Lib.purs","start":[168,16]},[]],"contents":[{"annotation":[{"end":[168,26],"name":"tests/purus/passing/Misc/Lib.purs","start":[168,16]},[]],"contents":[{"annotation":[{"end":[168,22],"name":"tests/purus/passing/Misc/Lib.purs","start":[168,20]},[]],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[168,19],"name":"tests/purus/passing/Misc/Lib.purs","start":[168,16]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[{"end":[168,26],"name":"tests/purus/passing/Misc/Lib.purs","start":[168,23]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"identifier":"plus"},{"annotation":{"meta":null,"sourceSpan":{"end":[90,19],"start":[90,1]}},"bindType":"NonRec","expression":{"annotation":{"meta":null,"sourceSpan":{"end":[101,7],"start":[92,3]}},"binds":[{"annotation":{"meta":null,"sourceSpan":{"end":[95,41],"start":[95,8]}},"bindType":"NonRec","expression":{"annotation":{"meta":null,"sourceSpan":{"end":[96,15],"start":[96,8]}},"argument":"v","body":{"annotation":{"meta":null,"sourceSpan":{"end":[96,15],"start":[96,14]}},"kind":"Literal","type":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"},"value":{"literalType":"IntLiteral","value":5}},"kind":"Abs","type":{"annotation":[{"end":[95,41],"name":"tests/purus/passing/Misc/Lib.purs","start":[95,13]},[]],"contents":{"identifier":"a","kind":{"annotation":[{"end":[95,30],"name":"tests/purus/passing/Misc/Lib.purs","start":[95,26]},[]],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"},"skolem":17,"type":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[95,34],"name":"tests/purus/passing/Misc/Lib.purs","start":[95,33]},[]],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[{"end":[95,41],"name":"tests/purus/passing/Misc/Lib.purs","start":[95,38]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}],"tag":"TypeApp"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"identifier":"g"},{"annotation":{"meta":null,"sourceSpan":{"end":[92,23],"start":[92,8]}},"bindType":"NonRec","expression":{"annotation":{"meta":null,"sourceSpan":{"end":[93,15],"start":[93,8]}},"argument":"v","body":{"annotation":{"meta":null,"sourceSpan":{"end":[93,15],"start":[93,14]}},"kind":"Literal","type":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"},"value":{"literalType":"IntLiteral","value":4}},"kind":"Abs","type":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[92,16],"name":"tests/purus/passing/Misc/Lib.purs","start":[92,13]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[{"end":[92,23],"name":"tests/purus/passing/Misc/Lib.purs","start":[92,20]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}],"tag":"TypeApp"}},"identifier":"f"},{"annotation":{"meta":null,"sourceSpan":{"end":[100,18],"start":[98,8]}},"bindType":"NonRec","expression":{"annotation":{"meta":null,"sourceSpan":{"end":[100,18],"start":[98,12]}},"binds":[{"annotation":{"meta":null,"sourceSpan":{"end":[98,29],"start":[98,16]}},"bindType":"NonRec","expression":{"abstraction":{"annotation":{"meta":null,"sourceSpan":{"end":[98,21],"start":[98,20]}},"kind":"Var","type":{"annotation":[{"end":[95,41],"name":"tests/purus/passing/Misc/Lib.purs","start":[95,13]},[]],"contents":{"identifier":"a","kind":{"annotation":[{"end":[95,30],"name":"tests/purus/passing/Misc/Lib.purs","start":[95,26]},[]],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"},"skolem":17,"type":{"annotation":[{"end":[95,41],"name":"tests/purus/passing/Misc/Lib.purs","start":[95,33]},[]],"contents":[{"annotation":[{"end":[95,41],"name":"tests/purus/passing/Misc/Lib.purs","start":[95,33]},[]],"contents":[{"annotation":[{"end":[95,37],"name":"tests/purus/passing/Misc/Lib.purs","start":[95,35]},[]],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[95,34],"name":"tests/purus/passing/Misc/Lib.purs","start":[95,33]},[]],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[{"end":[95,41],"name":"tests/purus/passing/Misc/Lib.purs","start":[95,38]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}],"tag":"TypeApp"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"value":{"identifier":"g","sourcePos":[95,8]}},"annotation":{"meta":null,"sourceSpan":{"end":[98,29],"start":[98,20]}},"argument":{"annotation":{"meta":null,"sourceSpan":{"end":[98,29],"start":[98,22]}},"kind":"Literal","type":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"String"],"tag":"TypeConstructor"},"value":{"literalType":"StringLiteral","value":"hello"}},"kind":"App"},"identifier":"i"},{"annotation":{"meta":null,"sourceSpan":{"end":[99,23],"start":[99,16]}},"bindType":"NonRec","expression":{"abstraction":{"annotation":{"meta":null,"sourceSpan":{"end":[99,21],"start":[99,20]}},"kind":"Var","type":{"annotation":[{"end":[92,23],"name":"tests/purus/passing/Misc/Lib.purs","start":[92,13]},[]],"contents":[{"annotation":[{"end":[92,23],"name":"tests/purus/passing/Misc/Lib.purs","start":[92,13]},[]],"contents":[{"annotation":[{"end":[92,19],"name":"tests/purus/passing/Misc/Lib.purs","start":[92,17]},[]],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[92,16],"name":"tests/purus/passing/Misc/Lib.purs","start":[92,13]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[{"end":[92,23],"name":"tests/purus/passing/Misc/Lib.purs","start":[92,20]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}],"tag":"TypeApp"},"value":{"identifier":"f","sourcePos":[92,8]}},"annotation":{"meta":null,"sourceSpan":{"end":[99,23],"start":[99,20]}},"argument":{"annotation":{"meta":null,"sourceSpan":{"end":[99,23],"start":[99,22]}},"kind":"Var","type":{"annotation":[{"end":[95,41],"name":"tests/purus/passing/Misc/Lib.purs","start":[95,38]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"},"value":{"identifier":"i","sourcePos":[98,16]}},"kind":"App"},"identifier":"j"}],"expression":{"abstraction":{"annotation":{"meta":null,"sourceSpan":{"end":[100,16],"start":[100,15]}},"kind":"Var","type":{"annotation":[{"end":[92,23],"name":"tests/purus/passing/Misc/Lib.purs","start":[92,13]},[]],"contents":[{"annotation":[{"end":[92,23],"name":"tests/purus/passing/Misc/Lib.purs","start":[92,13]},[]],"contents":[{"annotation":[{"end":[92,19],"name":"tests/purus/passing/Misc/Lib.purs","start":[92,17]},[]],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[92,16],"name":"tests/purus/passing/Misc/Lib.purs","start":[92,13]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[{"end":[92,23],"name":"tests/purus/passing/Misc/Lib.purs","start":[92,20]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}],"tag":"TypeApp"},"value":{"identifier":"f","sourcePos":[92,8]}},"annotation":{"meta":null,"sourceSpan":{"end":[100,18],"start":[100,15]}},"argument":{"annotation":{"meta":null,"sourceSpan":{"end":[100,18],"start":[100,17]}},"kind":"Var","type":{"annotation":[{"end":[92,23],"name":"tests/purus/passing/Misc/Lib.purs","start":[92,20]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"},"value":{"identifier":"j","sourcePos":[99,16]}},"kind":"App"},"kind":"Let"},"identifier":"h"}],"expression":{"annotation":{"meta":null,"sourceSpan":{"end":[101,7],"start":[101,6]}},"kind":"Var","type":{"annotation":[{"end":[92,23],"name":"tests/purus/passing/Misc/Lib.purs","start":[92,20]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"},"value":{"identifier":"h","sourcePos":[98,8]}},"kind":"Let"},"identifier":"nestedBinds"},{"annotation":{"meta":null,"sourceSpan":{"end":[183,26],"start":[183,1]}},"bindType":"NonRec","expression":{"annotation":{"meta":{"metaType":"IsWhere"},"sourceSpan":{"end":[184,39],"start":[184,22]}},"binds":[{"annotation":{"meta":null,"sourceSpan":{"end":[186,14],"start":[186,5]}},"bindType":"NonRec","expression":{"annotation":{"meta":null,"sourceSpan":{"end":[186,14],"start":[186,5]}},"argument":"x","body":{"annotation":{"meta":null,"sourceSpan":{"end":[186,14],"start":[186,5]}},"argument":"v","body":{"annotation":{"meta":null,"sourceSpan":{"end":[186,14],"start":[186,13]}},"kind":"Var","type":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"},"value":{"identifier":"x","sourcePos":[186,5]}},"kind":"Abs","type":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}],"tag":"TypeApp"}},"kind":"Abs","type":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"identifier":"i"},{"annotation":{"meta":null,"sourceSpan":{"end":[191,13],"start":[189,5]}},"bindType":"NonRec","expression":{"annotation":{"meta":null,"sourceSpan":{"end":[0,0],"start":[0,0]}},"argument":"v","body":{"annotation":{"meta":null,"sourceSpan":{"end":[0,0],"start":[0,0]}},"caseAlternatives":[{"binders":[{"annotation":{"meta":null,"sourceSpan":{"end":[190,8],"start":[190,7]}},"binderType":"LiteralBinder","literal":{"literalType":"IntLiteral","value":2}}],"expression":{"annotation":{"meta":null,"sourceSpan":{"end":[190,13],"start":[190,12]}},"kind":"Literal","type":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"},"value":{"literalType":"IntLiteral","value":3}},"isGuarded":false},{"binders":[{"annotation":{"meta":null,"sourceSpan":{"end":[191,8],"start":[191,7]}},"binderType":"NullBinder"}],"expression":{"annotation":{"meta":null,"sourceSpan":{"end":[191,13],"start":[191,12]}},"kind":"Literal","type":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"},"value":{"literalType":"IntLiteral","value":5}},"isGuarded":false}],"caseExpressions":[{"annotation":{"meta":null,"sourceSpan":{"end":[0,0],"start":[0,0]}},"kind":"Var","type":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"},"value":{"identifier":"v","sourcePos":[0,0]}}],"kind":"Case","type":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}},"kind":"Abs","type":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}],"tag":"TypeApp"}},"identifier":"h"},{"annotation":{"meta":null,"sourceSpan":{"end":[188,12],"start":[188,5]}},"bindType":"NonRec","expression":{"annotation":{"meta":null,"sourceSpan":{"end":[188,12],"start":[188,5]}},"argument":"v","body":{"annotation":{"meta":null,"sourceSpan":{"end":[188,12],"start":[188,11]}},"kind":"Literal","type":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"},"value":{"literalType":"IntLiteral","value":5}},"kind":"Abs","type":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}],"tag":"TypeApp"}},"identifier":"g"},{"annotation":{"meta":null,"sourceSpan":{"end":[187,12],"start":[187,5]}},"bindType":"NonRec","expression":{"annotation":{"meta":null,"sourceSpan":{"end":[187,12],"start":[187,5]}},"argument":"x","body":{"annotation":{"meta":null,"sourceSpan":{"end":[187,12],"start":[187,11]}},"kind":"Var","type":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"},"value":{"identifier":"x","sourcePos":[187,5]}},"kind":"Abs","type":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}],"tag":"TypeApp"}},"identifier":"f"}],"expression":{"abstraction":{"abstraction":{"annotation":{"meta":null,"sourceSpan":{"end":[184,23],"start":[184,22]}},"kind":"Var","type":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"},"value":{"identifier":"i","sourcePos":[186,5]}},"annotation":{"meta":null,"sourceSpan":{"end":[184,37],"start":[184,22]}},"argument":{"abstraction":{"annotation":{"meta":null,"sourceSpan":{"end":[184,26],"start":[184,25]}},"kind":"Var","type":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}],"tag":"TypeApp"},"value":{"identifier":"f","sourcePos":[187,5]}},"annotation":{"meta":null,"sourceSpan":{"end":[184,36],"start":[184,25]}},"argument":{"abstraction":{"annotation":{"meta":null,"sourceSpan":{"end":[184,29],"start":[184,28]}},"kind":"Var","type":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}],"tag":"TypeApp"},"value":{"identifier":"g","sourcePos":[188,5]}},"annotation":{"meta":null,"sourceSpan":{"end":[184,35],"start":[184,28]}},"argument":{"abstraction":{"annotation":{"meta":null,"sourceSpan":{"end":[184,32],"start":[184,31]}},"kind":"Var","type":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}],"tag":"TypeApp"},"value":{"identifier":"h","sourcePos":[189,5]}},"annotation":{"meta":null,"sourceSpan":{"end":[184,34],"start":[184,31]}},"argument":{"annotation":{"meta":null,"sourceSpan":{"end":[184,34],"start":[184,33]}},"kind":"Literal","type":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"},"value":{"literalType":"IntLiteral","value":2}},"kind":"App"},"kind":"App"},"kind":"App"},"kind":"App"},"annotation":{"meta":null,"sourceSpan":{"end":[184,39],"start":[184,22]}},"argument":{"annotation":{"meta":null,"sourceSpan":{"end":[184,39],"start":[184,38]}},"kind":"Literal","type":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"},"value":{"literalType":"IntLiteral","value":4}},"kind":"App"},"kind":"Let"},"identifier":"nestedApplications"},{"annotation":{"meta":null,"sourceSpan":{"end":[83,44],"start":[83,1]}},"bindType":"NonRec","expression":{"annotation":{"meta":null,"sourceSpan":{"end":[88,10],"start":[85,3]}},"binds":[{"annotation":{"meta":null,"sourceSpan":{"end":[86,17],"start":[86,7]}},"bindType":"NonRec","expression":{"annotation":{"meta":null,"sourceSpan":{"end":[86,17],"start":[86,7]}},"argument":"x","body":{"annotation":{"meta":null,"sourceSpan":{"end":[86,17],"start":[86,7]}},"argument":"y","body":{"annotation":{"meta":null,"sourceSpan":{"end":[86,17],"start":[86,16]}},"kind":"Var","type":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"},"value":{"identifier":"y","sourcePos":[86,7]}},"kind":"Abs","type":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}],"tag":"TypeApp"}},"kind":"Abs","type":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"identifier":"h'"},{"annotation":{"meta":null,"sourceSpan":{"end":[87,25],"start":[87,7]}},"bindType":"NonRec","expression":{"annotation":{"meta":null,"sourceSpan":{"end":[87,25],"start":[87,7]}},"argument":"y","body":{"abstraction":{"abstraction":{"annotation":{"meta":null,"sourceSpan":{"end":[87,16],"start":[87,14]}},"kind":"Var","type":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"},"value":{"identifier":"h'","sourcePos":[86,7]}},"annotation":{"meta":null,"sourceSpan":{"end":[87,23],"start":[87,14]}},"argument":{"abstraction":{"annotation":{"meta":null,"sourceSpan":{"end":[87,20],"start":[87,18]}},"kind":"Var","type":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}],"tag":"TypeApp"},"value":{"identifier":"f'","sourcePos":[85,7]}},"annotation":{"meta":null,"sourceSpan":{"end":[87,22],"start":[87,18]}},"argument":{"annotation":{"meta":null,"sourceSpan":{"end":[87,22],"start":[87,21]}},"kind":"Var","type":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"},"value":{"identifier":"y","sourcePos":[87,7]}},"kind":"App"},"kind":"App"},"annotation":{"meta":null,"sourceSpan":{"end":[87,25],"start":[87,14]}},"argument":{"annotation":{"meta":null,"sourceSpan":{"end":[87,25],"start":[87,24]}},"kind":"Literal","type":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"},"value":{"literalType":"IntLiteral","value":3}},"kind":"App"},"kind":"Abs","type":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}],"tag":"TypeApp"}},"identifier":"g'"},{"annotation":{"meta":null,"sourceSpan":{"end":[85,18],"start":[85,7]}},"bindType":"NonRec","expression":{"annotation":{"meta":null,"sourceSpan":{"end":[85,18],"start":[85,7]}},"argument":"x","body":{"abstraction":{"annotation":{"meta":null,"sourceSpan":{"end":[85,16],"start":[85,14]}},"kind":"Var","type":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}],"tag":"TypeApp"},"value":{"identifier":"g'","sourcePos":[87,7]}},"annotation":{"meta":null,"sourceSpan":{"end":[85,18],"start":[85,14]}},"argument":{"annotation":{"meta":null,"sourceSpan":{"end":[85,18],"start":[85,17]}},"kind":"Literal","type":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"},"value":{"literalType":"IntLiteral","value":2}},"kind":"App"},"kind":"Abs","type":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}],"tag":"TypeApp"}},"identifier":"f'"}],"expression":{"abstraction":{"annotation":{"meta":null,"sourceSpan":{"end":[88,8],"start":[88,6]}},"kind":"Var","type":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}],"tag":"TypeApp"},"value":{"identifier":"g'","sourcePos":[87,7]}},"annotation":{"meta":null,"sourceSpan":{"end":[88,10],"start":[88,6]}},"argument":{"annotation":{"meta":null,"sourceSpan":{"end":[88,10],"start":[88,9]}},"kind":"Literal","type":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"},"value":{"literalType":"IntLiteral","value":3}},"kind":"App"},"kind":"Let"},"identifier":"mutuallyRecursiveBindingGroupNoTypes"},{"annotation":{"meta":null,"sourceSpan":{"end":[72,37],"start":[72,1]}},"bindType":"NonRec","expression":{"annotation":{"meta":null,"sourceSpan":{"end":[80,9],"start":[74,3]}},"binds":[{"annotation":{"meta":null,"sourceSpan":{"end":[76,29],"start":[76,7]}},"bindType":"NonRec","expression":{"annotation":{"meta":null,"sourceSpan":{"end":[77,16],"start":[77,7]}},"argument":"x","body":{"annotation":{"meta":null,"sourceSpan":{"end":[77,16],"start":[77,7]}},"argument":"y","body":{"annotation":{"meta":null,"sourceSpan":{"end":[77,16],"start":[77,15]}},"kind":"Var","type":{"annotation":[{"end":[76,22],"name":"tests/purus/passing/Misc/Lib.purs","start":[76,19]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"},"value":{"identifier":"y","sourcePos":[77,7]}},"kind":"Abs","type":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[76,22],"name":"tests/purus/passing/Misc/Lib.purs","start":[76,19]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[{"end":[76,29],"name":"tests/purus/passing/Misc/Lib.purs","start":[76,26]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}],"tag":"TypeApp"}},"kind":"Abs","type":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[76,15],"name":"tests/purus/passing/Misc/Lib.purs","start":[76,12]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[{"end":[76,29],"name":"tests/purus/passing/Misc/Lib.purs","start":[76,19]},[]],"contents":[{"annotation":[{"end":[76,29],"name":"tests/purus/passing/Misc/Lib.purs","start":[76,19]},[]],"contents":[{"annotation":[{"end":[76,25],"name":"tests/purus/passing/Misc/Lib.purs","start":[76,23]},[]],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[76,22],"name":"tests/purus/passing/Misc/Lib.purs","start":[76,19]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[{"end":[76,29],"name":"tests/purus/passing/Misc/Lib.purs","start":[76,26]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"identifier":"h"},{"annotation":{"meta":null,"sourceSpan":{"end":[78,22],"start":[78,7]}},"bindType":"NonRec","expression":{"annotation":{"meta":null,"sourceSpan":{"end":[79,22],"start":[79,7]}},"argument":"y","body":{"abstraction":{"abstraction":{"annotation":{"meta":null,"sourceSpan":{"end":[79,14],"start":[79,13]}},"kind":"Var","type":{"annotation":[{"end":[76,29],"name":"tests/purus/passing/Misc/Lib.purs","start":[76,12]},[]],"contents":[{"annotation":[{"end":[76,29],"name":"tests/purus/passing/Misc/Lib.purs","start":[76,12]},[]],"contents":[{"annotation":[{"end":[76,18],"name":"tests/purus/passing/Misc/Lib.purs","start":[76,16]},[]],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[76,15],"name":"tests/purus/passing/Misc/Lib.purs","start":[76,12]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[{"end":[76,29],"name":"tests/purus/passing/Misc/Lib.purs","start":[76,19]},[]],"contents":[{"annotation":[{"end":[76,29],"name":"tests/purus/passing/Misc/Lib.purs","start":[76,19]},[]],"contents":[{"annotation":[{"end":[76,25],"name":"tests/purus/passing/Misc/Lib.purs","start":[76,23]},[]],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[76,22],"name":"tests/purus/passing/Misc/Lib.purs","start":[76,19]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[{"end":[76,29],"name":"tests/purus/passing/Misc/Lib.purs","start":[76,26]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"},"value":{"identifier":"h","sourcePos":[76,7]}},"annotation":{"meta":null,"sourceSpan":{"end":[79,20],"start":[79,13]}},"argument":{"abstraction":{"annotation":{"meta":null,"sourceSpan":{"end":[79,17],"start":[79,16]}},"kind":"Var","type":{"annotation":[{"end":[74,22],"name":"tests/purus/passing/Misc/Lib.purs","start":[74,12]},[]],"contents":[{"annotation":[{"end":[74,22],"name":"tests/purus/passing/Misc/Lib.purs","start":[74,12]},[]],"contents":[{"annotation":[{"end":[74,18],"name":"tests/purus/passing/Misc/Lib.purs","start":[74,16]},[]],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[74,15],"name":"tests/purus/passing/Misc/Lib.purs","start":[74,12]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[{"end":[74,22],"name":"tests/purus/passing/Misc/Lib.purs","start":[74,19]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}],"tag":"TypeApp"},"value":{"identifier":"f","sourcePos":[74,7]}},"annotation":{"meta":null,"sourceSpan":{"end":[79,19],"start":[79,16]}},"argument":{"annotation":{"meta":null,"sourceSpan":{"end":[79,19],"start":[79,18]}},"kind":"Var","type":{"annotation":[{"end":[78,15],"name":"tests/purus/passing/Misc/Lib.purs","start":[78,12]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"},"value":{"identifier":"y","sourcePos":[79,7]}},"kind":"App"},"kind":"App"},"annotation":{"meta":null,"sourceSpan":{"end":[79,22],"start":[79,13]}},"argument":{"annotation":{"meta":null,"sourceSpan":{"end":[79,22],"start":[79,21]}},"kind":"Literal","type":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"},"value":{"literalType":"IntLiteral","value":3}},"kind":"App"},"kind":"Abs","type":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[78,15],"name":"tests/purus/passing/Misc/Lib.purs","start":[78,12]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[{"end":[78,22],"name":"tests/purus/passing/Misc/Lib.purs","start":[78,19]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}],"tag":"TypeApp"}},"identifier":"g"},{"annotation":{"meta":null,"sourceSpan":{"end":[74,22],"start":[74,7]}},"bindType":"NonRec","expression":{"annotation":{"meta":null,"sourceSpan":{"end":[75,16],"start":[75,7]}},"argument":"x","body":{"abstraction":{"annotation":{"meta":null,"sourceSpan":{"end":[75,14],"start":[75,13]}},"kind":"Var","type":{"annotation":[{"end":[78,22],"name":"tests/purus/passing/Misc/Lib.purs","start":[78,12]},[]],"contents":[{"annotation":[{"end":[78,22],"name":"tests/purus/passing/Misc/Lib.purs","start":[78,12]},[]],"contents":[{"annotation":[{"end":[78,18],"name":"tests/purus/passing/Misc/Lib.purs","start":[78,16]},[]],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[78,15],"name":"tests/purus/passing/Misc/Lib.purs","start":[78,12]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[{"end":[78,22],"name":"tests/purus/passing/Misc/Lib.purs","start":[78,19]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}],"tag":"TypeApp"},"value":{"identifier":"g","sourcePos":[78,7]}},"annotation":{"meta":null,"sourceSpan":{"end":[75,16],"start":[75,13]}},"argument":{"annotation":{"meta":null,"sourceSpan":{"end":[75,16],"start":[75,15]}},"kind":"Literal","type":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"},"value":{"literalType":"IntLiteral","value":2}},"kind":"App"},"kind":"Abs","type":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[74,15],"name":"tests/purus/passing/Misc/Lib.purs","start":[74,12]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[{"end":[74,22],"name":"tests/purus/passing/Misc/Lib.purs","start":[74,19]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}],"tag":"TypeApp"}},"identifier":"f"}],"expression":{"abstraction":{"annotation":{"meta":null,"sourceSpan":{"end":[80,7],"start":[80,6]}},"kind":"Var","type":{"annotation":[{"end":[78,22],"name":"tests/purus/passing/Misc/Lib.purs","start":[78,12]},[]],"contents":[{"annotation":[{"end":[78,22],"name":"tests/purus/passing/Misc/Lib.purs","start":[78,12]},[]],"contents":[{"annotation":[{"end":[78,18],"name":"tests/purus/passing/Misc/Lib.purs","start":[78,16]},[]],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[78,15],"name":"tests/purus/passing/Misc/Lib.purs","start":[78,12]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[{"end":[78,22],"name":"tests/purus/passing/Misc/Lib.purs","start":[78,19]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}],"tag":"TypeApp"},"value":{"identifier":"g","sourcePos":[78,7]}},"annotation":{"meta":null,"sourceSpan":{"end":[80,9],"start":[80,6]}},"argument":{"annotation":{"meta":null,"sourceSpan":{"end":[80,9],"start":[80,8]}},"kind":"Literal","type":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"},"value":{"literalType":"IntLiteral","value":3}},"kind":"App"},"kind":"Let"},"identifier":"mutuallyRecursiveBindingGroup"},{"annotation":{"meta":null,"sourceSpan":{"end":[8,27],"start":[8,1]}},"bindType":"NonRec","expression":{"annotation":{"meta":null,"sourceSpan":{"end":[9,15],"start":[9,1]}},"argument":"v","body":{"annotation":{"meta":null,"sourceSpan":{"end":[9,15],"start":[9,1]}},"argument":"v1","body":{"annotation":{"meta":null,"sourceSpan":{"end":[9,15],"start":[9,13]}},"kind":"Literal","type":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"},"value":{"literalType":"IntLiteral","value":42}},"kind":"Abs","type":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[8,20],"name":"tests/purus/passing/Misc/Lib.purs","start":[8,17]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[{"end":[8,27],"name":"tests/purus/passing/Misc/Lib.purs","start":[8,24]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}],"tag":"TypeApp"}},"kind":"Abs","type":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[8,13],"name":"tests/purus/passing/Misc/Lib.purs","start":[8,10]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[{"end":[8,27],"name":"tests/purus/passing/Misc/Lib.purs","start":[8,17]},[]],"contents":[{"annotation":[{"end":[8,27],"name":"tests/purus/passing/Misc/Lib.purs","start":[8,17]},[]],"contents":[{"annotation":[{"end":[8,23],"name":"tests/purus/passing/Misc/Lib.purs","start":[8,21]},[]],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[8,20],"name":"tests/purus/passing/Misc/Lib.purs","start":[8,17]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[{"end":[8,27],"name":"tests/purus/passing/Misc/Lib.purs","start":[8,24]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"identifier":"minus"},{"annotation":{"meta":null,"sourceSpan":{"end":[173,16],"start":[173,1]}},"bindType":"NonRec","expression":{"abstraction":{"abstraction":{"annotation":{"meta":null,"sourceSpan":{"end":[173,12],"start":[173,8]}},"kind":"Var","type":{"annotation":[{"end":[168,26],"name":"tests/purus/passing/Misc/Lib.purs","start":[168,9]},[]],"contents":[{"annotation":[{"end":[168,26],"name":"tests/purus/passing/Misc/Lib.purs","start":[168,9]},[]],"contents":[{"annotation":[{"end":[168,15],"name":"tests/purus/passing/Misc/Lib.purs","start":[168,13]},[]],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[168,12],"name":"tests/purus/passing/Misc/Lib.purs","start":[168,9]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[{"end":[168,26],"name":"tests/purus/passing/Misc/Lib.purs","start":[168,16]},[]],"contents":[{"annotation":[{"end":[168,26],"name":"tests/purus/passing/Misc/Lib.purs","start":[168,16]},[]],"contents":[{"annotation":[{"end":[168,22],"name":"tests/purus/passing/Misc/Lib.purs","start":[168,20]},[]],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[168,19],"name":"tests/purus/passing/Misc/Lib.purs","start":[168,16]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[{"end":[168,26],"name":"tests/purus/passing/Misc/Lib.purs","start":[168,23]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"},"value":{"identifier":"plus","moduleName":["Lib"]}},"annotation":{"meta":null,"sourceSpan":{"end":[173,14],"start":[173,8]}},"argument":{"annotation":{"meta":null,"sourceSpan":{"end":[173,14],"start":[173,13]}},"kind":"Literal","type":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"},"value":{"literalType":"IntLiteral","value":1}},"kind":"App"},"annotation":{"meta":null,"sourceSpan":{"end":[173,16],"start":[173,8]}},"argument":{"annotation":{"meta":null,"sourceSpan":{"end":[173,16],"start":[173,15]}},"kind":"Literal","type":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"},"value":{"literalType":"IntLiteral","value":1}},"kind":"App"},"identifier":"main"},{"annotation":{"meta":null,"sourceSpan":{"end":[30,27],"start":[30,3]}},"bindType":"NonRec","expression":{"annotation":{"meta":null,"sourceSpan":{"end":[30,27],"start":[30,3]}},"argument":"dict","body":{"annotation":{"meta":null,"sourceSpan":{"end":[30,27],"start":[30,3]}},"caseAlternatives":[{"binders":[{"annotation":{"meta":{"metaType":"IsNewtype"},"sourceSpan":{"end":[30,27],"start":[30,3]}},"binderType":"ConstructorBinder","binders":[{"annotation":{"meta":null,"sourceSpan":{"end":[30,27],"start":[30,3]}},"binderType":"VarBinder","identifier":"v"}],"constructorName":{"identifier":"Eq2$Dict","moduleName":["Lib"]},"typeName":{"identifier":"Eq2$Dict","moduleName":["Lib"]}}],"expression":{"annotation":{"meta":null,"sourceSpan":{"end":[30,27],"start":[30,3]}},"expression":{"annotation":{"meta":null,"sourceSpan":{"end":[30,27],"start":[30,3]}},"kind":"Var","type":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Record"],"tag":"TypeConstructor"},{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":["eq2",{"annotation":[{"end":[30,27],"name":"tests/purus/passing/Misc/Lib.purs","start":[30,10]},[]],"contents":[{"annotation":[{"end":[30,27],"name":"tests/purus/passing/Misc/Lib.purs","start":[30,10]},[]],"contents":[{"annotation":[{"end":[30,14],"name":"tests/purus/passing/Misc/Lib.purs","start":[30,12]},[]],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[{"end":[30,27],"name":"tests/purus/passing/Misc/Lib.purs","start":[30,15]},[]],"contents":[{"annotation":[{"end":[30,27],"name":"tests/purus/passing/Misc/Lib.purs","start":[30,15]},[]],"contents":[{"annotation":[{"end":[30,19],"name":"tests/purus/passing/Misc/Lib.purs","start":[30,17]},[]],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":"b","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[{"end":[30,27],"name":"tests/purus/passing/Misc/Lib.purs","start":[30,20]},[]],"contents":[["Prim"],"Boolean"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"tag":"REmpty"},{"annotation":[{"end":[30,14],"name":"tests/purus/passing/Misc/Lib.purs","start":[30,12]},[]],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"}],"tag":"KindApp"}],"tag":"RCons"}],"tag":"TypeApp"},"value":{"identifier":"v","sourcePos":[30,3]}},"fieldName":"eq2","kind":"Accessor","type":{"annotation":[{"end":[30,27],"name":"tests/purus/passing/Misc/Lib.purs","start":[30,10]},[]],"contents":[{"annotation":[{"end":[30,27],"name":"tests/purus/passing/Misc/Lib.purs","start":[30,10]},[]],"contents":[{"annotation":[{"end":[30,14],"name":"tests/purus/passing/Misc/Lib.purs","start":[30,12]},[]],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[30,11],"name":"tests/purus/passing/Misc/Lib.purs","start":[30,10]},[]],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[{"end":[30,27],"name":"tests/purus/passing/Misc/Lib.purs","start":[30,15]},[]],"contents":[{"annotation":[{"end":[30,27],"name":"tests/purus/passing/Misc/Lib.purs","start":[30,15]},[]],"contents":[{"annotation":[{"end":[30,19],"name":"tests/purus/passing/Misc/Lib.purs","start":[30,17]},[]],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[30,16],"name":"tests/purus/passing/Misc/Lib.purs","start":[30,15]},[]],"contents":"b","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[{"end":[30,27],"name":"tests/purus/passing/Misc/Lib.purs","start":[30,20]},[]],"contents":[["Prim"],"Boolean"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"isGuarded":false}],"caseExpressions":[{"annotation":{"meta":null,"sourceSpan":{"end":[30,27],"start":[30,3]}},"kind":"Var","type":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Lib"],"Eq2$Dict"],"tag":"TypeConstructor"},{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":"b","tag":"TypeVar"}],"tag":"TypeApp"},"value":{"identifier":"dict","sourcePos":[0,0]}}],"kind":"Case","type":{"annotation":[{"end":[30,27],"name":"tests/purus/passing/Misc/Lib.purs","start":[30,10]},[]],"contents":[{"annotation":[{"end":[30,27],"name":"tests/purus/passing/Misc/Lib.purs","start":[30,10]},[]],"contents":[{"annotation":[{"end":[30,14],"name":"tests/purus/passing/Misc/Lib.purs","start":[30,12]},[]],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[30,11],"name":"tests/purus/passing/Misc/Lib.purs","start":[30,10]},[]],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[{"end":[30,27],"name":"tests/purus/passing/Misc/Lib.purs","start":[30,15]},[]],"contents":[{"annotation":[{"end":[30,27],"name":"tests/purus/passing/Misc/Lib.purs","start":[30,15]},[]],"contents":[{"annotation":[{"end":[30,19],"name":"tests/purus/passing/Misc/Lib.purs","start":[30,17]},[]],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[30,16],"name":"tests/purus/passing/Misc/Lib.purs","start":[30,15]},[]],"contents":"b","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[{"end":[30,27],"name":"tests/purus/passing/Misc/Lib.purs","start":[30,20]},[]],"contents":[["Prim"],"Boolean"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"kind":"Abs","type":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":{"identifier":"a","kind":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"},"skolem":19,"type":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":{"identifier":"b","kind":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"},"skolem":18,"type":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Lib"],"Eq2$Dict"],"tag":"TypeConstructor"},{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":"b","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[{"end":[30,27],"name":"tests/purus/passing/Misc/Lib.purs","start":[30,10]},[]],"contents":[{"annotation":[{"end":[30,27],"name":"tests/purus/passing/Misc/Lib.purs","start":[30,10]},[]],"contents":[{"annotation":[{"end":[30,14],"name":"tests/purus/passing/Misc/Lib.purs","start":[30,12]},[]],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[30,11],"name":"tests/purus/passing/Misc/Lib.purs","start":[30,10]},[]],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[{"end":[30,27],"name":"tests/purus/passing/Misc/Lib.purs","start":[30,15]},[]],"contents":[{"annotation":[{"end":[30,27],"name":"tests/purus/passing/Misc/Lib.purs","start":[30,15]},[]],"contents":[{"annotation":[{"end":[30,19],"name":"tests/purus/passing/Misc/Lib.purs","start":[30,17]},[]],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[30,16],"name":"tests/purus/passing/Misc/Lib.purs","start":[30,15]},[]],"contents":"b","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[{"end":[30,27],"name":"tests/purus/passing/Misc/Lib.purs","start":[30,20]},[]],"contents":[["Prim"],"Boolean"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"},"visibility":"TypeVarVisible"},"tag":"ForAll"},"visibility":"TypeVarVisible"},"tag":"ForAll"}},"identifier":"eq2"},{"annotation":{"meta":null,"sourceSpan":{"end":[35,19],"start":[35,1]}},"bindType":"NonRec","expression":{"abstraction":{"abstraction":{"abstraction":{"annotation":{"meta":null,"sourceSpan":{"end":[36,14],"start":[36,11]}},"kind":"Var","type":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":{"identifier":"a","kind":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"},"skolem":19,"type":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":{"identifier":"b","kind":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"},"skolem":18,"type":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Lib"],"Eq2$Dict"],"tag":"TypeConstructor"},{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":"b","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[{"end":[30,27],"name":"tests/purus/passing/Misc/Lib.purs","start":[30,10]},[]],"contents":[{"annotation":[{"end":[30,27],"name":"tests/purus/passing/Misc/Lib.purs","start":[30,10]},[]],"contents":[{"annotation":[{"end":[30,14],"name":"tests/purus/passing/Misc/Lib.purs","start":[30,12]},[]],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[30,11],"name":"tests/purus/passing/Misc/Lib.purs","start":[30,10]},[]],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[{"end":[30,27],"name":"tests/purus/passing/Misc/Lib.purs","start":[30,15]},[]],"contents":[{"annotation":[{"end":[30,27],"name":"tests/purus/passing/Misc/Lib.purs","start":[30,15]},[]],"contents":[{"annotation":[{"end":[30,19],"name":"tests/purus/passing/Misc/Lib.purs","start":[30,17]},[]],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[30,16],"name":"tests/purus/passing/Misc/Lib.purs","start":[30,15]},[]],"contents":"b","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[{"end":[30,27],"name":"tests/purus/passing/Misc/Lib.purs","start":[30,20]},[]],"contents":[["Prim"],"Boolean"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"},"visibility":"TypeVarVisible"},"tag":"ForAll"},"visibility":"TypeVarVisible"},"tag":"ForAll"},"value":{"identifier":"eq2","moduleName":["Lib"]}},"annotation":{"meta":null,"sourceSpan":{"end":[36,18],"start":[36,11]}},"argument":{"annotation":{"meta":null,"sourceSpan":{"end":[0,0],"start":[0,0]}},"kind":"Var","type":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Lib"],"Eq2$Dict"],"tag":"TypeConstructor"},{"annotation":[{"end":[32,17],"name":"tests/purus/passing/Misc/Lib.purs","start":[32,14]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[{"end":[32,25],"name":"tests/purus/passing/Misc/Lib.purs","start":[32,18]},[]],"contents":[["Prim"],"Boolean"],"tag":"TypeConstructor"}],"tag":"TypeApp"},"value":{"identifier":"eq2IntBoolean","moduleName":["Lib"]}},"kind":"App"},"annotation":{"meta":null,"sourceSpan":{"end":[36,18],"start":[36,11]}},"argument":{"annotation":{"meta":null,"sourceSpan":{"end":[36,18],"start":[36,15]}},"kind":"Literal","type":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"},"value":{"literalType":"IntLiteral","value":101}},"kind":"App"},"annotation":{"meta":null,"sourceSpan":{"end":[36,24],"start":[36,11]}},"argument":{"annotation":{"meta":null,"sourceSpan":{"end":[36,24],"start":[36,19]}},"kind":"Literal","type":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Boolean"],"tag":"TypeConstructor"},"value":{"literalType":"BooleanLiteral","value":false}},"kind":"App"},"identifier":"testEq2"},{"annotation":{"meta":null,"sourceSpan":{"end":[6,26],"start":[6,3]}},"bindType":"NonRec","expression":{"annotation":{"meta":null,"sourceSpan":{"end":[6,26],"start":[6,3]}},"argument":"dict","body":{"annotation":{"meta":null,"sourceSpan":{"end":[6,26],"start":[6,3]}},"caseAlternatives":[{"binders":[{"annotation":{"meta":{"metaType":"IsNewtype"},"sourceSpan":{"end":[6,26],"start":[6,3]}},"binderType":"ConstructorBinder","binders":[{"annotation":{"meta":null,"sourceSpan":{"end":[6,26],"start":[6,3]}},"binderType":"VarBinder","identifier":"v"}],"constructorName":{"identifier":"Eq$Dict","moduleName":["Lib"]},"typeName":{"identifier":"Eq$Dict","moduleName":["Lib"]}}],"expression":{"annotation":{"meta":null,"sourceSpan":{"end":[6,26],"start":[6,3]}},"expression":{"annotation":{"meta":null,"sourceSpan":{"end":[6,26],"start":[6,3]}},"kind":"Var","type":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Record"],"tag":"TypeConstructor"},{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":["eq",{"annotation":[{"end":[6,26],"name":"tests/purus/passing/Misc/Lib.purs","start":[6,9]},[]],"contents":[{"annotation":[{"end":[6,26],"name":"tests/purus/passing/Misc/Lib.purs","start":[6,9]},[]],"contents":[{"annotation":[{"end":[6,13],"name":"tests/purus/passing/Misc/Lib.purs","start":[6,11]},[]],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[{"end":[6,26],"name":"tests/purus/passing/Misc/Lib.purs","start":[6,14]},[]],"contents":[{"annotation":[{"end":[6,26],"name":"tests/purus/passing/Misc/Lib.purs","start":[6,14]},[]],"contents":[{"annotation":[{"end":[6,18],"name":"tests/purus/passing/Misc/Lib.purs","start":[6,16]},[]],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[{"end":[6,26],"name":"tests/purus/passing/Misc/Lib.purs","start":[6,19]},[]],"contents":[["Prim"],"Boolean"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"tag":"REmpty"},{"annotation":[{"end":[6,13],"name":"tests/purus/passing/Misc/Lib.purs","start":[6,11]},[]],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"}],"tag":"KindApp"}],"tag":"RCons"}],"tag":"TypeApp"},"value":{"identifier":"v","sourcePos":[6,3]}},"fieldName":"eq","kind":"Accessor","type":{"annotation":[{"end":[6,26],"name":"tests/purus/passing/Misc/Lib.purs","start":[6,9]},[]],"contents":[{"annotation":[{"end":[6,26],"name":"tests/purus/passing/Misc/Lib.purs","start":[6,9]},[]],"contents":[{"annotation":[{"end":[6,13],"name":"tests/purus/passing/Misc/Lib.purs","start":[6,11]},[]],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[6,10],"name":"tests/purus/passing/Misc/Lib.purs","start":[6,9]},[]],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[{"end":[6,26],"name":"tests/purus/passing/Misc/Lib.purs","start":[6,14]},[]],"contents":[{"annotation":[{"end":[6,26],"name":"tests/purus/passing/Misc/Lib.purs","start":[6,14]},[]],"contents":[{"annotation":[{"end":[6,18],"name":"tests/purus/passing/Misc/Lib.purs","start":[6,16]},[]],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[6,15],"name":"tests/purus/passing/Misc/Lib.purs","start":[6,14]},[]],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[{"end":[6,26],"name":"tests/purus/passing/Misc/Lib.purs","start":[6,19]},[]],"contents":[["Prim"],"Boolean"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"isGuarded":false}],"caseExpressions":[{"annotation":{"meta":null,"sourceSpan":{"end":[6,26],"start":[6,3]}},"kind":"Var","type":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Lib"],"Eq$Dict"],"tag":"TypeConstructor"},{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},"value":{"identifier":"dict","sourcePos":[0,0]}}],"kind":"Case","type":{"annotation":[{"end":[6,26],"name":"tests/purus/passing/Misc/Lib.purs","start":[6,9]},[]],"contents":[{"annotation":[{"end":[6,26],"name":"tests/purus/passing/Misc/Lib.purs","start":[6,9]},[]],"contents":[{"annotation":[{"end":[6,13],"name":"tests/purus/passing/Misc/Lib.purs","start":[6,11]},[]],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[6,10],"name":"tests/purus/passing/Misc/Lib.purs","start":[6,9]},[]],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[{"end":[6,26],"name":"tests/purus/passing/Misc/Lib.purs","start":[6,14]},[]],"contents":[{"annotation":[{"end":[6,26],"name":"tests/purus/passing/Misc/Lib.purs","start":[6,14]},[]],"contents":[{"annotation":[{"end":[6,18],"name":"tests/purus/passing/Misc/Lib.purs","start":[6,16]},[]],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[6,15],"name":"tests/purus/passing/Misc/Lib.purs","start":[6,14]},[]],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[{"end":[6,26],"name":"tests/purus/passing/Misc/Lib.purs","start":[6,19]},[]],"contents":[["Prim"],"Boolean"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"kind":"Abs","type":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":{"identifier":"a","kind":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"},"skolem":20,"type":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Lib"],"Eq$Dict"],"tag":"TypeConstructor"},{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[{"end":[6,26],"name":"tests/purus/passing/Misc/Lib.purs","start":[6,9]},[]],"contents":[{"annotation":[{"end":[6,26],"name":"tests/purus/passing/Misc/Lib.purs","start":[6,9]},[]],"contents":[{"annotation":[{"end":[6,13],"name":"tests/purus/passing/Misc/Lib.purs","start":[6,11]},[]],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[6,10],"name":"tests/purus/passing/Misc/Lib.purs","start":[6,9]},[]],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[{"end":[6,26],"name":"tests/purus/passing/Misc/Lib.purs","start":[6,14]},[]],"contents":[{"annotation":[{"end":[6,26],"name":"tests/purus/passing/Misc/Lib.purs","start":[6,14]},[]],"contents":[{"annotation":[{"end":[6,18],"name":"tests/purus/passing/Misc/Lib.purs","start":[6,16]},[]],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[6,15],"name":"tests/purus/passing/Misc/Lib.purs","start":[6,14]},[]],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[{"end":[6,26],"name":"tests/purus/passing/Misc/Lib.purs","start":[6,19]},[]],"contents":[["Prim"],"Boolean"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"},"visibility":"TypeVarVisible"},"tag":"ForAll"}},"identifier":"eq"},{"annotation":{"meta":null,"sourceSpan":{"end":[14,18],"start":[14,1]}},"bindType":"NonRec","expression":{"abstraction":{"abstraction":{"abstraction":{"annotation":{"meta":null,"sourceSpan":{"end":[15,12],"start":[15,10]}},"kind":"Var","type":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":{"identifier":"a","kind":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"},"skolem":20,"type":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Lib"],"Eq$Dict"],"tag":"TypeConstructor"},{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[{"end":[6,26],"name":"tests/purus/passing/Misc/Lib.purs","start":[6,9]},[]],"contents":[{"annotation":[{"end":[6,26],"name":"tests/purus/passing/Misc/Lib.purs","start":[6,9]},[]],"contents":[{"annotation":[{"end":[6,13],"name":"tests/purus/passing/Misc/Lib.purs","start":[6,11]},[]],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[6,10],"name":"tests/purus/passing/Misc/Lib.purs","start":[6,9]},[]],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[{"end":[6,26],"name":"tests/purus/passing/Misc/Lib.purs","start":[6,14]},[]],"contents":[{"annotation":[{"end":[6,26],"name":"tests/purus/passing/Misc/Lib.purs","start":[6,14]},[]],"contents":[{"annotation":[{"end":[6,18],"name":"tests/purus/passing/Misc/Lib.purs","start":[6,16]},[]],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[6,15],"name":"tests/purus/passing/Misc/Lib.purs","start":[6,14]},[]],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[{"end":[6,26],"name":"tests/purus/passing/Misc/Lib.purs","start":[6,19]},[]],"contents":[["Prim"],"Boolean"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"},"visibility":"TypeVarVisible"},"tag":"ForAll"},"value":{"identifier":"eq","moduleName":["Lib"]}},"annotation":{"meta":null,"sourceSpan":{"end":[15,14],"start":[15,10]}},"argument":{"annotation":{"meta":null,"sourceSpan":{"end":[0,0],"start":[0,0]}},"kind":"Var","type":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Lib"],"Eq$Dict"],"tag":"TypeConstructor"},{"annotation":[{"end":[11,16],"name":"tests/purus/passing/Misc/Lib.purs","start":[11,13]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}],"tag":"TypeApp"},"value":{"identifier":"eqInt","moduleName":["Lib"]}},"kind":"App"},"annotation":{"meta":null,"sourceSpan":{"end":[15,14],"start":[15,10]}},"argument":{"annotation":{"meta":null,"sourceSpan":{"end":[15,14],"start":[15,13]}},"kind":"Literal","type":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"},"value":{"literalType":"IntLiteral","value":1}},"kind":"App"},"annotation":{"meta":null,"sourceSpan":{"end":[15,16],"start":[15,10]}},"argument":{"annotation":{"meta":null,"sourceSpan":{"end":[15,16],"start":[15,15]}},"kind":"Literal","type":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"},"value":{"literalType":"IntLiteral","value":2}},"kind":"App"},"identifier":"testEq"},{"annotation":{"meta":null,"sourceSpan":{"end":[18,26],"start":[18,1]}},"bindType":"NonRec","expression":{"annotation":{"meta":null,"sourceSpan":{"end":[21,12],"start":[19,1]}},"argument":"n","body":{"annotation":{"meta":null,"sourceSpan":{"end":[21,12],"start":[20,5]}},"caseAlternatives":[{"binders":[{"annotation":{"meta":null,"sourceSpan":{"end":[21,12],"start":[20,5]}},"binderType":"LiteralBinder","literal":{"literalType":"BooleanLiteral","value":true}}],"expression":{"annotation":{"meta":null,"sourceSpan":{"end":[20,23],"start":[20,22]}},"kind":"Literal","type":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"},"value":{"literalType":"IntLiteral","value":1}},"isGuarded":false},{"binders":[{"annotation":{"meta":null,"sourceSpan":{"end":[21,12],"start":[20,5]}},"binderType":"NullBinder"}],"expression":{"annotation":{"meta":null,"sourceSpan":{"end":[21,12],"start":[21,10]}},"kind":"Literal","type":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"},"value":{"literalType":"IntLiteral","value":42}},"isGuarded":false}],"caseExpressions":[{"abstraction":{"abstraction":{"abstraction":{"annotation":{"meta":null,"sourceSpan":{"end":[20,13],"start":[20,11]}},"kind":"Var","type":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":{"identifier":"a","kind":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"},"skolem":20,"type":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Lib"],"Eq$Dict"],"tag":"TypeConstructor"},{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[{"end":[6,26],"name":"tests/purus/passing/Misc/Lib.purs","start":[6,9]},[]],"contents":[{"annotation":[{"end":[6,26],"name":"tests/purus/passing/Misc/Lib.purs","start":[6,9]},[]],"contents":[{"annotation":[{"end":[6,13],"name":"tests/purus/passing/Misc/Lib.purs","start":[6,11]},[]],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[6,10],"name":"tests/purus/passing/Misc/Lib.purs","start":[6,9]},[]],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[{"end":[6,26],"name":"tests/purus/passing/Misc/Lib.purs","start":[6,14]},[]],"contents":[{"annotation":[{"end":[6,26],"name":"tests/purus/passing/Misc/Lib.purs","start":[6,14]},[]],"contents":[{"annotation":[{"end":[6,18],"name":"tests/purus/passing/Misc/Lib.purs","start":[6,16]},[]],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[6,15],"name":"tests/purus/passing/Misc/Lib.purs","start":[6,14]},[]],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[{"end":[6,26],"name":"tests/purus/passing/Misc/Lib.purs","start":[6,19]},[]],"contents":[["Prim"],"Boolean"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"},"visibility":"TypeVarVisible"},"tag":"ForAll"},"value":{"identifier":"eq","moduleName":["Lib"]}},"annotation":{"meta":null,"sourceSpan":{"end":[20,16],"start":[20,8]}},"argument":{"annotation":{"meta":null,"sourceSpan":{"end":[0,0],"start":[0,0]}},"kind":"Var","type":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Lib"],"Eq$Dict"],"tag":"TypeConstructor"},{"annotation":[{"end":[11,16],"name":"tests/purus/passing/Misc/Lib.purs","start":[11,13]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}],"tag":"TypeApp"},"value":{"identifier":"eqInt","moduleName":["Lib"]}},"kind":"App"},"annotation":{"meta":null,"sourceSpan":{"end":[20,16],"start":[20,8]}},"argument":{"annotation":{"meta":null,"sourceSpan":{"end":[20,9],"start":[20,8]}},"kind":"Var","type":{"annotation":[{"end":[18,19],"name":"tests/purus/passing/Misc/Lib.purs","start":[18,16]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"},"value":{"identifier":"n","sourcePos":[19,1]}},"kind":"App"},"annotation":{"meta":null,"sourceSpan":{"end":[20,16],"start":[20,8]}},"argument":{"annotation":{"meta":null,"sourceSpan":{"end":[20,16],"start":[20,15]}},"kind":"Literal","type":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"},"value":{"literalType":"IntLiteral","value":0}},"kind":"App"}],"kind":"Case","type":{"annotation":[{"end":[18,26],"name":"tests/purus/passing/Misc/Lib.purs","start":[18,23]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}},"kind":"Abs","type":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[18,19],"name":"tests/purus/passing/Misc/Lib.purs","start":[18,16]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[{"end":[18,26],"name":"tests/purus/passing/Misc/Lib.purs","start":[18,23]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}],"tag":"TypeApp"}},"identifier":"workingEven"},{"annotation":{"meta":null,"sourceSpan":{"end":[217,15],"start":[217,1]}},"bindType":"NonRec","expression":{"annotation":{"meta":null,"sourceSpan":{"end":[217,15],"start":[217,13]}},"kind":"Literal","type":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":{"identifier":"t100","kind":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"},"skolem":null,"type":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Array"],"tag":"TypeConstructor"},{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":"t100","tag":"TypeVar"}],"tag":"TypeApp"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"value":{"literalType":"ArrayLiteral","value":[]}},"identifier":"emptyList"},{"annotation":{"meta":null,"sourceSpan":{"end":[214,42],"start":[214,1]}},"bindType":"NonRec","expression":{"annotation":{"meta":null,"sourceSpan":{"end":[215,16],"start":[215,1]}},"argument":"x","body":{"annotation":{"meta":null,"sourceSpan":{"end":[215,16],"start":[215,1]}},"argument":"xs","body":{"annotation":{"meta":null,"sourceSpan":{"end":[215,16],"start":[215,13]}},"kind":"Literal","type":{"annotation":[{"end":[214,42],"name":"tests/purus/passing/Misc/Lib.purs","start":[214,35]},[]],"contents":[{"annotation":[{"end":[214,40],"name":"tests/purus/passing/Misc/Lib.purs","start":[214,35]},[]],"contents":[["Prim"],"Array"],"tag":"TypeConstructor"},{"annotation":[{"end":[214,42],"name":"tests/purus/passing/Misc/Lib.purs","start":[214,41]},[]],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},"value":{"literalType":"ArrayLiteral","value":[{"annotation":{"meta":null,"sourceSpan":{"end":[215,15],"start":[215,14]}},"kind":"Var","type":{"annotation":[{"end":[214,20],"name":"tests/purus/passing/Misc/Lib.purs","start":[214,19]},[]],"contents":"a","tag":"TypeVar"},"value":{"identifier":"x","sourcePos":[215,1]}}]}},"kind":"Abs","type":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[214,31],"name":"tests/purus/passing/Misc/Lib.purs","start":[214,24]},[]],"contents":[{"annotation":[{"end":[214,29],"name":"tests/purus/passing/Misc/Lib.purs","start":[214,24]},[]],"contents":[["Prim"],"Array"],"tag":"TypeConstructor"},{"annotation":[{"end":[214,31],"name":"tests/purus/passing/Misc/Lib.purs","start":[214,30]},[]],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[{"end":[214,42],"name":"tests/purus/passing/Misc/Lib.purs","start":[214,35]},[]],"contents":[{"annotation":[{"end":[214,40],"name":"tests/purus/passing/Misc/Lib.purs","start":[214,35]},[]],"contents":[["Prim"],"Array"],"tag":"TypeConstructor"},{"annotation":[{"end":[214,42],"name":"tests/purus/passing/Misc/Lib.purs","start":[214,41]},[]],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"kind":"Abs","type":{"annotation":[{"end":[214,42],"name":"tests/purus/passing/Misc/Lib.purs","start":[214,9]},[]],"contents":{"identifier":"a","kind":{"annotation":[{"end":[214,23],"name":"tests/purus/passing/Misc/Lib.purs","start":[214,21]},[]],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"},"skolem":21,"type":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[214,20],"name":"tests/purus/passing/Misc/Lib.purs","start":[214,19]},[]],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[{"end":[214,42],"name":"tests/purus/passing/Misc/Lib.purs","start":[214,24]},[]],"contents":[{"annotation":[{"end":[214,42],"name":"tests/purus/passing/Misc/Lib.purs","start":[214,24]},[]],"contents":[{"annotation":[{"end":[214,34],"name":"tests/purus/passing/Misc/Lib.purs","start":[214,32]},[]],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[214,31],"name":"tests/purus/passing/Misc/Lib.purs","start":[214,24]},[]],"contents":[{"annotation":[{"end":[214,29],"name":"tests/purus/passing/Misc/Lib.purs","start":[214,24]},[]],"contents":[["Prim"],"Array"],"tag":"TypeConstructor"},{"annotation":[{"end":[214,31],"name":"tests/purus/passing/Misc/Lib.purs","start":[214,30]},[]],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[{"end":[214,42],"name":"tests/purus/passing/Misc/Lib.purs","start":[214,35]},[]],"contents":[{"annotation":[{"end":[214,40],"name":"tests/purus/passing/Misc/Lib.purs","start":[214,35]},[]],"contents":[["Prim"],"Array"],"tag":"TypeConstructor"},{"annotation":[{"end":[214,42],"name":"tests/purus/passing/Misc/Lib.purs","start":[214,41]},[]],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"identifier":"cons"},{"annotation":{"meta":null,"sourceSpan":{"end":[219,34],"start":[219,1]}},"bindType":"NonRec","expression":{"abstraction":{"abstraction":{"annotation":{"meta":null,"sourceSpan":{"end":[219,22],"start":[219,18]}},"kind":"Var","type":{"annotation":[{"end":[214,42],"name":"tests/purus/passing/Misc/Lib.purs","start":[214,9]},[]],"contents":{"identifier":"a","kind":{"annotation":[{"end":[214,23],"name":"tests/purus/passing/Misc/Lib.purs","start":[214,21]},[]],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"},"skolem":21,"type":{"annotation":[{"end":[214,42],"name":"tests/purus/passing/Misc/Lib.purs","start":[214,19]},[]],"contents":[{"annotation":[{"end":[214,42],"name":"tests/purus/passing/Misc/Lib.purs","start":[214,19]},[]],"contents":[{"annotation":[{"end":[214,23],"name":"tests/purus/passing/Misc/Lib.purs","start":[214,21]},[]],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[214,20],"name":"tests/purus/passing/Misc/Lib.purs","start":[214,19]},[]],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[{"end":[214,42],"name":"tests/purus/passing/Misc/Lib.purs","start":[214,24]},[]],"contents":[{"annotation":[{"end":[214,42],"name":"tests/purus/passing/Misc/Lib.purs","start":[214,24]},[]],"contents":[{"annotation":[{"end":[214,34],"name":"tests/purus/passing/Misc/Lib.purs","start":[214,32]},[]],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[214,31],"name":"tests/purus/passing/Misc/Lib.purs","start":[214,24]},[]],"contents":[{"annotation":[{"end":[214,29],"name":"tests/purus/passing/Misc/Lib.purs","start":[214,24]},[]],"contents":[["Prim"],"Array"],"tag":"TypeConstructor"},{"annotation":[{"end":[214,31],"name":"tests/purus/passing/Misc/Lib.purs","start":[214,30]},[]],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[{"end":[214,42],"name":"tests/purus/passing/Misc/Lib.purs","start":[214,35]},[]],"contents":[{"annotation":[{"end":[214,40],"name":"tests/purus/passing/Misc/Lib.purs","start":[214,35]},[]],"contents":[["Prim"],"Array"],"tag":"TypeConstructor"},{"annotation":[{"end":[214,42],"name":"tests/purus/passing/Misc/Lib.purs","start":[214,41]},[]],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"value":{"identifier":"cons","moduleName":["Lib"]}},"annotation":{"meta":null,"sourceSpan":{"end":[219,24],"start":[219,18]}},"argument":{"annotation":{"meta":null,"sourceSpan":{"end":[219,24],"start":[219,23]}},"kind":"Literal","type":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"},"value":{"literalType":"IntLiteral","value":1}},"kind":"App"},"annotation":{"meta":null,"sourceSpan":{"end":[219,34],"start":[219,18]}},"argument":{"annotation":{"meta":null,"sourceSpan":{"end":[219,34],"start":[219,25]}},"kind":"Var","type":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":{"identifier":"t100","kind":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"},"skolem":null,"type":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Array"],"tag":"TypeConstructor"},{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":"t100","tag":"TypeVar"}],"tag":"TypeApp"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"value":{"identifier":"emptyList","moduleName":["Lib"]}},"kind":"App"},"identifier":"consEmptyList1"},{"annotation":{"meta":null,"sourceSpan":{"end":[221,40],"start":[221,1]}},"bindType":"NonRec","expression":{"abstraction":{"abstraction":{"annotation":{"meta":null,"sourceSpan":{"end":[221,22],"start":[221,18]}},"kind":"Var","type":{"annotation":[{"end":[214,42],"name":"tests/purus/passing/Misc/Lib.purs","start":[214,9]},[]],"contents":{"identifier":"a","kind":{"annotation":[{"end":[214,23],"name":"tests/purus/passing/Misc/Lib.purs","start":[214,21]},[]],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"},"skolem":21,"type":{"annotation":[{"end":[214,42],"name":"tests/purus/passing/Misc/Lib.purs","start":[214,19]},[]],"contents":[{"annotation":[{"end":[214,42],"name":"tests/purus/passing/Misc/Lib.purs","start":[214,19]},[]],"contents":[{"annotation":[{"end":[214,23],"name":"tests/purus/passing/Misc/Lib.purs","start":[214,21]},[]],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[214,20],"name":"tests/purus/passing/Misc/Lib.purs","start":[214,19]},[]],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[{"end":[214,42],"name":"tests/purus/passing/Misc/Lib.purs","start":[214,24]},[]],"contents":[{"annotation":[{"end":[214,42],"name":"tests/purus/passing/Misc/Lib.purs","start":[214,24]},[]],"contents":[{"annotation":[{"end":[214,34],"name":"tests/purus/passing/Misc/Lib.purs","start":[214,32]},[]],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[214,31],"name":"tests/purus/passing/Misc/Lib.purs","start":[214,24]},[]],"contents":[{"annotation":[{"end":[214,29],"name":"tests/purus/passing/Misc/Lib.purs","start":[214,24]},[]],"contents":[["Prim"],"Array"],"tag":"TypeConstructor"},{"annotation":[{"end":[214,31],"name":"tests/purus/passing/Misc/Lib.purs","start":[214,30]},[]],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[{"end":[214,42],"name":"tests/purus/passing/Misc/Lib.purs","start":[214,35]},[]],"contents":[{"annotation":[{"end":[214,40],"name":"tests/purus/passing/Misc/Lib.purs","start":[214,35]},[]],"contents":[["Prim"],"Array"],"tag":"TypeConstructor"},{"annotation":[{"end":[214,42],"name":"tests/purus/passing/Misc/Lib.purs","start":[214,41]},[]],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"value":{"identifier":"cons","moduleName":["Lib"]}},"annotation":{"meta":null,"sourceSpan":{"end":[221,30],"start":[221,18]}},"argument":{"annotation":{"meta":null,"sourceSpan":{"end":[221,30],"start":[221,23]}},"kind":"Literal","type":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"String"],"tag":"TypeConstructor"},"value":{"literalType":"StringLiteral","value":"hello"}},"kind":"App"},"annotation":{"meta":null,"sourceSpan":{"end":[221,40],"start":[221,18]}},"argument":{"annotation":{"meta":null,"sourceSpan":{"end":[221,40],"start":[221,31]}},"kind":"Var","type":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":{"identifier":"t100","kind":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"},"skolem":null,"type":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Array"],"tag":"TypeConstructor"},{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":"t100","tag":"TypeVar"}],"tag":"TypeApp"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"value":{"identifier":"emptyList","moduleName":["Lib"]}},"kind":"App"},"identifier":"consEmptyList2"},{"bindType":"Rec","binds":[{"annotation":{"meta":null,"sourceSpan":{"end":[23,25],"start":[23,1]}},"expression":{"annotation":{"meta":null,"sourceSpan":{"end":[26,34],"start":[24,1]}},"argument":"n","body":{"annotation":{"meta":null,"sourceSpan":{"end":[26,34],"start":[25,5]}},"caseAlternatives":[{"binders":[{"annotation":{"meta":null,"sourceSpan":{"end":[26,34],"start":[25,5]}},"binderType":"LiteralBinder","literal":{"literalType":"BooleanLiteral","value":true}}],"expression":{"annotation":{"meta":null,"sourceSpan":{"end":[25,23],"start":[25,22]}},"kind":"Literal","type":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"},"value":{"literalType":"IntLiteral","value":1}},"isGuarded":false},{"binders":[{"annotation":{"meta":null,"sourceSpan":{"end":[26,34],"start":[25,5]}},"binderType":"NullBinder"}],"expression":{"abstraction":{"annotation":{"meta":null,"sourceSpan":{"end":[26,20],"start":[26,10]}},"kind":"Var","type":{"annotation":[{"end":[23,25],"name":"tests/purus/passing/Misc/Lib.purs","start":[23,15]},[]],"contents":[{"annotation":[{"end":[23,25],"name":"tests/purus/passing/Misc/Lib.purs","start":[23,15]},[]],"contents":[{"annotation":[{"end":[23,21],"name":"tests/purus/passing/Misc/Lib.purs","start":[23,19]},[]],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[23,18],"name":"tests/purus/passing/Misc/Lib.purs","start":[23,15]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[{"end":[23,25],"name":"tests/purus/passing/Misc/Lib.purs","start":[23,22]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}],"tag":"TypeApp"},"value":{"identifier":"brokenEven","moduleName":["Lib"]}},"annotation":{"meta":null,"sourceSpan":{"end":[26,34],"start":[26,10]}},"argument":{"abstraction":{"abstraction":{"annotation":{"meta":null,"sourceSpan":{"end":[26,30],"start":[26,25]}},"kind":"Var","type":{"annotation":[{"end":[8,27],"name":"tests/purus/passing/Misc/Lib.purs","start":[8,10]},[]],"contents":[{"annotation":[{"end":[8,27],"name":"tests/purus/passing/Misc/Lib.purs","start":[8,10]},[]],"contents":[{"annotation":[{"end":[8,16],"name":"tests/purus/passing/Misc/Lib.purs","start":[8,14]},[]],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[8,13],"name":"tests/purus/passing/Misc/Lib.purs","start":[8,10]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[{"end":[8,27],"name":"tests/purus/passing/Misc/Lib.purs","start":[8,17]},[]],"contents":[{"annotation":[{"end":[8,27],"name":"tests/purus/passing/Misc/Lib.purs","start":[8,17]},[]],"contents":[{"annotation":[{"end":[8,23],"name":"tests/purus/passing/Misc/Lib.purs","start":[8,21]},[]],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[8,20],"name":"tests/purus/passing/Misc/Lib.purs","start":[8,17]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[{"end":[8,27],"name":"tests/purus/passing/Misc/Lib.purs","start":[8,24]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"},"value":{"identifier":"minus","moduleName":["Lib"]}},"annotation":{"meta":null,"sourceSpan":{"end":[26,33],"start":[26,22]}},"argument":{"annotation":{"meta":null,"sourceSpan":{"end":[26,23],"start":[26,22]}},"kind":"Var","type":{"annotation":[{"end":[23,18],"name":"tests/purus/passing/Misc/Lib.purs","start":[23,15]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"},"value":{"identifier":"n","sourcePos":[24,1]}},"kind":"App"},"annotation":{"meta":null,"sourceSpan":{"end":[26,33],"start":[26,22]}},"argument":{"annotation":{"meta":null,"sourceSpan":{"end":[26,33],"start":[26,32]}},"kind":"Literal","type":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"},"value":{"literalType":"IntLiteral","value":2}},"kind":"App"},"kind":"App"},"isGuarded":false}],"caseExpressions":[{"abstraction":{"abstraction":{"abstraction":{"annotation":{"meta":null,"sourceSpan":{"end":[25,13],"start":[25,11]}},"kind":"Var","type":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":{"identifier":"a","kind":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"},"skolem":20,"type":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Lib"],"Eq$Dict"],"tag":"TypeConstructor"},{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[{"end":[6,26],"name":"tests/purus/passing/Misc/Lib.purs","start":[6,9]},[]],"contents":[{"annotation":[{"end":[6,26],"name":"tests/purus/passing/Misc/Lib.purs","start":[6,9]},[]],"contents":[{"annotation":[{"end":[6,13],"name":"tests/purus/passing/Misc/Lib.purs","start":[6,11]},[]],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[6,10],"name":"tests/purus/passing/Misc/Lib.purs","start":[6,9]},[]],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[{"end":[6,26],"name":"tests/purus/passing/Misc/Lib.purs","start":[6,14]},[]],"contents":[{"annotation":[{"end":[6,26],"name":"tests/purus/passing/Misc/Lib.purs","start":[6,14]},[]],"contents":[{"annotation":[{"end":[6,18],"name":"tests/purus/passing/Misc/Lib.purs","start":[6,16]},[]],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[6,15],"name":"tests/purus/passing/Misc/Lib.purs","start":[6,14]},[]],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[{"end":[6,26],"name":"tests/purus/passing/Misc/Lib.purs","start":[6,19]},[]],"contents":[["Prim"],"Boolean"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"},"visibility":"TypeVarVisible"},"tag":"ForAll"},"value":{"identifier":"eq","moduleName":["Lib"]}},"annotation":{"meta":null,"sourceSpan":{"end":[25,16],"start":[25,8]}},"argument":{"annotation":{"meta":null,"sourceSpan":{"end":[0,0],"start":[0,0]}},"kind":"Var","type":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Lib"],"Eq$Dict"],"tag":"TypeConstructor"},{"annotation":[{"end":[11,16],"name":"tests/purus/passing/Misc/Lib.purs","start":[11,13]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}],"tag":"TypeApp"},"value":{"identifier":"eqInt","moduleName":["Lib"]}},"kind":"App"},"annotation":{"meta":null,"sourceSpan":{"end":[25,16],"start":[25,8]}},"argument":{"annotation":{"meta":null,"sourceSpan":{"end":[25,9],"start":[25,8]}},"kind":"Var","type":{"annotation":[{"end":[23,18],"name":"tests/purus/passing/Misc/Lib.purs","start":[23,15]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"},"value":{"identifier":"n","sourcePos":[24,1]}},"kind":"App"},"annotation":{"meta":null,"sourceSpan":{"end":[25,16],"start":[25,8]}},"argument":{"annotation":{"meta":null,"sourceSpan":{"end":[25,16],"start":[25,15]}},"kind":"Literal","type":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"},"value":{"literalType":"IntLiteral","value":0}},"kind":"App"}],"kind":"Case","type":{"annotation":[{"end":[23,25],"name":"tests/purus/passing/Misc/Lib.purs","start":[23,22]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}},"kind":"Abs","type":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[23,18],"name":"tests/purus/passing/Misc/Lib.purs","start":[23,15]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[{"end":[23,25],"name":"tests/purus/passing/Misc/Lib.purs","start":[23,22]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}],"tag":"TypeApp"}},"identifier":"brokenEven"}]},{"annotation":{"meta":null,"sourceSpan":{"end":[195,22],"start":[195,1]}},"bindType":"NonRec","expression":{"annotation":{"meta":null,"sourceSpan":{"end":[196,17],"start":[196,9]}},"kind":"Literal","type":{"annotation":[{"end":[195,22],"name":"tests/purus/passing/Misc/Lib.purs","start":[195,10]},[]],"contents":[{"annotation":[{"end":[195,11],"name":"tests/purus/passing/Misc/Lib.purs","start":[195,10]},[]],"contents":[["Prim"],"Record"],"tag":"TypeConstructor"},{"annotation":[{"end":[195,21],"name":"tests/purus/passing/Misc/Lib.purs","start":[195,11]},[]],"contents":["foo",{"annotation":[{"end":[195,21],"name":"tests/purus/passing/Misc/Lib.purs","start":[195,18]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"},{"annotation":[{"end":[195,22],"name":"tests/purus/passing/Misc/Lib.purs","start":[195,21]},[]],"contents":[{"annotation":[{"end":[195,22],"name":"tests/purus/passing/Misc/Lib.purs","start":[195,21]},[]],"tag":"REmpty"},{"annotation":[{"end":[195,21],"name":"tests/purus/passing/Misc/Lib.purs","start":[195,18]},[]],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"}],"tag":"KindApp"}],"tag":"RCons"}],"tag":"TypeApp"},"value":{"literalType":"ObjectLiteral","value":[["foo",{"annotation":{"meta":null,"sourceSpan":{"end":[196,16],"start":[196,15]}},"kind":"Literal","type":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"},"value":{"literalType":"IntLiteral","value":3}}]]}},"identifier":"anObj"},{"annotation":{"meta":null,"sourceSpan":{"end":[198,26],"start":[198,1]}},"bindType":"NonRec","expression":{"annotation":{"meta":null,"sourceSpan":{"end":[199,28],"start":[199,13]}},"binds":[{"annotation":{"meta":null,"sourceSpan":{"end":[199,28],"start":[199,1]}},"bindType":"NonRec","expression":{"annotation":{"meta":null,"sourceSpan":{"end":[199,18],"start":[199,13]}},"kind":"Var","type":{"annotation":[{"end":[195,22],"name":"tests/purus/passing/Misc/Lib.purs","start":[195,10]},[]],"contents":[{"annotation":[{"end":[195,11],"name":"tests/purus/passing/Misc/Lib.purs","start":[195,10]},[]],"contents":[["Prim"],"Record"],"tag":"TypeConstructor"},{"annotation":[{"end":[195,21],"name":"tests/purus/passing/Misc/Lib.purs","start":[195,11]},[]],"contents":["foo",{"annotation":[{"end":[195,21],"name":"tests/purus/passing/Misc/Lib.purs","start":[195,18]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"},{"annotation":[{"end":[195,22],"name":"tests/purus/passing/Misc/Lib.purs","start":[195,21]},[]],"contents":[{"annotation":[{"end":[195,22],"name":"tests/purus/passing/Misc/Lib.purs","start":[195,21]},[]],"tag":"REmpty"},{"annotation":[{"end":[195,21],"name":"tests/purus/passing/Misc/Lib.purs","start":[195,18]},[]],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"}],"tag":"KindApp"}],"tag":"RCons"}],"tag":"TypeApp"},"value":{"identifier":"anObj","moduleName":["Lib"]}},"identifier":"v"}],"expression":{"annotation":{"meta":null,"sourceSpan":{"end":[199,28],"start":[199,13]}},"copy":[],"expression":{"annotation":{"meta":null,"sourceSpan":{"end":[0,0],"start":[0,0]}},"kind":"Var","type":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Record"],"tag":"TypeConstructor"},{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":["foo",{"annotation":[{"end":[195,21],"name":"tests/purus/passing/Misc/Lib.purs","start":[195,18]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"},{"annotation":[{"end":[198,26],"name":"tests/purus/passing/Misc/Lib.purs","start":[198,25]},[]],"contents":[{"annotation":[{"end":[198,26],"name":"tests/purus/passing/Misc/Lib.purs","start":[198,25]},[]],"tag":"REmpty"},{"annotation":[{"end":[198,25],"name":"tests/purus/passing/Misc/Lib.purs","start":[198,22]},[]],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"}],"tag":"KindApp"}],"tag":"RCons"}],"tag":"TypeApp"},"value":{"identifier":"v","sourcePos":[199,1]}},"kind":"ObjectUpdate","type":{"annotation":[{"end":[198,26],"name":"tests/purus/passing/Misc/Lib.purs","start":[198,14]},[]],"contents":[{"annotation":[{"end":[198,15],"name":"tests/purus/passing/Misc/Lib.purs","start":[198,14]},[]],"contents":[["Prim"],"Record"],"tag":"TypeConstructor"},{"annotation":[{"end":[198,25],"name":"tests/purus/passing/Misc/Lib.purs","start":[198,15]},[]],"contents":["foo",{"annotation":[{"end":[198,25],"name":"tests/purus/passing/Misc/Lib.purs","start":[198,22]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"},{"annotation":[{"end":[198,26],"name":"tests/purus/passing/Misc/Lib.purs","start":[198,25]},[]],"contents":[{"annotation":[{"end":[198,26],"name":"tests/purus/passing/Misc/Lib.purs","start":[198,25]},[]],"tag":"REmpty"},{"annotation":[{"end":[198,25],"name":"tests/purus/passing/Misc/Lib.purs","start":[198,22]},[]],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"}],"tag":"KindApp"}],"tag":"RCons"}],"tag":"TypeApp"},"updates":[["foo",{"annotation":{"meta":null,"sourceSpan":{"end":[199,27],"start":[199,26]}},"kind":"Literal","type":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"},"value":{"literalType":"IntLiteral","value":4}}]]},"kind":"Let"},"identifier":"objUpdate"},{"annotation":{"meta":null,"sourceSpan":{"end":[111,16],"start":[111,1]}},"bindType":"NonRec","expression":{"annotation":{"meta":null,"sourceSpan":{"end":[112,13],"start":[112,12]}},"kind":"Literal","type":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"},"value":{"literalType":"IntLiteral","value":1}},"identifier":"anIntLit"},{"annotation":{"meta":null,"sourceSpan":{"end":[117,12],"start":[117,1]}},"bindType":"NonRec","expression":{"annotation":{"meta":null,"sourceSpan":{"end":[118,9],"start":[118,8]}},"kind":"Literal","type":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"},"value":{"literalType":"IntLiteral","value":1}},"identifier":"aVal"},{"annotation":{"meta":null,"sourceSpan":{"end":[114,21],"start":[114,1]}},"bindType":"NonRec","expression":{"annotation":{"meta":null,"sourceSpan":{"end":[115,20],"start":[115,14]}},"kind":"Literal","type":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"String"],"tag":"TypeConstructor"},"value":{"literalType":"StringLiteral","value":"woop"}},"identifier":"aStringLit"},{"annotation":{"meta":null,"sourceSpan":{"end":[211,24],"start":[211,1]}},"bindType":"NonRec","expression":{"annotation":{"meta":null,"sourceSpan":{"end":[212,15],"start":[212,1]}},"argument":"v","body":{"annotation":{"meta":null,"sourceSpan":{"end":[212,15],"start":[212,11]}},"kind":"Literal","type":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Boolean"],"tag":"TypeConstructor"},"value":{"literalType":"BooleanLiteral","value":true}},"kind":"Abs","type":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[211,13],"name":"tests/purus/passing/Misc/Lib.purs","start":[211,10]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[{"end":[211,24],"name":"tests/purus/passing/Misc/Lib.purs","start":[211,17]},[]],"contents":[["Prim"],"Boolean"],"tag":"TypeConstructor"}],"tag":"TypeApp"}},"identifier":"aPred"},{"annotation":{"meta":null,"sourceSpan":{"end":[175,33],"start":[175,1]}},"bindType":"NonRec","expression":{"annotation":{"meta":null,"sourceSpan":{"end":[181,12],"start":[176,1]}},"argument":"w","body":{"annotation":{"meta":null,"sourceSpan":{"end":[181,12],"start":[176,1]}},"argument":"x","body":{"annotation":{"meta":null,"sourceSpan":{"end":[181,12],"start":[176,19]}},"binds":[{"annotation":{"meta":null,"sourceSpan":{"end":[175,33],"start":[175,1]}},"bindType":"NonRec","expression":{"annotation":{"meta":null,"sourceSpan":{"end":[175,33],"start":[175,1]}},"argument":"v1","body":{"annotation":{"meta":null,"sourceSpan":{"end":[181,12],"start":[181,11]}},"kind":"Literal","type":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"},"value":{"literalType":"IntLiteral","value":0}},"kind":"Abs","type":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":{"identifier":"$19","kind":null,"skolem":null,"type":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[175,33],"name":"tests/purus/passing/Misc/Lib.purs","start":[175,1]},[]],"contents":"$19","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[{"end":[175,33],"name":"tests/purus/passing/Misc/Lib.purs","start":[175,30]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}],"tag":"TypeApp"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"identifier":"v"}],"expression":{"annotation":{"meta":null,"sourceSpan":{"end":[181,12],"start":[176,19]}},"caseAlternatives":[{"binders":[{"annotation":{"meta":null,"sourceSpan":{"end":[177,4],"start":[177,3]}},"binderType":"VarBinder","identifier":"y"},{"annotation":{"meta":null,"sourceSpan":{"end":[177,7],"start":[177,6]}},"binderType":"VarBinder","identifier":"z"}],"expression":{"annotation":{"meta":null,"sourceSpan":{"end":[181,12],"start":[176,19]}},"binds":[{"annotation":{"meta":null,"sourceSpan":{"end":[175,33],"start":[175,1]}},"bindType":"NonRec","expression":{"abstraction":{"abstraction":{"abstraction":{"annotation":{"meta":null,"sourceSpan":{"end":[177,12],"start":[177,10]}},"kind":"Var","type":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":{"identifier":"a","kind":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"},"skolem":20,"type":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Lib"],"Eq$Dict"],"tag":"TypeConstructor"},{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[{"end":[6,26],"name":"tests/purus/passing/Misc/Lib.purs","start":[6,9]},[]],"contents":[{"annotation":[{"end":[6,26],"name":"tests/purus/passing/Misc/Lib.purs","start":[6,9]},[]],"contents":[{"annotation":[{"end":[6,13],"name":"tests/purus/passing/Misc/Lib.purs","start":[6,11]},[]],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[6,10],"name":"tests/purus/passing/Misc/Lib.purs","start":[6,9]},[]],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[{"end":[6,26],"name":"tests/purus/passing/Misc/Lib.purs","start":[6,14]},[]],"contents":[{"annotation":[{"end":[6,26],"name":"tests/purus/passing/Misc/Lib.purs","start":[6,14]},[]],"contents":[{"annotation":[{"end":[6,18],"name":"tests/purus/passing/Misc/Lib.purs","start":[6,16]},[]],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[6,15],"name":"tests/purus/passing/Misc/Lib.purs","start":[6,14]},[]],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[{"end":[6,26],"name":"tests/purus/passing/Misc/Lib.purs","start":[6,19]},[]],"contents":[["Prim"],"Boolean"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"},"visibility":"TypeVarVisible"},"tag":"ForAll"},"value":{"identifier":"eq","moduleName":["Lib"]}},"annotation":{"meta":null,"sourceSpan":{"end":[177,14],"start":[177,10]}},"argument":{"annotation":{"meta":null,"sourceSpan":{"end":[0,0],"start":[0,0]}},"kind":"Var","type":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Lib"],"Eq$Dict"],"tag":"TypeConstructor"},{"annotation":[{"end":[11,16],"name":"tests/purus/passing/Misc/Lib.purs","start":[11,13]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}],"tag":"TypeApp"},"value":{"identifier":"eqInt","moduleName":["Lib"]}},"kind":"App"},"annotation":{"meta":null,"sourceSpan":{"end":[177,14],"start":[177,10]}},"argument":{"annotation":{"meta":null,"sourceSpan":{"end":[177,14],"start":[177,13]}},"kind":"Var","type":{"annotation":[{"end":[175,19],"name":"tests/purus/passing/Misc/Lib.purs","start":[175,16]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"},"value":{"identifier":"y","sourcePos":[177,3]}},"kind":"App"},"annotation":{"meta":null,"sourceSpan":{"end":[177,16],"start":[177,10]}},"argument":{"annotation":{"meta":null,"sourceSpan":{"end":[177,16],"start":[177,15]}},"kind":"Literal","type":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"},"value":{"literalType":"IntLiteral","value":2}},"kind":"App"},"identifier":"v1"}],"expression":{"annotation":{"meta":null,"sourceSpan":{"end":[181,12],"start":[176,19]}},"caseAlternatives":[{"binders":[{"annotation":{"meta":null,"sourceSpan":{"end":[175,33],"start":[175,1]}},"binderType":"LiteralBinder","literal":{"literalType":"BooleanLiteral","value":true}}],"expression":{"annotation":{"meta":null,"sourceSpan":{"end":[181,12],"start":[176,19]}},"binds":[{"annotation":{"meta":null,"sourceSpan":{"end":[175,33],"start":[175,1]}},"bindType":"NonRec","expression":{"abstraction":{"annotation":{"meta":null,"sourceSpan":{"end":[178,15],"start":[178,10]}},"kind":"Var","type":{"annotation":[{"end":[211,24],"name":"tests/purus/passing/Misc/Lib.purs","start":[211,10]},[]],"contents":[{"annotation":[{"end":[211,24],"name":"tests/purus/passing/Misc/Lib.purs","start":[211,10]},[]],"contents":[{"annotation":[{"end":[211,16],"name":"tests/purus/passing/Misc/Lib.purs","start":[211,14]},[]],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[211,13],"name":"tests/purus/passing/Misc/Lib.purs","start":[211,10]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[{"end":[211,24],"name":"tests/purus/passing/Misc/Lib.purs","start":[211,17]},[]],"contents":[["Prim"],"Boolean"],"tag":"TypeConstructor"}],"tag":"TypeApp"},"value":{"identifier":"aPred","moduleName":["Lib"]}},"annotation":{"meta":null,"sourceSpan":{"end":[178,17],"start":[178,10]}},"argument":{"annotation":{"meta":null,"sourceSpan":{"end":[178,17],"start":[178,16]}},"kind":"Var","type":{"annotation":[{"end":[175,19],"name":"tests/purus/passing/Misc/Lib.purs","start":[175,16]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"},"value":{"identifier":"y","sourcePos":[177,3]}},"kind":"App"},"identifier":"v2"}],"expression":{"annotation":{"meta":null,"sourceSpan":{"end":[181,12],"start":[176,19]}},"caseAlternatives":[{"binders":[{"annotation":{"meta":null,"sourceSpan":{"end":[175,33],"start":[175,1]}},"binderType":"LiteralBinder","literal":{"literalType":"BooleanLiteral","value":true}}],"expression":{"annotation":{"meta":null,"sourceSpan":{"end":[181,12],"start":[176,19]}},"binds":[{"annotation":{"meta":null,"sourceSpan":{"end":[175,33],"start":[175,1]}},"bindType":"NonRec","expression":{"abstraction":{"abstraction":{"abstraction":{"annotation":{"meta":null,"sourceSpan":{"end":[179,12],"start":[179,10]}},"kind":"Var","type":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":{"identifier":"a","kind":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"},"skolem":20,"type":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Lib"],"Eq$Dict"],"tag":"TypeConstructor"},{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[{"end":[6,26],"name":"tests/purus/passing/Misc/Lib.purs","start":[6,9]},[]],"contents":[{"annotation":[{"end":[6,26],"name":"tests/purus/passing/Misc/Lib.purs","start":[6,9]},[]],"contents":[{"annotation":[{"end":[6,13],"name":"tests/purus/passing/Misc/Lib.purs","start":[6,11]},[]],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[6,10],"name":"tests/purus/passing/Misc/Lib.purs","start":[6,9]},[]],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[{"end":[6,26],"name":"tests/purus/passing/Misc/Lib.purs","start":[6,14]},[]],"contents":[{"annotation":[{"end":[6,26],"name":"tests/purus/passing/Misc/Lib.purs","start":[6,14]},[]],"contents":[{"annotation":[{"end":[6,18],"name":"tests/purus/passing/Misc/Lib.purs","start":[6,16]},[]],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[6,15],"name":"tests/purus/passing/Misc/Lib.purs","start":[6,14]},[]],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[{"end":[6,26],"name":"tests/purus/passing/Misc/Lib.purs","start":[6,19]},[]],"contents":[["Prim"],"Boolean"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"},"visibility":"TypeVarVisible"},"tag":"ForAll"},"value":{"identifier":"eq","moduleName":["Lib"]}},"annotation":{"meta":null,"sourceSpan":{"end":[179,14],"start":[179,10]}},"argument":{"annotation":{"meta":null,"sourceSpan":{"end":[0,0],"start":[0,0]}},"kind":"Var","type":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Lib"],"Eq$Dict"],"tag":"TypeConstructor"},{"annotation":[{"end":[11,16],"name":"tests/purus/passing/Misc/Lib.purs","start":[11,13]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}],"tag":"TypeApp"},"value":{"identifier":"eqInt","moduleName":["Lib"]}},"kind":"App"},"annotation":{"meta":null,"sourceSpan":{"end":[179,14],"start":[179,10]}},"argument":{"annotation":{"meta":null,"sourceSpan":{"end":[179,14],"start":[179,13]}},"kind":"Var","type":{"annotation":[{"end":[175,26],"name":"tests/purus/passing/Misc/Lib.purs","start":[175,23]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"},"value":{"identifier":"z","sourcePos":[177,6]}},"kind":"App"},"annotation":{"meta":null,"sourceSpan":{"end":[179,16],"start":[179,10]}},"argument":{"annotation":{"meta":null,"sourceSpan":{"end":[179,16],"start":[179,15]}},"kind":"Literal","type":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"},"value":{"literalType":"IntLiteral","value":0}},"kind":"App"},"identifier":"v3"}],"expression":{"annotation":{"meta":null,"sourceSpan":{"end":[181,12],"start":[176,19]}},"caseAlternatives":[{"binders":[{"annotation":{"meta":null,"sourceSpan":{"end":[175,33],"start":[175,1]}},"binderType":"LiteralBinder","literal":{"literalType":"BooleanLiteral","value":true}}],"expression":{"annotation":{"meta":null,"sourceSpan":{"end":[181,12],"start":[176,19]}},"binds":[{"annotation":{"meta":null,"sourceSpan":{"end":[175,33],"start":[175,1]}},"bindType":"NonRec","expression":{"abstraction":{"abstraction":{"abstraction":{"annotation":{"meta":null,"sourceSpan":{"end":[180,12],"start":[180,10]}},"kind":"Var","type":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":{"identifier":"a","kind":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"},"skolem":20,"type":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Lib"],"Eq$Dict"],"tag":"TypeConstructor"},{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[{"end":[6,26],"name":"tests/purus/passing/Misc/Lib.purs","start":[6,9]},[]],"contents":[{"annotation":[{"end":[6,26],"name":"tests/purus/passing/Misc/Lib.purs","start":[6,9]},[]],"contents":[{"annotation":[{"end":[6,13],"name":"tests/purus/passing/Misc/Lib.purs","start":[6,11]},[]],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[6,10],"name":"tests/purus/passing/Misc/Lib.purs","start":[6,9]},[]],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[{"end":[6,26],"name":"tests/purus/passing/Misc/Lib.purs","start":[6,14]},[]],"contents":[{"annotation":[{"end":[6,26],"name":"tests/purus/passing/Misc/Lib.purs","start":[6,14]},[]],"contents":[{"annotation":[{"end":[6,18],"name":"tests/purus/passing/Misc/Lib.purs","start":[6,16]},[]],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[6,15],"name":"tests/purus/passing/Misc/Lib.purs","start":[6,14]},[]],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[{"end":[6,26],"name":"tests/purus/passing/Misc/Lib.purs","start":[6,19]},[]],"contents":[["Prim"],"Boolean"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"},"visibility":"TypeVarVisible"},"tag":"ForAll"},"value":{"identifier":"eq","moduleName":["Lib"]}},"annotation":{"meta":null,"sourceSpan":{"end":[180,14],"start":[180,10]}},"argument":{"annotation":{"meta":null,"sourceSpan":{"end":[0,0],"start":[0,0]}},"kind":"Var","type":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Lib"],"Eq$Dict"],"tag":"TypeConstructor"},{"annotation":[{"end":[11,16],"name":"tests/purus/passing/Misc/Lib.purs","start":[11,13]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}],"tag":"TypeApp"},"value":{"identifier":"eqInt","moduleName":["Lib"]}},"kind":"App"},"annotation":{"meta":null,"sourceSpan":{"end":[180,14],"start":[180,10]}},"argument":{"annotation":{"meta":null,"sourceSpan":{"end":[180,14],"start":[180,13]}},"kind":"Var","type":{"annotation":[{"end":[175,19],"name":"tests/purus/passing/Misc/Lib.purs","start":[175,16]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"},"value":{"identifier":"y","sourcePos":[177,3]}},"kind":"App"},"annotation":{"meta":null,"sourceSpan":{"end":[180,26],"start":[180,10]}},"argument":{"annotation":{"meta":null,"sourceSpan":{"end":[180,26],"start":[180,15]}},"kind":"Var","type":{"annotation":[{"end":[90,19],"name":"tests/purus/passing/Misc/Lib.purs","start":[90,16]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"},"value":{"identifier":"nestedBinds","moduleName":["Lib"]}},"kind":"App"},"identifier":"v4"}],"expression":{"annotation":{"meta":null,"sourceSpan":{"end":[181,12],"start":[176,19]}},"caseAlternatives":[{"binders":[{"annotation":{"meta":null,"sourceSpan":{"end":[175,33],"start":[175,1]}},"binderType":"LiteralBinder","literal":{"literalType":"BooleanLiteral","value":true}}],"expression":{"annotation":{"meta":null,"sourceSpan":{"end":[180,31],"start":[180,30]}},"kind":"Literal","type":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"},"value":{"literalType":"IntLiteral","value":2}},"isGuarded":false},{"binders":[{"annotation":{"meta":null,"sourceSpan":{"end":[181,12],"start":[176,19]}},"binderType":"NullBinder"}],"expression":{"abstraction":{"annotation":{"meta":null,"sourceSpan":{"end":[175,33],"start":[175,1]}},"kind":"Var","type":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":{"identifier":"$19","kind":null,"skolem":null,"type":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[175,33],"name":"tests/purus/passing/Misc/Lib.purs","start":[175,1]},[]],"contents":"$19","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[{"end":[175,33],"name":"tests/purus/passing/Misc/Lib.purs","start":[175,30]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}],"tag":"TypeApp"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"value":{"identifier":"v","sourcePos":[0,0]}},"annotation":{"meta":null,"sourceSpan":{"end":[181,12],"start":[176,19]}},"argument":{"annotation":{"meta":null,"sourceSpan":{"end":[175,33],"start":[175,1]}},"kind":"Literal","type":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Boolean"],"tag":"TypeConstructor"},"value":{"literalType":"BooleanLiteral","value":true}},"kind":"App"},"isGuarded":false}],"caseExpressions":[{"annotation":{"meta":null,"sourceSpan":{"end":[175,33],"start":[175,1]}},"kind":"Var","type":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Boolean"],"tag":"TypeConstructor"},"value":{"identifier":"v4","sourcePos":[0,0]}}],"kind":"Case","type":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}},"kind":"Let"},"isGuarded":false},{"binders":[{"annotation":{"meta":null,"sourceSpan":{"end":[181,12],"start":[176,19]}},"binderType":"NullBinder"}],"expression":{"abstraction":{"annotation":{"meta":null,"sourceSpan":{"end":[175,33],"start":[175,1]}},"kind":"Var","type":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":{"identifier":"$19","kind":null,"skolem":null,"type":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[175,33],"name":"tests/purus/passing/Misc/Lib.purs","start":[175,1]},[]],"contents":"$19","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[{"end":[175,33],"name":"tests/purus/passing/Misc/Lib.purs","start":[175,30]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}],"tag":"TypeApp"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"value":{"identifier":"v","sourcePos":[0,0]}},"annotation":{"meta":null,"sourceSpan":{"end":[181,12],"start":[176,19]}},"argument":{"annotation":{"meta":null,"sourceSpan":{"end":[175,33],"start":[175,1]}},"kind":"Literal","type":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Boolean"],"tag":"TypeConstructor"},"value":{"literalType":"BooleanLiteral","value":true}},"kind":"App"},"isGuarded":false}],"caseExpressions":[{"annotation":{"meta":null,"sourceSpan":{"end":[175,33],"start":[175,1]}},"kind":"Var","type":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Boolean"],"tag":"TypeConstructor"},"value":{"identifier":"v3","sourcePos":[0,0]}}],"kind":"Case","type":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}},"kind":"Let"},"isGuarded":false},{"binders":[{"annotation":{"meta":null,"sourceSpan":{"end":[181,12],"start":[176,19]}},"binderType":"NullBinder"}],"expression":{"abstraction":{"annotation":{"meta":null,"sourceSpan":{"end":[175,33],"start":[175,1]}},"kind":"Var","type":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":{"identifier":"$19","kind":null,"skolem":null,"type":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[175,33],"name":"tests/purus/passing/Misc/Lib.purs","start":[175,1]},[]],"contents":"$19","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[{"end":[175,33],"name":"tests/purus/passing/Misc/Lib.purs","start":[175,30]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}],"tag":"TypeApp"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"value":{"identifier":"v","sourcePos":[0,0]}},"annotation":{"meta":null,"sourceSpan":{"end":[181,12],"start":[176,19]}},"argument":{"annotation":{"meta":null,"sourceSpan":{"end":[175,33],"start":[175,1]}},"kind":"Literal","type":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Boolean"],"tag":"TypeConstructor"},"value":{"literalType":"BooleanLiteral","value":true}},"kind":"App"},"isGuarded":false}],"caseExpressions":[{"annotation":{"meta":null,"sourceSpan":{"end":[175,33],"start":[175,1]}},"kind":"Var","type":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Boolean"],"tag":"TypeConstructor"},"value":{"identifier":"v2","sourcePos":[0,0]}}],"kind":"Case","type":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}},"kind":"Let"},"isGuarded":false},{"binders":[{"annotation":{"meta":null,"sourceSpan":{"end":[181,12],"start":[176,19]}},"binderType":"NullBinder"}],"expression":{"abstraction":{"annotation":{"meta":null,"sourceSpan":{"end":[175,33],"start":[175,1]}},"kind":"Var","type":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":{"identifier":"$19","kind":null,"skolem":null,"type":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[175,33],"name":"tests/purus/passing/Misc/Lib.purs","start":[175,1]},[]],"contents":"$19","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[{"end":[175,33],"name":"tests/purus/passing/Misc/Lib.purs","start":[175,30]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}],"tag":"TypeApp"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"value":{"identifier":"v","sourcePos":[0,0]}},"annotation":{"meta":null,"sourceSpan":{"end":[181,12],"start":[176,19]}},"argument":{"annotation":{"meta":null,"sourceSpan":{"end":[175,33],"start":[175,1]}},"kind":"Literal","type":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Boolean"],"tag":"TypeConstructor"},"value":{"literalType":"BooleanLiteral","value":true}},"kind":"App"},"isGuarded":false}],"caseExpressions":[{"annotation":{"meta":null,"sourceSpan":{"end":[175,33],"start":[175,1]}},"kind":"Var","type":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Boolean"],"tag":"TypeConstructor"},"value":{"identifier":"v1","sourcePos":[0,0]}}],"kind":"Case","type":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}},"kind":"Let"},"isGuarded":false}],"caseExpressions":[{"annotation":{"meta":null,"sourceSpan":{"end":[176,25],"start":[176,24]}},"kind":"Var","type":{"annotation":[{"end":[175,19],"name":"tests/purus/passing/Misc/Lib.purs","start":[175,16]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"},"value":{"identifier":"w","sourcePos":[176,1]}},{"annotation":{"meta":null,"sourceSpan":{"end":[176,28],"start":[176,27]}},"kind":"Var","type":{"annotation":[{"end":[175,26],"name":"tests/purus/passing/Misc/Lib.purs","start":[175,23]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"},"value":{"identifier":"x","sourcePos":[176,1]}}],"kind":"Case","type":{"annotation":[{"end":[175,33],"name":"tests/purus/passing/Misc/Lib.purs","start":[175,30]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}},"kind":"Let"},"kind":"Abs","type":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[175,26],"name":"tests/purus/passing/Misc/Lib.purs","start":[175,23]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[{"end":[175,33],"name":"tests/purus/passing/Misc/Lib.purs","start":[175,30]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}],"tag":"TypeApp"}},"kind":"Abs","type":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[175,19],"name":"tests/purus/passing/Misc/Lib.purs","start":[175,16]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[{"end":[175,33],"name":"tests/purus/passing/Misc/Lib.purs","start":[175,23]},[]],"contents":[{"annotation":[{"end":[175,33],"name":"tests/purus/passing/Misc/Lib.purs","start":[175,23]},[]],"contents":[{"annotation":[{"end":[175,29],"name":"tests/purus/passing/Misc/Lib.purs","start":[175,27]},[]],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[175,26],"name":"tests/purus/passing/Misc/Lib.purs","start":[175,23]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[{"end":[175,33],"name":"tests/purus/passing/Misc/Lib.purs","start":[175,30]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"identifier":"guardedCase"},{"annotation":{"meta":null,"sourceSpan":{"end":[129,19],"start":[129,1]}},"bindType":"NonRec","expression":{"annotation":{"meta":null,"sourceSpan":{"end":[130,20],"start":[130,9]}},"kind":"Literal","type":{"annotation":[{"end":[129,19],"name":"tests/purus/passing/Misc/Lib.purs","start":[129,10]},[]],"contents":[{"annotation":[{"end":[129,15],"name":"tests/purus/passing/Misc/Lib.purs","start":[129,10]},[]],"contents":[["Prim"],"Array"],"tag":"TypeConstructor"},{"annotation":[{"end":[129,19],"name":"tests/purus/passing/Misc/Lib.purs","start":[129,16]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}],"tag":"TypeApp"},"value":{"literalType":"ArrayLiteral","value":[{"annotation":{"meta":null,"sourceSpan":{"end":[130,11],"start":[130,10]}},"kind":"Literal","type":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"},"value":{"literalType":"IntLiteral","value":1}},{"annotation":{"meta":null,"sourceSpan":{"end":[130,13],"start":[130,12]}},"kind":"Literal","type":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"},"value":{"literalType":"IntLiteral","value":2}},{"annotation":{"meta":null,"sourceSpan":{"end":[130,15],"start":[130,14]}},"kind":"Literal","type":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"},"value":{"literalType":"IntLiteral","value":3}},{"annotation":{"meta":null,"sourceSpan":{"end":[130,17],"start":[130,16]}},"kind":"Literal","type":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"},"value":{"literalType":"IntLiteral","value":4}},{"annotation":{"meta":null,"sourceSpan":{"end":[130,19],"start":[130,18]}},"kind":"Literal","type":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"},"value":{"literalType":"IntLiteral","value":5}}]}},"identifier":"aList"},{"annotation":{"meta":null,"sourceSpan":{"end":[143,60],"start":[143,1]}},"bindType":"NonRec","expression":{"annotation":{"meta":null,"sourceSpan":{"end":[144,19],"start":[144,1]}},"argument":"r","body":{"annotation":{"meta":null,"sourceSpan":{"end":[144,19],"start":[144,16]}},"expression":{"annotation":{"meta":null,"sourceSpan":{"end":[144,17],"start":[144,16]}},"kind":"Var","type":{"annotation":[{"end":[143,53],"name":"tests/purus/passing/Misc/Lib.purs","start":[143,39]},[]],"contents":[{"annotation":[{"end":[143,40],"name":"tests/purus/passing/Misc/Lib.purs","start":[143,39]},[]],"contents":[["Prim"],"Record"],"tag":"TypeConstructor"},{"annotation":[{"end":[143,48],"name":"tests/purus/passing/Misc/Lib.purs","start":[143,40]},[]],"contents":["a",{"annotation":[{"end":[143,48],"name":"tests/purus/passing/Misc/Lib.purs","start":[143,45]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"},{"annotation":[{"end":[143,52],"name":"tests/purus/passing/Misc/Lib.purs","start":[143,51]},[]],"contents":"r","tag":"TypeVar"}],"tag":"RCons"}],"tag":"TypeApp"},"value":{"identifier":"r","sourcePos":[144,1]}},"fieldName":"a","kind":"Accessor","type":{"annotation":[{"end":[143,60],"name":"tests/purus/passing/Misc/Lib.purs","start":[143,57]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}},"kind":"Abs","type":{"annotation":[{"end":[143,60],"name":"tests/purus/passing/Misc/Lib.purs","start":[143,15]},[]],"contents":{"identifier":"r","kind":{"annotation":[{"end":[143,36],"name":"tests/purus/passing/Misc/Lib.purs","start":[143,28]},[]],"contents":[{"annotation":[{"end":[143,31],"name":"tests/purus/passing/Misc/Lib.purs","start":[143,28]},[]],"contents":[["Prim"],"Row"],"tag":"TypeConstructor"},{"annotation":[{"end":[143,36],"name":"tests/purus/passing/Misc/Lib.purs","start":[143,32]},[]],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"}],"tag":"TypeApp"},"skolem":25,"type":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[143,53],"name":"tests/purus/passing/Misc/Lib.purs","start":[143,39]},[]],"contents":[{"annotation":[{"end":[143,40],"name":"tests/purus/passing/Misc/Lib.purs","start":[143,39]},[]],"contents":[["Prim"],"Record"],"tag":"TypeConstructor"},{"annotation":[{"end":[143,48],"name":"tests/purus/passing/Misc/Lib.purs","start":[143,40]},[]],"contents":["a",{"annotation":[{"end":[143,48],"name":"tests/purus/passing/Misc/Lib.purs","start":[143,45]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"},{"annotation":[{"end":[143,52],"name":"tests/purus/passing/Misc/Lib.purs","start":[143,51]},[]],"contents":"r","tag":"TypeVar"}],"tag":"RCons"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[{"end":[143,60],"name":"tests/purus/passing/Misc/Lib.purs","start":[143,57]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}],"tag":"TypeApp"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"identifier":"aFunction4"},{"annotation":{"meta":null,"sourceSpan":{"end":[146,18],"start":[146,1]}},"bindType":"NonRec","expression":{"abstraction":{"annotation":{"meta":null,"sourceSpan":{"end":[147,24],"start":[147,14]}},"kind":"Var","type":{"annotation":[{"end":[143,60],"name":"tests/purus/passing/Misc/Lib.purs","start":[143,15]},[]],"contents":{"identifier":"r","kind":{"annotation":[{"end":[143,36],"name":"tests/purus/passing/Misc/Lib.purs","start":[143,28]},[]],"contents":[{"annotation":[{"end":[143,31],"name":"tests/purus/passing/Misc/Lib.purs","start":[143,28]},[]],"contents":[["Prim"],"Row"],"tag":"TypeConstructor"},{"annotation":[{"end":[143,36],"name":"tests/purus/passing/Misc/Lib.purs","start":[143,32]},[]],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"}],"tag":"TypeApp"},"skolem":25,"type":{"annotation":[{"end":[143,60],"name":"tests/purus/passing/Misc/Lib.purs","start":[143,39]},[]],"contents":[{"annotation":[{"end":[143,60],"name":"tests/purus/passing/Misc/Lib.purs","start":[143,39]},[]],"contents":[{"annotation":[{"end":[143,56],"name":"tests/purus/passing/Misc/Lib.purs","start":[143,54]},[]],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[143,53],"name":"tests/purus/passing/Misc/Lib.purs","start":[143,39]},[]],"contents":[{"annotation":[{"end":[143,40],"name":"tests/purus/passing/Misc/Lib.purs","start":[143,39]},[]],"contents":[["Prim"],"Record"],"tag":"TypeConstructor"},{"annotation":[{"end":[143,48],"name":"tests/purus/passing/Misc/Lib.purs","start":[143,40]},[]],"contents":["a",{"annotation":[{"end":[143,48],"name":"tests/purus/passing/Misc/Lib.purs","start":[143,45]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"},{"annotation":[{"end":[143,52],"name":"tests/purus/passing/Misc/Lib.purs","start":[143,51]},[]],"contents":"r","tag":"TypeVar"}],"tag":"RCons"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[{"end":[143,60],"name":"tests/purus/passing/Misc/Lib.purs","start":[143,57]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}],"tag":"TypeApp"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"value":{"identifier":"aFunction4","moduleName":["Lib"]}},"annotation":{"meta":null,"sourceSpan":{"end":[147,31],"start":[147,14]}},"argument":{"annotation":{"meta":null,"sourceSpan":{"end":[147,31],"start":[147,25]}},"kind":"Literal","type":{"annotation":[{"end":[143,53],"name":"tests/purus/passing/Misc/Lib.purs","start":[143,39]},[]],"contents":[{"annotation":[{"end":[143,40],"name":"tests/purus/passing/Misc/Lib.purs","start":[143,39]},[]],"contents":[["Prim"],"Record"],"tag":"TypeConstructor"},{"annotation":[{"end":[143,48],"name":"tests/purus/passing/Misc/Lib.purs","start":[143,40]},[]],"contents":["a",{"annotation":[{"end":[143,48],"name":"tests/purus/passing/Misc/Lib.purs","start":[143,45]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"},{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"tag":"REmpty"},{"annotation":[{"end":[143,36],"name":"tests/purus/passing/Misc/Lib.purs","start":[143,32]},[]],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"}],"tag":"KindApp"}],"tag":"RCons"}],"tag":"TypeApp"},"value":{"literalType":"ObjectLiteral","value":[["a",{"annotation":{"meta":null,"sourceSpan":{"end":[147,30],"start":[147,29]}},"kind":"Literal","type":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"},"value":{"literalType":"IntLiteral","value":2}}]]}},"kind":"App"},"identifier":"aFunction5"},{"annotation":{"meta":null,"sourceSpan":{"end":[140,25],"start":[140,1]}},"bindType":"NonRec","expression":{"annotation":{"meta":null,"sourceSpan":{"end":[141,41],"start":[141,1]}},"argument":"x","body":{"annotation":{"meta":null,"sourceSpan":{"end":[141,41],"start":[141,16]}},"caseAlternatives":[{"binders":[{"annotation":{"meta":null,"sourceSpan":{"end":[141,41],"start":[141,16]}},"binderType":"LiteralBinder","literal":{"literalType":"BooleanLiteral","value":true}}],"expression":{"annotation":{"meta":null,"sourceSpan":{"end":[141,34],"start":[141,33]}},"kind":"Literal","type":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"},"value":{"literalType":"IntLiteral","value":4}},"isGuarded":false},{"binders":[{"annotation":{"meta":null,"sourceSpan":{"end":[141,41],"start":[141,16]}},"binderType":"NullBinder"}],"expression":{"annotation":{"meta":null,"sourceSpan":{"end":[141,41],"start":[141,40]}},"kind":"Literal","type":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"},"value":{"literalType":"IntLiteral","value":1}},"isGuarded":false}],"caseExpressions":[{"abstraction":{"abstraction":{"abstraction":{"annotation":{"meta":null,"sourceSpan":{"end":[141,22],"start":[141,20]}},"kind":"Var","type":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":{"identifier":"a","kind":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"},"skolem":20,"type":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Lib"],"Eq$Dict"],"tag":"TypeConstructor"},{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[{"end":[6,26],"name":"tests/purus/passing/Misc/Lib.purs","start":[6,9]},[]],"contents":[{"annotation":[{"end":[6,26],"name":"tests/purus/passing/Misc/Lib.purs","start":[6,9]},[]],"contents":[{"annotation":[{"end":[6,13],"name":"tests/purus/passing/Misc/Lib.purs","start":[6,11]},[]],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[6,10],"name":"tests/purus/passing/Misc/Lib.purs","start":[6,9]},[]],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[{"end":[6,26],"name":"tests/purus/passing/Misc/Lib.purs","start":[6,14]},[]],"contents":[{"annotation":[{"end":[6,26],"name":"tests/purus/passing/Misc/Lib.purs","start":[6,14]},[]],"contents":[{"annotation":[{"end":[6,18],"name":"tests/purus/passing/Misc/Lib.purs","start":[6,16]},[]],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[6,15],"name":"tests/purus/passing/Misc/Lib.purs","start":[6,14]},[]],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[{"end":[6,26],"name":"tests/purus/passing/Misc/Lib.purs","start":[6,19]},[]],"contents":[["Prim"],"Boolean"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"},"visibility":"TypeVarVisible"},"tag":"ForAll"},"value":{"identifier":"eq","moduleName":["Lib"]}},"annotation":{"meta":null,"sourceSpan":{"end":[141,24],"start":[141,20]}},"argument":{"annotation":{"meta":null,"sourceSpan":{"end":[0,0],"start":[0,0]}},"kind":"Var","type":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Lib"],"Eq$Dict"],"tag":"TypeConstructor"},{"annotation":[{"end":[11,16],"name":"tests/purus/passing/Misc/Lib.purs","start":[11,13]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}],"tag":"TypeApp"},"value":{"identifier":"eqInt","moduleName":["Lib"]}},"kind":"App"},"annotation":{"meta":null,"sourceSpan":{"end":[141,24],"start":[141,20]}},"argument":{"annotation":{"meta":null,"sourceSpan":{"end":[141,24],"start":[141,23]}},"kind":"Var","type":{"annotation":[{"end":[140,18],"name":"tests/purus/passing/Misc/Lib.purs","start":[140,15]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"},"value":{"identifier":"x","sourcePos":[141,1]}},"kind":"App"},"annotation":{"meta":null,"sourceSpan":{"end":[141,26],"start":[141,20]}},"argument":{"annotation":{"meta":null,"sourceSpan":{"end":[141,26],"start":[141,25]}},"kind":"Literal","type":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"},"value":{"literalType":"IntLiteral","value":2}},"kind":"App"}],"kind":"Case","type":{"annotation":[{"end":[140,25],"name":"tests/purus/passing/Misc/Lib.purs","start":[140,22]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}},"kind":"Abs","type":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[140,18],"name":"tests/purus/passing/Misc/Lib.purs","start":[140,15]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[{"end":[140,25],"name":"tests/purus/passing/Misc/Lib.purs","start":[140,22]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}],"tag":"TypeApp"}},"identifier":"aFunction3"},{"annotation":{"meta":null,"sourceSpan":{"end":[137,31],"start":[137,1]}},"bindType":"NonRec","expression":{"annotation":{"meta":null,"sourceSpan":{"end":[138,21],"start":[138,1]}},"argument":"x","body":{"annotation":{"meta":null,"sourceSpan":{"end":[138,21],"start":[138,16]}},"kind":"Literal","type":{"annotation":[{"end":[137,31],"name":"tests/purus/passing/Misc/Lib.purs","start":[137,22]},[]],"contents":[{"annotation":[{"end":[137,27],"name":"tests/purus/passing/Misc/Lib.purs","start":[137,22]},[]],"contents":[["Prim"],"Array"],"tag":"TypeConstructor"},{"annotation":[{"end":[137,31],"name":"tests/purus/passing/Misc/Lib.purs","start":[137,28]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}],"tag":"TypeApp"},"value":{"literalType":"ArrayLiteral","value":[{"annotation":{"meta":null,"sourceSpan":{"end":[138,18],"start":[138,17]}},"kind":"Var","type":{"annotation":[{"end":[137,18],"name":"tests/purus/passing/Misc/Lib.purs","start":[137,15]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"},"value":{"identifier":"x","sourcePos":[138,1]}},{"annotation":{"meta":null,"sourceSpan":{"end":[138,20],"start":[138,19]}},"kind":"Literal","type":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"},"value":{"literalType":"IntLiteral","value":1}}]}},"kind":"Abs","type":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[137,18],"name":"tests/purus/passing/Misc/Lib.purs","start":[137,15]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[{"end":[137,31],"name":"tests/purus/passing/Misc/Lib.purs","start":[137,22]},[]],"contents":[{"annotation":[{"end":[137,27],"name":"tests/purus/passing/Misc/Lib.purs","start":[137,22]},[]],"contents":[["Prim"],"Array"],"tag":"TypeConstructor"},{"annotation":[{"end":[137,31],"name":"tests/purus/passing/Misc/Lib.purs","start":[137,28]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"identifier":"aFunction2"},{"annotation":{"meta":null,"sourceSpan":{"end":[134,56],"start":[134,1]}},"bindType":"NonRec","expression":{"annotation":{"meta":null,"sourceSpan":{"end":[135,24],"start":[135,1]}},"argument":"any","body":{"annotation":{"meta":null,"sourceSpan":{"end":[135,24],"start":[135,1]}},"argument":"f","body":{"abstraction":{"annotation":{"meta":null,"sourceSpan":{"end":[135,20],"start":[135,19]}},"kind":"Var","type":{"annotation":[{"end":[134,48],"name":"tests/purus/passing/Misc/Lib.purs","start":[134,30]},[]],"contents":{"identifier":"y","kind":{"annotation":[{"end":[134,44],"name":"tests/purus/passing/Misc/Lib.purs","start":[134,42]},[]],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"},"skolem":27,"type":{"annotation":[{"end":[134,48],"name":"tests/purus/passing/Misc/Lib.purs","start":[134,40]},[]],"contents":[{"annotation":[{"end":[134,48],"name":"tests/purus/passing/Misc/Lib.purs","start":[134,40]},[]],"contents":[{"annotation":[{"end":[134,44],"name":"tests/purus/passing/Misc/Lib.purs","start":[134,42]},[]],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[134,41],"name":"tests/purus/passing/Misc/Lib.purs","start":[134,40]},[]],"contents":"y","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[{"end":[134,48],"name":"tests/purus/passing/Misc/Lib.purs","start":[134,45]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}],"tag":"TypeApp"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"value":{"identifier":"f","sourcePos":[135,1]}},"annotation":{"meta":null,"sourceSpan":{"end":[135,24],"start":[135,19]}},"argument":{"annotation":{"meta":null,"sourceSpan":{"end":[135,24],"start":[135,21]}},"kind":"Var","type":{"annotation":[{"end":[134,25],"name":"tests/purus/passing/Misc/Lib.purs","start":[134,24]},[]],"contents":"x","tag":"TypeVar"},"value":{"identifier":"any","sourcePos":[135,1]}},"kind":"App"},"kind":"Abs","type":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[134,48],"name":"tests/purus/passing/Misc/Lib.purs","start":[134,30]},[]],"contents":{"identifier":"y","kind":{"annotation":[{"end":[134,44],"name":"tests/purus/passing/Misc/Lib.purs","start":[134,42]},[]],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"},"skolem":27,"type":{"annotation":[{"end":[134,48],"name":"tests/purus/passing/Misc/Lib.purs","start":[134,40]},[]],"contents":[{"annotation":[{"end":[134,48],"name":"tests/purus/passing/Misc/Lib.purs","start":[134,40]},[]],"contents":[{"annotation":[{"end":[134,44],"name":"tests/purus/passing/Misc/Lib.purs","start":[134,42]},[]],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[134,41],"name":"tests/purus/passing/Misc/Lib.purs","start":[134,40]},[]],"contents":"y","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[{"end":[134,48],"name":"tests/purus/passing/Misc/Lib.purs","start":[134,45]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}],"tag":"TypeApp"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}],"tag":"TypeApp"},{"annotation":[{"end":[134,56],"name":"tests/purus/passing/Misc/Lib.purs","start":[134,53]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}],"tag":"TypeApp"}},"kind":"Abs","type":{"annotation":[{"end":[134,56],"name":"tests/purus/passing/Misc/Lib.purs","start":[134,14]},[]],"contents":{"identifier":"x","kind":{"annotation":[{"end":[134,28],"name":"tests/purus/passing/Misc/Lib.purs","start":[134,26]},[]],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"},"skolem":28,"type":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[134,25],"name":"tests/purus/passing/Misc/Lib.purs","start":[134,24]},[]],"contents":"x","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[{"end":[134,56],"name":"tests/purus/passing/Misc/Lib.purs","start":[134,29]},[]],"contents":[{"annotation":[{"end":[134,56],"name":"tests/purus/passing/Misc/Lib.purs","start":[134,29]},[]],"contents":[{"annotation":[{"end":[134,52],"name":"tests/purus/passing/Misc/Lib.purs","start":[134,50]},[]],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[134,48],"name":"tests/purus/passing/Misc/Lib.purs","start":[134,30]},[]],"contents":{"identifier":"y","kind":{"annotation":[{"end":[134,44],"name":"tests/purus/passing/Misc/Lib.purs","start":[134,42]},[]],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"},"skolem":27,"type":{"annotation":[{"end":[134,48],"name":"tests/purus/passing/Misc/Lib.purs","start":[134,40]},[]],"contents":[{"annotation":[{"end":[134,48],"name":"tests/purus/passing/Misc/Lib.purs","start":[134,40]},[]],"contents":[{"annotation":[{"end":[134,44],"name":"tests/purus/passing/Misc/Lib.purs","start":[134,42]},[]],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[134,41],"name":"tests/purus/passing/Misc/Lib.purs","start":[134,40]},[]],"contents":"y","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[{"end":[134,48],"name":"tests/purus/passing/Misc/Lib.purs","start":[134,45]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}],"tag":"TypeApp"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}],"tag":"TypeApp"},{"annotation":[{"end":[134,56],"name":"tests/purus/passing/Misc/Lib.purs","start":[134,53]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"identifier":"aFunction"},{"annotation":{"meta":null,"sourceSpan":{"end":[149,18],"start":[149,1]}},"bindType":"NonRec","expression":{"annotation":{"meta":{"metaType":"IsWhere"},"sourceSpan":{"end":[150,29],"start":[150,14]}},"binds":[{"annotation":{"meta":null,"sourceSpan":{"end":[152,39],"start":[152,5]}},"bindType":"NonRec","expression":{"annotation":{"meta":null,"sourceSpan":{"end":[153,14],"start":[153,5]}},"argument":"v","body":{"annotation":{"meta":null,"sourceSpan":{"end":[153,14],"start":[153,12]}},"kind":"Literal","type":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"},"value":{"literalType":"IntLiteral","value":10}},"kind":"Abs","type":{"annotation":[{"end":[152,39],"name":"tests/purus/passing/Misc/Lib.purs","start":[152,11]},[]],"contents":{"identifier":"z","kind":{"annotation":[{"end":[152,28],"name":"tests/purus/passing/Misc/Lib.purs","start":[152,24]},[]],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"},"skolem":31,"type":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[152,32],"name":"tests/purus/passing/Misc/Lib.purs","start":[152,31]},[]],"contents":"z","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[{"end":[152,39],"name":"tests/purus/passing/Misc/Lib.purs","start":[152,36]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}],"tag":"TypeApp"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"identifier":"go"}],"expression":{"abstraction":{"abstraction":{"annotation":{"meta":null,"sourceSpan":{"end":[150,23],"start":[150,14]}},"kind":"Var","type":{"annotation":[{"end":[134,56],"name":"tests/purus/passing/Misc/Lib.purs","start":[134,14]},[]],"contents":{"identifier":"x","kind":{"annotation":[{"end":[134,28],"name":"tests/purus/passing/Misc/Lib.purs","start":[134,26]},[]],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"},"skolem":28,"type":{"annotation":[{"end":[134,56],"name":"tests/purus/passing/Misc/Lib.purs","start":[134,24]},[]],"contents":[{"annotation":[{"end":[134,56],"name":"tests/purus/passing/Misc/Lib.purs","start":[134,24]},[]],"contents":[{"annotation":[{"end":[134,28],"name":"tests/purus/passing/Misc/Lib.purs","start":[134,26]},[]],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[134,25],"name":"tests/purus/passing/Misc/Lib.purs","start":[134,24]},[]],"contents":"x","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[{"end":[134,56],"name":"tests/purus/passing/Misc/Lib.purs","start":[134,29]},[]],"contents":[{"annotation":[{"end":[134,56],"name":"tests/purus/passing/Misc/Lib.purs","start":[134,29]},[]],"contents":[{"annotation":[{"end":[134,52],"name":"tests/purus/passing/Misc/Lib.purs","start":[134,50]},[]],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[134,48],"name":"tests/purus/passing/Misc/Lib.purs","start":[134,30]},[]],"contents":{"identifier":"y","kind":{"annotation":[{"end":[134,44],"name":"tests/purus/passing/Misc/Lib.purs","start":[134,42]},[]],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"},"skolem":27,"type":{"annotation":[{"end":[134,48],"name":"tests/purus/passing/Misc/Lib.purs","start":[134,40]},[]],"contents":[{"annotation":[{"end":[134,48],"name":"tests/purus/passing/Misc/Lib.purs","start":[134,40]},[]],"contents":[{"annotation":[{"end":[134,44],"name":"tests/purus/passing/Misc/Lib.purs","start":[134,42]},[]],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[134,41],"name":"tests/purus/passing/Misc/Lib.purs","start":[134,40]},[]],"contents":"y","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[{"end":[134,48],"name":"tests/purus/passing/Misc/Lib.purs","start":[134,45]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}],"tag":"TypeApp"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}],"tag":"TypeApp"},{"annotation":[{"end":[134,56],"name":"tests/purus/passing/Misc/Lib.purs","start":[134,53]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"value":{"identifier":"aFunction","moduleName":["Lib"]}},"annotation":{"meta":null,"sourceSpan":{"end":[150,26],"start":[150,14]}},"argument":{"annotation":{"meta":null,"sourceSpan":{"end":[150,26],"start":[150,24]}},"kind":"Literal","type":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Array"],"tag":"TypeConstructor"},{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":127,"tag":"TUnknown"}],"tag":"TypeApp"},"value":{"literalType":"ArrayLiteral","value":[]}},"kind":"App"},"annotation":{"meta":null,"sourceSpan":{"end":[150,29],"start":[150,14]}},"argument":{"annotation":{"meta":null,"sourceSpan":{"end":[150,29],"start":[150,27]}},"kind":"Var","type":{"annotation":[{"end":[152,39],"name":"tests/purus/passing/Misc/Lib.purs","start":[152,11]},[]],"contents":{"identifier":"z","kind":{"annotation":[{"end":[152,28],"name":"tests/purus/passing/Misc/Lib.purs","start":[152,24]},[]],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"},"skolem":31,"type":{"annotation":[{"end":[152,39],"name":"tests/purus/passing/Misc/Lib.purs","start":[152,31]},[]],"contents":[{"annotation":[{"end":[152,39],"name":"tests/purus/passing/Misc/Lib.purs","start":[152,31]},[]],"contents":[{"annotation":[{"end":[152,35],"name":"tests/purus/passing/Misc/Lib.purs","start":[152,33]},[]],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[152,32],"name":"tests/purus/passing/Misc/Lib.purs","start":[152,31]},[]],"contents":"z","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[{"end":[152,39],"name":"tests/purus/passing/Misc/Lib.purs","start":[152,36]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}],"tag":"TypeApp"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"value":{"identifier":"go","sourcePos":[152,5]}},"kind":"App"},"kind":"Let"},"identifier":"aFunction6"},{"annotation":{"meta":null,"sourceSpan":{"end":[126,17],"start":[126,1]}},"bindType":"NonRec","expression":{"annotation":{"meta":null,"sourceSpan":{"end":[127,13],"start":[127,9]}},"kind":"Literal","type":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Boolean"],"tag":"TypeConstructor"},"value":{"literalType":"BooleanLiteral","value":true}},"identifier":"aBool"}],"exports":["eq","eq2","minus","testEq","workingEven","brokenEven","testEq2","ConInt","ConInts","ConBoolean","ConString","ConChar","ConNested","ConQuantified","ConConstrained","ConObject","ConObjectQuantified","testBinders","mutuallyRecursiveBindingGroup","mutuallyRecursiveBindingGroupNoTypes","nestedBinds","ADataRec","ANewTypeRec","Constr1","Constr2","anIntLit","aStringLit","aVal","testasum","aBool","aList","aFunction","aFunction2","aFunction3","aFunction4","aFunction5","aFunction6","recF1","recG1","testBuiltin","plus","main","guardedCase","nestedApplications","anObj","objUpdate","polyInObj","polyInObjMatch","aPred","cons","emptyList","consEmptyList1","consEmptyList2","eqInt","eq2IntBoolean"],"foreign":[],"imports":[{"annotation":{"meta":null,"sourceSpan":{"end":[221,40],"start":[1,1]}},"moduleName":["Builtin"]},{"annotation":{"meta":null,"sourceSpan":{"end":[221,40],"start":[1,1]}},"moduleName":["Lib"]},{"annotation":{"meta":null,"sourceSpan":{"end":[221,40],"start":[1,1]}},"moduleName":["Prim"]}],"moduleName":["Lib"],"modulePath":"tests/purus/passing/Misc/Lib.purs","reExports":{},"sourceSpan":{"end":[221,40],"start":[1,1]}} \ No newline at end of file diff --git a/tests/purus/passing/Misc/output/Lib/index.cfn.pretty b/tests/purus/passing/Misc/output/Lib/index.cfn.pretty new file mode 100644 index 000000000..b29b75904 --- /dev/null +++ b/tests/purus/passing/Misc/output/Lib/index.cfn.pretty @@ -0,0 +1,426 @@ +Lib (tests/purus/passing/Misc/Lib.purs) +Imported Modules: + Builtin, + Lib, + Prim +Exports: + eq, + eq2, + minus, + testEq, + workingEven, + brokenEven, + testEq2, + ConInt, + ConInts, + ConBoolean, + ConString, + ConChar, + ConNested, + ConQuantified, + ConConstrained, + ConObject, + ConObjectQuantified, + testBinders, + mutuallyRecursiveBindingGroup, + mutuallyRecursiveBindingGroupNoTypes, + nestedBinds, + ADataRec, + ANewTypeRec, + Constr1, + Constr2, + anIntLit, + aStringLit, + aVal, + testasum, + aBool, + aList, + aFunction, + aFunction2, + aFunction3, + aFunction4, + aFunction5, + aFunction6, + recF1, + recG1, + testBuiltin, + plus, + main, + guardedCase, + nestedApplications, + anObj, + objUpdate, + polyInObj, + polyInObjMatch, + aPred, + cons, + emptyList, + consEmptyList1, + consEmptyList2, + eqInt, + eq2IntBoolean +Re-Exports: + +Foreign: + +Declarations: +Eq2$Dict :: forall a b. { eq2 :: a -> b -> Boolean } -> { eq2 :: a -> b -> Boolean } +Eq2$Dict = + \(x: { eq2 :: a -> b -> Boolean }) -> (x: { eq2 :: a -> b -> Boolean }) + +Eq$Dict :: forall a. { eq :: a -> a -> Boolean } -> { eq :: a -> a -> Boolean } +Eq$Dict = \(x: { eq :: a -> a -> Boolean }) -> (x: { eq :: a -> a -> Boolean }) + +ConInt :: Int -> TestBinderSum +ConInt = ConInt + +ConInts :: Array Int -> TestBinderSum +ConInts = ConInts + +ConBoolean :: Boolean -> TestBinderSum +ConBoolean = ConBoolean + +ConString :: String -> TestBinderSum +ConString = ConString + +ConChar :: Char -> TestBinderSum +ConChar = ConChar + +ConNested :: TestBinderSum -> TestBinderSum +ConNested = ConNested + +ConQuantified :: forall (x :: Type). x -> Int -> TestBinderSum +ConQuantified = ConQuantified + +ConConstrained :: forall (x :: Type). Eq$Dict x -> x -> Int -> TestBinderSum +ConConstrained = ConConstrained + +ConObject :: { objField :: Int } -> TestBinderSum +ConObject = ConObject + +ConObjectQuantified :: { objFieldQ :: forall (x :: Type). x -> Int } -> TestBinderSum +ConObjectQuantified = ConObjectQuantified + +Constr1 :: Int -> ASum +Constr1 = Constr1 + +Constr2 :: Boolean -> ASum +Constr2 = Constr2 + +ANewTypeRec :: { foo :: Int } -> { foo :: Int } +ANewTypeRec = \(x: { foo :: Int }) -> (x: { foo :: Int }) + +ADataRec :: { hello :: Int, world :: Boolean } -> ADataRec +ADataRec = ADataRec + +eqInt :: Eq$Dict Int +eqInt = + (Eq$Dict: { eq :: Int -> Int -> Boolean } -> Eq$Dict Int) + ({ eq: \(v: Int) -> \(v1: Int) -> (true: Boolean) }: { + eq :: Int -> + Int -> Boolean + }) + +eq2IntBoolean :: (Eq2$Dict Int Boolean) +eq2IntBoolean = + (Eq2$Dict: { eq2 :: Int -> Boolean -> Boolean } -> (Eq2$Dict Int Boolean)) + ({ eq2: \(v: Int) -> \(v1: Boolean) -> (true: Boolean) }: { + eq2 :: Int -> + Boolean -> Boolean + }) + +testasum :: ASum -> Int +testasum = + \(x: ASum) -> + case (x: ASum) of + Constr1 y -> (1: Int) + Constr2 z -> (2: Int) + +testBuiltin :: Int +testBuiltin = (addInteger: Int -> Int -> Int) (1: Int) (2: Int) + +testBinders :: TestBinderSum -> Int +testBinders = + \(x: TestBinderSum) -> + case (x: TestBinderSum) of + a@ConInt 3 -> (1: Int) + ConInt a -> (a: Int) + ConInts [3] -> (2: Int) + ConInts [a, b] -> (b: Int) + ConBoolean true -> (4: Int) + ConChar '\n' -> (5: Int) + ConNested ConInt 2 -> (6: Int) + ConQuantified f -> (f: forall (x :: Type). x -> Int) ("hello": String) + ConConstrained f -> + (f: forall (x :: Type). Eq$Dict x -> x -> Int) + (eqInt: Eq$Dict Int) + (2: Int) + ConNested other -> (7: Int) + ConObject obj -> (obj: { objField :: Int }).objField + ConObjectQuantified objQ -> + ((objQ: { objFieldQ :: forall (x :: Type). x -> Int }) + .objFieldQ) + ("world": String) + ConObject { objField: f } -> (f: Int) + _ -> (0: Int) + +recG1 :: forall (x :: Type). x -> Int +recG1 = \(x: x) -> (recF1: forall (x :: Type). x -> Int) (x: x) +recF1 :: forall (x :: Type). x -> Int +recF1 = \(x: x) -> (recG1: forall (x :: Type). x -> Int) (x: x) + +polyInObj :: { bar :: forall (x :: Type). x -> Int, baz :: Int } +polyInObj = + let + go :: forall (y :: Type). y -> Int + go = \(v: y) -> (5: Int) + in ({ + baz: (100: Int), + bar: (go: forall (y :: Type). y -> Int) + }: { bar :: forall (x :: Type). x -> Int, baz :: Int }) + +polyInObjMatch :: Int +polyInObjMatch = + case (polyInObj: { bar :: forall (x :: Type). x -> Int, baz :: Int }) of + { bar: f, baz: _ } -> (f: forall (x :: Type). x -> Int) ("hello": String) + +plus :: Int -> Int -> Int +plus = + \(a: Int) -> \(b: Int) -> (addInteger: Int -> Int -> Int) (a: Int) (b: Int) + +nestedBinds :: Int +nestedBinds = + let + g :: forall (a :: Type). a -> Int + g = \(v: a) -> (5: Int) + f :: Int -> Int + f = \(v: Int) -> (4: Int) + h :: Int + h = + let + i :: Int + i = (g: forall (a :: Type). a -> Int) ("hello": String) + j :: Int + j = (f: Int -> Int) (i: Int) + in (f: Int -> Int) (j: Int) + in (h: Int) + +nestedApplications :: Int +nestedApplications = + let + i :: Int -> Int -> Int + i = \(x: Int) -> \(v: Int) -> (x: Int) + h :: Int -> Int + h = + \(v: Int) -> + case (v: Int) of + 2 -> (3: Int) + _ -> (5: Int) + g :: Int -> Int + g = \(v: Int) -> (5: Int) + f :: Int -> Int + f = \(x: Int) -> (x: Int) + in (i: Int -> Int -> Int) + ((f: Int -> Int) ((g: Int -> Int) ((h: Int -> Int) (2: Int)))) + (4: Int) + +mutuallyRecursiveBindingGroupNoTypes :: Int +mutuallyRecursiveBindingGroupNoTypes = + let + h' :: Int -> Int -> Int + h' = \(x: Int) -> \(y: Int) -> (y: Int) + g' :: Int -> Int + g' = + \(y: Int) -> (h': Int -> Int -> Int) ((f': Int -> Int) (y: Int)) (3: Int) + f' :: Int -> Int + f' = \(x: Int) -> (g': Int -> Int) (2: Int) + in (g': Int -> Int) (3: Int) + +mutuallyRecursiveBindingGroup :: Int +mutuallyRecursiveBindingGroup = + let + h :: Int -> Int -> Int + h = \(x: Int) -> \(y: Int) -> (y: Int) + g :: Int -> Int + g = \(y: Int) -> (h: Int -> Int -> Int) ((f: Int -> Int) (y: Int)) (3: Int) + f :: Int -> Int + f = \(x: Int) -> (g: Int -> Int) (2: Int) + in (g: Int -> Int) (3: Int) + +minus :: Int -> Int -> Int +minus = \(v: Int) -> \(v1: Int) -> (42: Int) + +main :: Int +main = (plus: Int -> Int -> Int) (1: Int) (1: Int) + +eq2 :: forall (@a :: Type) (@b :: Type). (Eq2$Dict a b) -> a -> b -> Boolean +eq2 = + \(dict: (Eq2$Dict a b)) -> + case (dict: (Eq2$Dict a b)) of + Eq2$Dict v -> (v: { eq2 :: a -> b -> Boolean }).eq2 + +testEq2 :: Boolean +testEq2 = + (eq2: forall (@a :: Type) (@b :: Type). (Eq2$Dict a b) -> a -> b -> Boolean) + (eq2IntBoolean: (Eq2$Dict Int Boolean)) + (101: Int) + (false: Boolean) + +eq :: forall (@a :: Type). Eq$Dict a -> a -> a -> Boolean +eq = + \(dict: Eq$Dict a) -> + case (dict: Eq$Dict a) of + Eq$Dict v -> (v: { eq :: a -> a -> Boolean }).eq + +testEq :: Boolean +testEq = + (eq: forall (@a :: Type). Eq$Dict a -> a -> a -> Boolean) + (eqInt: Eq$Dict Int) + (1: Int) + (2: Int) + +workingEven :: Int -> Int +workingEven = + \(n: Int) -> + case ((eq: forall (@a :: Type). Eq$Dict a -> a -> a -> Boolean) (eqInt: Eq$Dict Int) (n: Int) (0: Int)) of + true -> (1: Int) + _ -> (42: Int) + +emptyList :: forall (t100 :: Type). Array t100 +emptyList = ([]: forall (t100 :: Type). Array t100) + +cons :: forall (a :: Type). a -> Array a -> Array a +cons = \(x: a) -> \(xs: Array a) -> ([(x: a)]: Array a) + +consEmptyList1 :: Array Int +consEmptyList1 = + (cons: forall (a :: Type). a -> Array a -> Array a) + (1: Int) + (emptyList: forall (t100 :: Type). Array t100) + +consEmptyList2 :: Array String +consEmptyList2 = + (cons: forall (a :: Type). a -> Array a -> Array a) + ("hello": String) + (emptyList: forall (t100 :: Type). Array t100) + +brokenEven :: Int -> Int +brokenEven = + \(n: Int) -> + case ((eq: forall (@a :: Type). Eq$Dict a -> a -> a -> Boolean) (eqInt: Eq$Dict Int) (n: Int) (0: Int)) of + true -> (1: Int) + _ -> + (brokenEven: Int -> Int) ((minus: Int -> Int -> Int) (n: Int) (2: Int)) + +anObj :: { foo :: Int } +anObj = ({ foo: (3: Int) }: { foo :: Int }) + +objUpdate :: { foo :: Int } +objUpdate = + let + v :: { foo :: Int } + v = (anObj: { foo :: Int }) + in (v: { foo :: Int }) { foo = (4: Int) } + +anIntLit :: Int +anIntLit = (1: Int) + +aVal :: Int +aVal = (1: Int) + +aStringLit :: String +aStringLit = ("woop": String) + +aPred :: Int -> Boolean +aPred = \(v: Int) -> (true: Boolean) + +guardedCase :: Int -> Int -> Int +guardedCase = + \(w: Int) -> + \(x: Int) -> + let + v :: forall $19. $19 -> Int + v = \(v1: $19) -> (0: Int) + in case (w: Int) (x: Int) of + y z -> + let + v1 :: Boolean + v1 = + (eq: forall (@a :: Type). Eq$Dict a -> a -> a -> Boolean) + (eqInt: Eq$Dict Int) + (y: Int) + (2: Int) + in case (v1: Boolean) of + true -> + let + v2 :: Boolean + v2 = (aPred: Int -> Boolean) (y: Int) + in case (v2: Boolean) of + true -> + let + v3 :: Boolean + v3 = + (eq: forall (@a :: Type). Eq$Dict a -> + a -> a -> Boolean) + (eqInt: Eq$Dict Int) + (z: Int) + (0: Int) + in case (v3: Boolean) of + true -> + let + v4 :: Boolean + v4 = + (eq: forall (@a :: Type). Eq$Dict a -> + a -> a -> Boolean) + (eqInt: Eq$Dict Int) + (y: Int) + (nestedBinds: Int) + in case (v4: Boolean) of + true -> (2: Int) + _ -> + (v: forall $19. $19 -> Int) + (true: Boolean) + _ -> + (v: forall $19. $19 -> Int) + (true: Boolean) + _ -> (v: forall $19. $19 -> Int) (true: Boolean) + _ -> (v: forall $19. $19 -> Int) (true: Boolean) + +aList :: Array Int +aList = ([(1: Int), (2: Int), (3: Int), (4: Int), (5: Int)]: Array Int) + +aFunction4 :: forall (r :: Row Type). { a :: Int | r } -> Int +aFunction4 = \(r: { a :: Int | r }) -> (r: { a :: Int | r }).a + +aFunction5 :: Int +aFunction5 = + (aFunction4: forall (r :: Row Type). { a :: Int | r } -> Int) + ({ a: (2: Int) }: { a :: Int }) + +aFunction3 :: Int -> Int +aFunction3 = + \(x: Int) -> + case ((eq: forall (@a :: Type). Eq$Dict a -> a -> a -> Boolean) (eqInt: Eq$Dict Int) (x: Int) (2: Int)) of + true -> (4: Int) + _ -> (1: Int) + +aFunction2 :: Int -> Array Int +aFunction2 = \(x: Int) -> ([(x: Int), (1: Int)]: Array Int) + +aFunction :: forall (x :: Type). x -> forall (y :: Type). y -> Int -> Int +aFunction = + \(any: x) -> + \(f: forall (y :: Type). y -> Int) -> + (f: forall (y :: Type). y -> Int) (any: x) + +aFunction6 :: Int +aFunction6 = + let + go :: forall (z :: Type). z -> Int + go = \(v: z) -> (10: Int) + in (aFunction: forall (x :: Type). x -> forall (y :: Type). y -> Int -> Int) + ([]: Array t127) + (go: forall (z :: Type). z -> Int) + +aBool :: Boolean +aBool = (true: Boolean) \ No newline at end of file diff --git a/tests/purus/passing/Misc/output/Lib/main.plc b/tests/purus/passing/Misc/output/Lib/main.plc new file mode 100644 index 000000000..9c872e41a --- /dev/null +++ b/tests/purus/passing/Misc/output/Lib/main.plc @@ -0,0 +1 @@ +Program {_progAnn = Original (), _progVer = Version {_versionMajor = 1, _versionMinor = 1, _versionPatch = 0}, _progTerm = Constant (Original ()) (Some (ValueOf DefaultUniInteger 2))} \ No newline at end of file diff --git a/tests/purus/passing/Misc/output/cache-db.json b/tests/purus/passing/Misc/output/cache-db.json index 9e26dfeeb..b184cc00c 100644 --- a/tests/purus/passing/Misc/output/cache-db.json +++ b/tests/purus/passing/Misc/output/cache-db.json @@ -1 +1 @@ -{} \ No newline at end of file +{"Lib":{"tests/purus/passing/Misc/Lib.purs":["2024-04-19T00:36:37.461381134Z","6a7bd73644f4f79c945356ede14f4a08a06d729012cc63a20c616cc7c60a167d892faeef84146c0ec59a065464f2015d337b90d4e424bc8e963b464a72b09d69"]}} \ No newline at end of file diff --git a/tests/purus/passing/ReExportQualified/output/Main/index.cfn.pretty b/tests/purus/passing/ReExportQualified/output/Main/index.cfn.pretty index 2a9a5eaa8..2adba04cd 100644 --- a/tests/purus/passing/ReExportQualified/output/Main/index.cfn.pretty +++ b/tests/purus/passing/ReExportQualified/output/Main/index.cfn.pretty @@ -18,4 +18,4 @@ concat :: String -> String -> String concat = \(v: String) -> \(v1: String) -> ("concat": String) main :: String -main = ((concat: String -> String -> String) (x: String) (y: String): String) \ No newline at end of file +main = (concat: String -> String -> String) (x: String) (y: String) \ No newline at end of file diff --git a/tests/purus/passing/RedefinedFixity/output/M1/index.cfn.pretty b/tests/purus/passing/RedefinedFixity/output/M1/index.cfn.pretty index 8bc63c105..a5c0cd44d 100644 --- a/tests/purus/passing/RedefinedFixity/output/M1/index.cfn.pretty +++ b/tests/purus/passing/RedefinedFixity/output/M1/index.cfn.pretty @@ -14,4 +14,4 @@ applyFn :: forall (a :: Type) (b :: Type). forall (c :: Type) (d :: Type). c -> applyFn = \(f: forall (c :: Type) (d :: Type). c -> d) -> \(a: a) -> - ((f: forall (c :: Type) (d :: Type). c -> d) (a: a): forall d. d) \ No newline at end of file + (f: forall (c :: Type) (d :: Type). c -> d) (a: a) \ No newline at end of file diff --git a/tests/purus/passing/ShadowedModuleName/output/Main/index.cfn.pretty b/tests/purus/passing/ShadowedModuleName/output/Main/index.cfn.pretty index 835313bc5..31146dded 100644 --- a/tests/purus/passing/ShadowedModuleName/output/Main/index.cfn.pretty +++ b/tests/purus/passing/ShadowedModuleName/output/Main/index.cfn.pretty @@ -15,4 +15,4 @@ Test :: Test Test = Test main :: String -main = ((runZ: Z -> String) (((Z: String -> Z) ("Done": String): Z): Z): String) \ No newline at end of file +main = (runZ: Z -> String) ((Z: String -> Z) ("Done": String)) \ No newline at end of file diff --git a/tests/purus/passing/TransitiveImport/output/Main/index.cfn.pretty b/tests/purus/passing/TransitiveImport/output/Main/index.cfn.pretty index 41a38f9db..489c6ce9f 100644 --- a/tests/purus/passing/TransitiveImport/output/Main/index.cfn.pretty +++ b/tests/purus/passing/TransitiveImport/output/Main/index.cfn.pretty @@ -13,6 +13,6 @@ Foreign: Declarations: main :: Unit main = - ((middle: forall (a :: Type). TestCls$Dict a -> a -> a) + (middle: forall (a :: Type). TestCls$Dict a -> a -> a) (unitTestCls: TestCls$Dict Unit) - (unit: Unit): Unit) \ No newline at end of file + (unit: Unit) \ No newline at end of file diff --git a/tests/purus/passing/TransitiveImport/output/Middle/index.cfn.pretty b/tests/purus/passing/TransitiveImport/output/Middle/index.cfn.pretty index c6cc20815..b9c49ab73 100644 --- a/tests/purus/passing/TransitiveImport/output/Middle/index.cfn.pretty +++ b/tests/purus/passing/TransitiveImport/output/Middle/index.cfn.pretty @@ -18,5 +18,5 @@ unit = (Unit: Unit) middle :: forall (a :: Type). TestCls$Dict a -> a -> a middle = \(dictTestCls: TestCls$Dict a) -> - ((test: forall (@a :: Type). TestCls$Dict a -> a -> a) - (dictTestCls: TestCls$Dict a): forall a. a -> a) \ No newline at end of file + (test: forall (@a :: Type). TestCls$Dict a -> a -> a) + (dictTestCls: TestCls$Dict a) \ No newline at end of file diff --git a/tests/purus/passing/TransitiveImport/output/Test/index.cfn.pretty b/tests/purus/passing/TransitiveImport/output/Test/index.cfn.pretty index d7ac345b8..c9e4993c7 100644 --- a/tests/purus/passing/TransitiveImport/output/Test/index.cfn.pretty +++ b/tests/purus/passing/TransitiveImport/output/Test/index.cfn.pretty @@ -20,9 +20,8 @@ TestCls$Dict = \(x: { test :: a -> a }) -> (x: { test :: a -> a }) unitTestCls :: TestCls$Dict Unit unitTestCls = - ((TestCls$Dict: { test :: Unit -> Unit } -> TestCls$Dict Unit) - ({ test: \(v: Unit) -> (Unit: Unit) }: { test :: Unit -> Unit }): TestCls$Dict - Unit) + (TestCls$Dict: { test :: Unit -> Unit } -> TestCls$Dict Unit) + ({ test: \(v: Unit) -> (Unit: Unit) }: { test :: Unit -> Unit }) test :: forall (@a :: Type). TestCls$Dict a -> a -> a test =