From ff0b89f5f3d16387ee03f85a81ee9f4e14b36272 Mon Sep 17 00:00:00 2001 From: gnumonik Date: Fri, 24 May 2024 21:31:28 -0400 Subject: [PATCH] fixed bugs in backticked infix expressions & superclass variables types --- src/Language/PureScript/CST/Convert.hs | 20 +- src/Language/PureScript/TypeChecker/Kinds.hs | 69 ++- .../PureScript/TypeChecker/Subsumption.hs | 26 +- src/Language/PureScript/TypeChecker/Types.hs | 90 +++- src/Language/PureScript/TypeChecker/Unify.hs | 62 ++- tests/purus/passing/Import/M1.purs | 2 +- .../passing/Import/output/M1/externs.cbor | Bin 0 -> 1323 bytes .../purus/passing/Import/output/M1/index.cfn | 1 + .../passing/Import/output/M1/index.cfn.pretty | 18 + .../passing/Import/output/M2/externs.cbor | Bin 0 -> 381 bytes .../purus/passing/Import/output/M2/index.cfn | 1 + .../passing/Import/output/M2/index.cfn.pretty | 17 + .../ImportExplicit/output/M1/index.cfn.pretty | 6 +- .../ImportQualified/output/M1/externs.cbor | Bin 347 -> 408 bytes .../ImportQualified/output/M1/index.cfn | 2 +- .../output/M1/index.cfn.pretty | 4 +- .../ImportedClassName.purs | 2 +- .../output/ImportedClassName/externs.cbor | Bin 4157 -> 4876 bytes .../output/ImportedClassName/index.cfn | 2 +- .../output/ImportedClassName/index.cfn.pretty | 14 +- tests/purus/passing/Misc/Lib.purs | 32 +- .../passing/Misc/output/Lib/externs.cbor | Bin 40924 -> 0 bytes tests/purus/passing/Misc/output/Lib/index.cfn | 1 - .../passing/Misc/output/Lib/index.cfn.pretty | 486 ------------------ .../ModuleDeps/output/M1/index.cfn.pretty | 4 +- .../ModuleDeps/output/M2/index.cfn.pretty | 4 +- .../ModuleDeps/output/M3/index.cfn.pretty | 4 +- .../output/Lib/externs.cbor | Bin 3805 -> 0 bytes .../output/Lib/index.cfn | 1 - .../output/Lib/index.cfn.pretty | 13 - 30 files changed, 311 insertions(+), 570 deletions(-) create mode 100644 tests/purus/passing/Import/output/M1/externs.cbor create mode 100644 tests/purus/passing/Import/output/M1/index.cfn create mode 100644 tests/purus/passing/Import/output/M1/index.cfn.pretty create mode 100644 tests/purus/passing/Import/output/M2/externs.cbor create mode 100644 tests/purus/passing/Import/output/M2/index.cfn create mode 100644 tests/purus/passing/Import/output/M2/index.cfn.pretty delete mode 100644 tests/purus/passing/Misc/output/Lib/externs.cbor delete mode 100644 tests/purus/passing/Misc/output/Lib/index.cfn delete mode 100644 tests/purus/passing/Misc/output/Lib/index.cfn.pretty delete mode 100644 tests/purus/passing/NonOrphanInstanceFunDepExtra/output/Lib/externs.cbor delete mode 100644 tests/purus/passing/NonOrphanInstanceFunDepExtra/output/Lib/index.cfn delete mode 100644 tests/purus/passing/NonOrphanInstanceFunDepExtra/output/Lib/index.cfn.pretty diff --git a/src/Language/PureScript/CST/Convert.hs b/src/Language/PureScript/CST/Convert.hs index 1fa9f4157..e61377ed0 100644 --- a/src/Language/PureScript/CST/Convert.hs +++ b/src/Language/PureScript/CST/Convert.hs @@ -52,16 +52,24 @@ type ConvertM a = State (Map Text T.SourceType) a runConvert :: ConvertM a -> a runConvert ma = evalState ma M.empty -tvKind :: Text -> ConvertM T.SourceType -tvKind nm = do +tvKind :: SourceToken -> Text -> ConvertM T.SourceType +tvKind srcTok nm = do cxt <- get case M.lookup nm cxt of - Nothing -> internalError $ "Error: Missing kind annotation for TyVar " <> Text.unpack nm + Nothing -> internalError + $ "Error: Missing kind annotation for TyVar " <> Text.unpack nm + <> "\n at (or near): " <> prettyRange (srcTokenRange srcTok) Just t -> pure t + where + prettyRange (SourceRange start end) = goPos start <> "-" <> goPos end + goPos (SourcePos line col) = show line <> ":" <> show col bindTv :: Text -> T.SourceType -> ConvertM () bindTv nm ty = modify' (M.insert nm ty) +srcTokenRange :: SourceToken -> SourceRange +srcTokenRange = tokRange . tokAnn + {- Our new way of handling kinds introduces an annoying problem: We need to have the kinds of tyvars bound the decl kind signature or @@ -191,7 +199,7 @@ convertType' withinVta fileName = go bindTv nm kd' pure $ T.TypeVar (sourceName fileName a) (getIdent $ nameValue a) kd' TypeVar _ a -> do - kd <- tvKind (getIdent $ nameValue a) + kd <- tvKind (nameTok a) (getIdent $ nameValue a) pure $ T.TypeVar (sourceName fileName a) (getIdent $ nameValue a) kd TypeConstructor _ a -> pure $ T.TypeConstructor (sourceQualName fileName a) $ qualified a @@ -412,7 +420,7 @@ convertExpr fileName = go a' <- go a b' <- go b c' <- go c - pure $ positioned ann $ AST.BinaryNoParens a' b' c' + pure $ positioned ann $ AST.BinaryNoParens b' a' c' expr@(ExprOp _ _ _ _) -> do let ann = uncurry (sourceAnn fileName) $ exprRange expr @@ -769,7 +777,7 @@ convertDeclaration fileName decl = case decl of pure (nm,k) TypeVarName (_, x) -> do let nm = getIdent (nameValue x) - ki <- tvKind nm + ki <- tvKind (nameTok x) nm pure (nm,ki) goInstanceBinding = \case diff --git a/src/Language/PureScript/TypeChecker/Kinds.hs b/src/Language/PureScript/TypeChecker/Kinds.hs index 3bc62a8bf..4f0812187 100644 --- a/src/Language/PureScript/TypeChecker/Kinds.hs +++ b/src/Language/PureScript/TypeChecker/Kinds.hs @@ -58,16 +58,57 @@ import Language.PureScript.Types import Language.PureScript.Pretty.Types (prettyPrintType) import Language.PureScript.CST.Types (Comment) +import Data.Bifunctor (bimap) +import Debug.Trace +import Language.PureScript.CoreFn.Pretty.Types (prettyTypeStr) + +moduleTraces :: Bool +moduleTraces = True + +goTrace :: forall x. String -> x -> x +goTrace str x + | moduleTraces = trace str x + | otherwise = x + +goTraceM :: forall f. Applicative f => String -> f () +goTraceM msg + | moduleTraces = traceM msg + | otherwise = pure () + +spacer = '\n' : replicate 20 '-' +prettySubstitution :: Substitution -> String + +prettySubstitution Substitution{..} = + "SUBSTITUTION: " + <> "\n SUBST_TYPE: " <> show (bimap show prettyTypeStr <$> M.toList substType) + <> "\n SUBST_UNSOLVED: " <> show (bimap show (bimap show prettyTypeStr) <$> M.toList substUnsolved) + <> "\n SUBST_NAMES: " <> show (M.toList substNames) -- TODO/REVIEW/HACK: ----------------------------------- -- NO CLUE IF THE CHANGES I MADE HERE ARE CORRECT generalizeUnknowns :: [(Unknown, SourceType)] -> SourceType -> SourceType -generalizeUnknowns unks ty = +generalizeUnknowns unks ty = goTrace msg $ generalizeUnknownsWithVars (unknownVarNames (fst <$> usedTypeVariables ty) unks) ty + where + result = generalizeUnknownsWithVars (unknownVarNames (fst <$> usedTypeVariables ty) unks) ty + msg = "GENERALIZE UNKNOWNS:\nUNKNOWNS" <> prettyUnknowns + <> "\n INPUT TYPE: " <> prettyTypeStr ty + <> "\n OUTPUT TYPE: " <> prettyTypeStr result + <> spacer + prettyUnknowns = concatMap (\x -> show (fst x) <> " :: " <> show (snd x) <> "\n") unks + generalizeUnknownsWithVars :: [(Unknown, (Text, SourceType))] -> SourceType -> SourceType -generalizeUnknownsWithVars binders ty = +generalizeUnknownsWithVars binders ty = goTrace msg $ mkForAll ((getAnnForType ty,) . fmap (replaceUnknownsWithVars binders) . snd <$> binders) . replaceUnknownsWithVars binders $ ty + where + prettyBinders :: [(Unknown, (Text, SourceType))] -> String + prettyBinders xs = concatMap (\x -> show (fst x) <> ", " <> T.unpack (fst (snd x)) <> " := " <> prettyTypeStr (snd (snd x)) <> "\n") xs + + msg = "GENERALIZE UNKNOWNS WITH VARS:" + <> "\n UNKNOWNS: " <> prettyBinders binders + <> "\n TYPE: " <> prettyTypeStr ty + <> spacer replaceUnknownsWithVars :: [(Unknown, (Text, SourceType))] -> SourceType -> SourceType replaceUnknownsWithVars binders ty @@ -92,7 +133,11 @@ unknownVarNames used unks = vars = fmap (("k" <>) . T.pack . show) ([1..] :: [Int]) apply :: (MonadState CheckState m) => SourceType -> m SourceType -apply ty = flip substituteType ty <$> gets checkSubstitution +apply ty = goTrace msg $ flip substituteType ty <$> gets checkSubstitution + where + msg = "APPLY" + <> "\n TYPE: " <> prettyTypeStr ty + <> spacer substituteType :: Substitution -> SourceType -> SourceType substituteType sub = everywhereOnTypes $ \case @@ -163,8 +208,13 @@ inferKind -> m (SourceType, SourceType) inferKind = \tyToInfer -> withErrorMessageHint (ErrorInferringKind tyToInfer) - . rethrowWithPosition (fst $ getAnnForType tyToInfer) - $ go tyToInfer + . rethrowWithPosition (fst $ getAnnForType tyToInfer) $ do + result <- go tyToInfer + let msg = "\nINFERKIND INPUT: " <> prettyTypeStr tyToInfer + <> "\nINFERKIND RESULT: " <> prettyTypeStr (snd result) + <> "\n" <> replicate 20 '-' + goTraceM msg + pure result where go = \case ty@(TypeConstructor ann v) -> do @@ -339,7 +389,7 @@ instantiateKind -> SourceType -> m SourceType instantiateKind (ty, kind1) kind2 = case kind1 of - ForAll _ _ a ( k) t _ | shouldInstantiate kind2 -> do + ForAll _ _ a k t _ | shouldInstantiate kind2 -> do let ann = getAnnForType ty u <- freshKindWithKind (fst ann) k instantiateKind (KindApp ann ty u, replaceTypeVars a u t) kind2 @@ -423,7 +473,7 @@ unifyKindsWithFailure unifyKindsWithFailure onFailure = go where goWithLabel l t1 t2 = withErrorMessageHint (ErrorInRowLabel l) $ go t1 t2 - go = curry $ \case + go tx1 tx2 = goTrace msg $ case (tx1,tx2) of (TypeApp _ p1 p2, TypeApp _ p3 p4) -> do go p1 p3 join $ go <$> apply p2 <*> apply p4 @@ -446,6 +496,11 @@ unifyKindsWithFailure onFailure = go solveUnknown a' p1 (w1, w2) -> onFailure w1 w2 + where + msg = "UNIFY KINDS WITH FAILURE" + <> "\n Ty1: " <> prettyTypeStr tx1 + <> "\n Ty2: " <> prettyTypeStr tx2 + <> "\n" <> replicate 20 '-' unifyRows r1 r2 = do let (matches, rest) = alignRowsWith goWithLabel r1 r2 diff --git a/src/Language/PureScript/TypeChecker/Subsumption.hs b/src/Language/PureScript/TypeChecker/Subsumption.hs index 51725adfb..ea6759532 100644 --- a/src/Language/PureScript/TypeChecker/Subsumption.hs +++ b/src/Language/PureScript/TypeChecker/Subsumption.hs @@ -25,6 +25,25 @@ import Language.PureScript.TypeChecker.Skolems (newSkolemConstant, skolemize) import Language.PureScript.TypeChecker.Unify (alignRowsWith, freshTypeWithKind, unifyTypes) import Language.PureScript.Types (RowListItem(..), SourceType, Type(..), eqType, isREmpty, replaceTypeVars, rowFromList) +import Language.PureScript.CoreFn.Pretty.Types (prettyTypeStr) +import Debug.Trace ( trace, traceM ) + +moduleTraces :: Bool +moduleTraces = True + +goTrace :: forall x. String -> x -> x +goTrace str x + | moduleTraces = trace str x + | otherwise = x + +goTraceM :: forall f. Applicative f => String -> f () +goTraceM msg + | moduleTraces = traceM msg + | otherwise = pure () + +spacer = "\n" <> replicate 20 '-' + + -- | Subsumption can operate in two modes: -- -- * Elaboration mode, in which we try to insert type class dictionaries @@ -63,10 +82,13 @@ subsumes => SourceType -> SourceType -> m (Expr -> Expr) -subsumes ty1 ty2 = +subsumes ty1 ty2 = goTrace msg $ withErrorMessageHint (ErrorInSubsumption ty1 ty2) $ subsumes' SElaborate ty1 ty2 - + where + msg = "SUBSUMES" + <> "\n TYPE 1: " <> prettyTypeStr ty1 + <> "\n TYPE 2: " <> prettyTypeStr ty2 -- | Check that one type subsumes another subsumes' :: (MonadError MultipleErrors m, MonadState CheckState m) diff --git a/src/Language/PureScript/TypeChecker/Types.hs b/src/Language/PureScript/TypeChecker/Types.hs index 93df377d8..6697fd9ba 100644 --- a/src/Language/PureScript/TypeChecker/Types.hs +++ b/src/Language/PureScript/TypeChecker/Types.hs @@ -57,12 +57,13 @@ import Data.List.NonEmpty qualified as NEL import Data.Map qualified as M import Data.Set qualified as S import Data.IntSet qualified as IS +import Data.Text qualified as T import Language.PureScript.AST import Language.PureScript.Crash (internalError) import Language.PureScript.Environment import Language.PureScript.Errors (ErrorMessage(..), MultipleErrors, SimpleErrorMessage(..), errorMessage, errorMessage', escalateWarningWhen, internalCompilerError, onErrorMessages, onTypesInErrorMessage, parU) -import Language.PureScript.Names (pattern ByNullSourcePos, Ident(..), ModuleName, Name(..), ProperName(..), ProperNameType(..), Qualified(..), QualifiedBy(..), byMaybeModuleName, coerceProperName, freshIdent) +import Language.PureScript.Names (pattern ByNullSourcePos, Ident(..), ModuleName, Name(..), ProperName(..), ProperNameType(..), Qualified(..), QualifiedBy(..), byMaybeModuleName, coerceProperName, freshIdent, runModuleName, runIdent) import Language.PureScript.TypeChecker.Deriving (deriveInstance) import Language.PureScript.TypeChecker.Entailment (InstanceContext, newDictionaries, replaceTypeClassDictionaries) import Language.PureScript.TypeChecker.Kinds (checkConstraint, checkKind, checkTypeKind, kindOf, kindOfWithScopedVars, unifyKinds', unknownsWithKinds) @@ -76,6 +77,27 @@ import Language.PureScript.Types import Language.PureScript.Label (Label(..)) import Language.PureScript.PSString (PSString) +import Debug.Trace +import Language.PureScript.CoreFn.Pretty.Types (prettyTypeStr) +import Language.PureScript.Pretty.Values (renderValue) + +moduleTraces :: Bool +moduleTraces = True + +goTrace :: forall x. String -> x -> x +goTrace str x + | moduleTraces = trace str x + | otherwise = x + +goTraceM :: forall f. Applicative f => String -> f () +goTraceM msg + | moduleTraces = traceM msg + | otherwise = pure () + +spacer = '\n' : replicate 20 '-' + + + data BindingGroupType = RecursiveBindingGroup | NonRecursiveBindingGroup @@ -102,7 +124,7 @@ typesOf -> ModuleName -> [((SourceAnn, Ident), Expr)] -> m [((SourceAnn, Ident), (Expr, SourceType))] -typesOf bindingGroupType moduleName vals = withFreshSubstitution $ do +typesOf bindingGroupType moduleName vals = goTrace ("TYPESOF: " <> T.unpack (runModuleName moduleName)) $ withFreshSubstitution $ do (tys, wInfer) <- capturingSubstitution tidyUp $ do (SplitBindingGroup untyped typed dict, w) <- withoutWarnings $ typeDictionaryForBindingGroup (Just moduleName) vals ds1 <- parU typed $ \e -> withoutWarnings $ checkTypedBindingGroupElement moduleName e dict @@ -302,7 +324,7 @@ checkTypedBindingGroupElement -> M.Map (Qualified Ident) (SourceType, NameKind, NameVisibility) -- ^ Names brought into scope in this binding group -> m ((SourceAnn, Ident), (Expr, SourceType)) -checkTypedBindingGroupElement mn (ident, (val, args, ty, checkType)) dict = do +checkTypedBindingGroupElement mn (ident, (val, args, ty, checkType)) dict = goTrace msg $ do -- We replace type synonyms _after_ kind-checking, since we don't want type -- synonym expansion to bring type variables into scope. See #2542. ty' <- introduceSkolemScope <=< replaceAllTypeSynonyms $ ty @@ -311,6 +333,12 @@ checkTypedBindingGroupElement mn (ident, (val, args, ty, checkType)) dict = do then withScopedTypeVars mn args $ bindNames dict $ check val ty' else return (TypedValue' False val ty') return (ident, (tvToExpr val', ty')) + where + msg = "CHECK_TYPED_BINDING_GROUP_ELEMENT: " <> T.unpack (runIdent $ snd ident) + <> "\n VALUE: " <> renderValue 100 val + <> "\n ARGS: " <> concatMap (\(_nm,_ty) -> " " <> T.unpack _nm <> " := " <> prettyTypeStr _ty <> "\n") args + <> "\n TYPE: " <> prettyTypeStr ty + <> spacer -- | Infer a type for a value in a binding group which lacks an annotation. typeForBindingGroupElement @@ -321,12 +349,17 @@ typeForBindingGroupElement -> M.Map (Qualified Ident) (SourceType, NameKind, NameVisibility) -- ^ Names brought into scope in this binding group -> m ((SourceAnn, Ident), (Expr, SourceType)) -typeForBindingGroupElement (ident, (val, ty)) dict = do +typeForBindingGroupElement (ident, (val, ty)) dict = goTrace msg $ do -- Infer the type with the new names in scope TypedValue' _ val' ty' <- bindNames dict $ infer val -- Unify the type with the unification variable we chose for this definition unifyTypes ty ty' return (ident, (TypedValue True val' ty', ty')) + where + msg = "TYPE_FOR_BINDING_GROUP_ELEMENT: " <> T.unpack (runIdent $ snd ident) + <> "\n VALUE: " <> renderValue 100 val + <> "\n TYPE: " <> prettyTypeStr ty + <> spacer -- | Remove any ForAlls and ConstrainedType constructors in a type by introducing new unknowns -- or TypeClassDictionary values. @@ -338,14 +371,35 @@ instantiatePolyTypeWithUnknowns => Expr -> SourceType -> m (Expr, SourceType) -instantiatePolyTypeWithUnknowns val (ForAll _ _ ident mbK ty _) = do +instantiatePolyTypeWithUnknowns val printMe@(ForAll _ _ ident mbK ty _) = do u <- freshTypeWithKind mbK insertUnkName' u ident - instantiatePolyTypeWithUnknowns val $ replaceTypeVars ident u ty -instantiatePolyTypeWithUnknowns val (ConstrainedType _ con ty) = do + result <- instantiatePolyTypeWithUnknowns val $ replaceTypeVars ident u ty + let msg = mkMsg result + goTraceM msg + pure result + where + mkMsg (resultExpr,resultTy) + = "INSTANTIATE POLYTYPES WITH UNKNOWNS" + <> "\n EXPR: " <> renderValue 100 val + <> "\n TYPE: " <> prettyTypeStr printMe + <> "\n RESULT EXPR: " <> renderValue 100 resultExpr + <> "\n RESULT TYPE: " <> prettyTypeStr resultTy + <> spacer +instantiatePolyTypeWithUnknowns val printMe@(ConstrainedType _ con ty) = do dicts <- getTypeClassDictionaries hints <- getHints - instantiatePolyTypeWithUnknowns (App val (TypeClassDictionary con dicts hints)) ty + result <- instantiatePolyTypeWithUnknowns (App val (TypeClassDictionary con dicts hints)) ty + goTraceM (mkMsg result) + pure result + where + mkMsg (resultExpr,resultTy) + = "INSTANTIATE POLYTYPES WITH UNKNOWNS" + <> "\n EXPR: " <> renderValue 100 val + <> "\n TYPE: " <> prettyTypeStr printMe + <> "\n RESULT EXPR: " <> renderValue 100 resultExpr + <> "\n RESULT TYPE: " <> prettyTypeStr resultTy + <> spacer instantiatePolyTypeWithUnknowns val ty = return (val, ty) instantiatePolyTypeWithUnknownsUntilVisible @@ -368,7 +422,11 @@ instantiateConstraint val ty = pure (val, ty) -- | Match against TUnknown and call insertUnkName, failing otherwise. insertUnkName' :: (MonadState CheckState m, MonadError MultipleErrors m) => SourceType -> Text -> m () -insertUnkName' (TUnknown _ i) n = insertUnkName i n +insertUnkName' tu@(TUnknown _ i) n = goTrace msg $ insertUnkName i n + where + msg = "INSERT UNK NAME" + <> "\n TYPE: " <> prettyTypeStr tu + <> "\n NAME: " <> T.unpack n insertUnkName' _ _ = internalCompilerError "type is not TUnknown" -- | Infer a type for a value, rethrowing any error to provide a more useful error message @@ -376,7 +434,8 @@ infer :: (MonadSupply m, MonadState CheckState m, MonadError MultipleErrors m, MonadWriter MultipleErrors m) => Expr -> m TypedValue' -infer val = withErrorMessageHint (ErrorInferringType val) $ infer' val +infer val = goTrace ("INFER\n EXPR: " <> renderValue 100 val <> spacer) + withErrorMessageHint (ErrorInferringType val) $ infer' val -- | Infer a type for a value infer' @@ -772,7 +831,16 @@ check => Expr -> SourceType -> m TypedValue' -check val ty = withErrorMessageHint' val (ErrorCheckingType val ty) $ check' val ty +check val ty = do + goTraceM msg1 + result <- withErrorMessageHint' val (ErrorCheckingType val ty) $ check' val ty + let msg2 = "\n CHECK RESULT: " <> renderValue 100 (tvToExpr result) <> spacer + goTraceM msg2 + pure result + where + msg1 = "CHECK" + <> "\n EXPR: " <> renderValue 100 val + <> "\n TYPE: " <> prettyTypeStr ty -- | -- Check the type of a value diff --git a/src/Language/PureScript/TypeChecker/Unify.hs b/src/Language/PureScript/TypeChecker/Unify.hs index 958673e15..e81e43b71 100644 --- a/src/Language/PureScript/TypeChecker/Unify.hs +++ b/src/Language/PureScript/TypeChecker/Unify.hs @@ -30,10 +30,37 @@ import Language.PureScript.Crash (internalError) import Language.PureScript.Environment qualified as E import Language.PureScript.Errors (ErrorMessageHint(..), MultipleErrors, SimpleErrorMessage(..), SourceAnn, errorMessage, internalCompilerError, onErrorMessages, rethrow, warnWithPosition, withoutPosition) import Language.PureScript.TypeChecker.Kinds (elaborateKind, instantiateKind, unifyKinds') -import Language.PureScript.TypeChecker.Monad (CheckState(..), Substitution(..), UnkLevel(..), Unknown, getLocalContext, guardWith, lookupUnkName, withErrorMessageHint) +import Language.PureScript.TypeChecker.Monad (CheckState(..), Substitution(..), UnkLevel(..), Unknown, getLocalContext, guardWith, lookupUnkName, withErrorMessageHint, debugSubstitution) import Language.PureScript.TypeChecker.Skolems (newSkolemConstant, skolemize) import Language.PureScript.Types (Constraint(..), pattern REmptyKinded, RowListItem(..), SourceType, Type(..), WildcardData(..), alignRowsWith, everythingOnTypes, everywhereOnTypes, everywhereOnTypesM, getAnnForType, mkForAll, rowFromList, srcTUnknown) +import Debug.Trace +import Data.Bifunctor (bimap) +import Language.PureScript.CoreFn.Pretty.Types (prettyTypeStr) + + +moduleTraces :: Bool +moduleTraces = True + +goTrace :: forall x. String -> x -> x +goTrace str x + | moduleTraces = trace str x + | otherwise = x + +goTraceM :: forall f. Applicative f => String -> f () +goTraceM msg + | moduleTraces = traceM msg + | otherwise = pure () + +spacer = "\n" <> replicate 20 '-' + +prettySubstitution :: Substitution -> String +prettySubstitution Substitution{..} = + "SUBSTITUTION: " + <> "\n SUBST_TYPE: " <> show (bimap show prettyTypeStr <$> M.toList substType) + <> "\n SUBST_UNSOLVED: " <> show (bimap show (bimap show prettyTypeStr) <$> M.toList substUnsolved) + <> "\n SUBST_NAMES: " <> show (M.toList substNames) + -- | Generate a fresh type variable with an unknown kind. Avoid this if at all possible. freshType :: (MonadState CheckState m) => m SourceType freshType = state $ \st -> do @@ -62,7 +89,7 @@ freshTypeWithKind kind = state $ \st -> do -- | Update the substitution to solve a type constraint solveType :: (MonadError MultipleErrors m, MonadState CheckState m) => Int -> SourceType -> m () -solveType u t = rethrow (onErrorMessages withoutPosition) $ do +solveType u t = goTrace msg $ rethrow (onErrorMessages withoutPosition) $ do -- We strip the position so that any errors get rethrown with the position of -- the original unification constraint. Otherwise errors may arise from arbitrary -- locations. We don't otherwise have the "correct" position on hand, since it @@ -77,11 +104,22 @@ solveType u t = rethrow (onErrorMessages withoutPosition) $ do M.insert u t' $ substType $ checkSubstitution cs } } - + where + msg = "SOLVETYPE" + <> "\n UNKNOWN: " <> show u + <> "\n TYPE: " <> prettyTypeStr t -- | Apply a substitution to a type substituteType :: Substitution -> SourceType -> SourceType -substituteType sub = everywhereOnTypes go +substituteType sub toSub = goTrace msg result where + result = everywhereOnTypes go toSub + + msg = "SUBSTITUTE TYPE" + <> "\n SUBSTITUTION: " <> prettySubstitution sub + <> "\n INPUT: " <> prettyTypeStr toSub + <> "\n RESULT: " <> prettyTypeStr result + <> spacer + go (TUnknown ann u) = case M.lookup u (substType sub) of Nothing -> TUnknown ann u @@ -108,6 +146,11 @@ unknownsInType t = everythingOnTypes (.) go t [] -- | Unify two types, updating the current substitution unifyTypes :: (MonadError MultipleErrors m, MonadState CheckState m) => SourceType -> SourceType -> m () unifyTypes t1 t2 = do + let msg = "UNIFY TYPES" + <> "\n TYPE A: " <> prettyTypeStr t1 + <> "\n TYPE B: " <> prettyTypeStr t2 + <> "\n" <> replicate 20 '-' + goTraceM msg sub <- gets checkSubstitution withErrorMessageHint (ErrorUnifyingTypes t1 t2) $ unifyTypes' (substituteType sub t1) (substituteType sub t2) where @@ -128,7 +171,7 @@ unifyTypes t1 t2 = do sk `unifyTypes` ty2 unifyTypes' ForAll{} _ = internalError "unifyTypes: unspecified skolem scope" unifyTypes' ty f@ForAll{} = f `unifyTypes` ty - unifyTypes' (TypeVar _ v1 k1) (TypeVar _ v2 k2) | v1 == v2 = pure () -- unifyTypes k1 k2 -- REVIEW/HACK: Not sure if this is right... + unifyTypes' (TypeVar _ v1 k1) (TypeVar _ v2 k2) | v1 == v2 = pure () -- REVIEW/HACK: Not sure if this is right... unifyTypes' ty1@(TypeConstructor _ c1) ty2@(TypeConstructor _ c2) = guardWith (errorMessage (TypesDoNotUnify ty1 ty2)) (c1 == c2) unifyTypes' (TypeLevelString _ s1) (TypeLevelString _ s2) | s1 == s2 = return () @@ -207,7 +250,14 @@ varIfUnknown unks ty = do -- This *should* be a map from TyVar names to their kinds. ugh let bindings = M.fromList $ snd <$> bn' ty' <- go ty - pure $ mkForAll bn' $ cleanup bindings ty' + let result = mkForAll bn' $ cleanup bindings ty' + msg = "VAR_IF_UNKNOWN" + <> "\n UNKNOWNS: " <> show (bimap show prettyTypeStr <$> unks) + <> "\n INPUT: " <> prettyTypeStr ty + <> "\n RESULT: " <> prettyTypeStr result + <> "\n" <> replicate 20 '-' + goTraceM msg + pure result where toName :: Unknown -> m T.Text toName u = (<> T.pack (show u)) . fromMaybe "t" <$> lookupUnkName u diff --git a/tests/purus/passing/Import/M1.purs b/tests/purus/passing/Import/M1.purs index ec5358550..ccc699e1c 100644 --- a/tests/purus/passing/Import/M1.purs +++ b/tests/purus/passing/Import/M1.purs @@ -1,6 +1,6 @@ module M1 where -id :: forall a. a -> a +id :: forall (a :: Type). a -> a id = \x -> x foo = id diff --git a/tests/purus/passing/Import/output/M1/externs.cbor b/tests/purus/passing/Import/output/M1/externs.cbor new file mode 100644 index 0000000000000000000000000000000000000000..11c6f36c3ca09e9139a5c6c76581d8fc7acb7d22 GIT binary patch literal 1323 zcmeBVNH@?kG}SXSPVzOJ-^|>?P@zFDjjEv0;Y@AIDNtr36Yf4Vb&;LKag&`%NC^NT_p%F~OxeYB0=}x7YIVG8SKsgxm ze?tS%d0-3MIh%-eCNq081G9u;LnC8iVlyl8+C)IwBpR9-ni#>3Yhp+VsVqosVJF@Q z32BJcgvd*qSbn&DQOmt2yWpVz`js(WP`s1s16SgZgED5_Z8*u=m9N+zHr aHkwY5GA#3GIzi6Kpmg$|*ir;i*Z~0ZFTGv> literal 0 HcmV?d00001 diff --git a/tests/purus/passing/Import/output/M1/index.cfn b/tests/purus/passing/Import/output/M1/index.cfn new file mode 100644 index 000000000..b701fbb4d --- /dev/null +++ b/tests/purus/passing/Import/output/M1/index.cfn @@ -0,0 +1 @@ +{"builtWith":"0.0.1","comments":[],"dataTypes":{},"decls":[{"annotation":{"meta":null,"sourceSpan":{"end":[3,33],"start":[3,1]}},"bindType":"NonRec","expression":{"annotation":{"meta":null,"sourceSpan":{"end":[4,8],"start":[4,7]}},"argument":"x","body":{"annotation":{"meta":null,"sourceSpan":{"end":[4,13],"start":[4,12]}},"kind":"Var","type":{"annotation":[{"end":[3,28],"name":"tests/purus/passing/Import/M1.purs","start":[3,27]},[]],"contents":{"kind":{"annotation":[{"end":[3,24],"name":"tests/purus/passing/Import/M1.purs","start":[3,20]},[]],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"},"var":"a"},"tag":"TypeVar"},"value":{"identifier":"x","sourcePos":[4,7]}},"kind":"Abs","type":{"annotation":[{"end":[3,33],"name":"tests/purus/passing/Import/M1.purs","start":[3,7]},[]],"contents":{"identifier":"a","kind":{"annotation":[{"end":[3,24],"name":"tests/purus/passing/Import/M1.purs","start":[3,20]},[]],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"},"skolem":0,"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":[3,28],"name":"tests/purus/passing/Import/M1.purs","start":[3,27]},[]],"contents":{"kind":{"annotation":[{"end":[3,24],"name":"tests/purus/passing/Import/M1.purs","start":[3,20]},[]],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"},"var":"a"},"tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[{"end":[3,33],"name":"tests/purus/passing/Import/M1.purs","start":[3,32]},[]],"contents":{"kind":{"annotation":[{"end":[3,24],"name":"tests/purus/passing/Import/M1.purs","start":[3,20]},[]],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"},"var":"a"},"tag":"TypeVar"}],"tag":"TypeApp"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"identifier":"id"},{"annotation":{"meta":null,"sourceSpan":{"end":[6,9],"start":[6,1]}},"bindType":"NonRec","expression":{"annotation":{"meta":null,"sourceSpan":{"end":[6,9],"start":[6,7]}},"kind":"Var","type":{"annotation":[{"end":[3,33],"name":"tests/purus/passing/Import/M1.purs","start":[3,7]},[]],"contents":{"identifier":"a","kind":{"annotation":[{"end":[3,24],"name":"tests/purus/passing/Import/M1.purs","start":[3,20]},[]],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"},"skolem":0,"type":{"annotation":[{"end":[3,33],"name":"tests/purus/passing/Import/M1.purs","start":[3,27]},[]],"contents":[{"annotation":[{"end":[3,33],"name":"tests/purus/passing/Import/M1.purs","start":[3,27]},[]],"contents":[{"annotation":[{"end":[3,31],"name":"tests/purus/passing/Import/M1.purs","start":[3,29]},[]],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[3,28],"name":"tests/purus/passing/Import/M1.purs","start":[3,27]},[]],"contents":{"kind":{"annotation":[{"end":[3,24],"name":"tests/purus/passing/Import/M1.purs","start":[3,20]},[]],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"},"var":"a"},"tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[{"end":[3,33],"name":"tests/purus/passing/Import/M1.purs","start":[3,32]},[]],"contents":{"kind":{"annotation":[{"end":[3,24],"name":"tests/purus/passing/Import/M1.purs","start":[3,20]},[]],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"},"var":"a"},"tag":"TypeVar"}],"tag":"TypeApp"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"value":{"identifier":"id","moduleName":["M1"]}},"identifier":"foo"}],"exports":["id","foo"],"foreign":[],"imports":[{"annotation":{"meta":null,"sourceSpan":{"end":[6,9],"start":[1,1]}},"moduleName":["Builtin"]},{"annotation":{"meta":null,"sourceSpan":{"end":[6,9],"start":[1,1]}},"moduleName":["M1"]},{"annotation":{"meta":null,"sourceSpan":{"end":[6,9],"start":[1,1]}},"moduleName":["Prim"]}],"moduleName":["M1"],"modulePath":"tests/purus/passing/Import/M1.purs","reExports":{},"sourceSpan":{"end":[6,9],"start":[1,1]}} \ No newline at end of file diff --git a/tests/purus/passing/Import/output/M1/index.cfn.pretty b/tests/purus/passing/Import/output/M1/index.cfn.pretty new file mode 100644 index 000000000..21d9fc5ee --- /dev/null +++ b/tests/purus/passing/Import/output/M1/index.cfn.pretty @@ -0,0 +1,18 @@ +M1 (tests/purus/passing/Import/M1.purs) +Imported Modules: + Builtin, + M1, + Prim +Exports: + id, + foo +Re-Exports: + +Foreign: + +Declarations: +id :: forall (a :: Prim.Type). (a :: Prim.Type) -> (a :: Prim.Type) +id = \(x: (a :: Prim.Type)) -> (x: (a :: Prim.Type)) + +foo :: forall (a :: Prim.Type). (a :: Prim.Type) -> (a :: Prim.Type) +foo = (id: forall (a :: Prim.Type). (a :: Prim.Type) -> (a :: Prim.Type)) \ No newline at end of file diff --git a/tests/purus/passing/Import/output/M2/externs.cbor b/tests/purus/passing/Import/output/M2/externs.cbor new file mode 100644 index 0000000000000000000000000000000000000000..f68dbd6371c1d7471bfa4565797593abc0313d00 GIT binary patch literal 381 zcmeBVNH@?kG}SXSPVzOH-^|>?P@zh z;>FDjjEv0;tRhVeDY=Q6dH?6PFr)+&W#%?AG=gb3x1oh0-KjJ)rzA5ECi}qj7O- g&TuQuOD@UG&ud{sF@Ug*xXn!V%qwa5Pg?K+0Q Prim.Int +main = + \(v: (t1 :: Prim.Type)) -> + (foo: forall (a :: Prim.Type). (a :: Prim.Type) -> (a :: Prim.Type)) + (42: Prim.Int) \ No newline at end of file diff --git a/tests/purus/passing/ImportExplicit/output/M1/index.cfn.pretty b/tests/purus/passing/ImportExplicit/output/M1/index.cfn.pretty index 6477aa1e8..89f2eabbe 100644 --- a/tests/purus/passing/ImportExplicit/output/M1/index.cfn.pretty +++ b/tests/purus/passing/ImportExplicit/output/M1/index.cfn.pretty @@ -11,11 +11,11 @@ Re-Exports: Foreign: Declarations: -Z :: Z +Z :: M1.Z Z = Z -X :: X +X :: M1.X X = X -Y :: X +Y :: M1.X Y = Y \ No newline at end of file diff --git a/tests/purus/passing/ImportQualified/output/M1/externs.cbor b/tests/purus/passing/ImportQualified/output/M1/externs.cbor index c11ea91f9273657cc15e1fdcd1db2aa473edfa0f..53093f766edebdaa83574bedc714c2a0e493de6c 100644 GIT binary patch delta 58 vcmcc3G=q7<+==rNgjyJzS{M?V85kHqxFM;;aN;}#K`esuOb!1h3YY@`8*LG~ delta 56 tcmbQie4A;)T*k)94vg{>_c*FFGd8s_Bs4QHFo1AFQi&m^$mDoNO91T059a^? diff --git a/tests/purus/passing/ImportQualified/output/M1/index.cfn b/tests/purus/passing/ImportQualified/output/M1/index.cfn index 55c883ec1..6ff1149b2 100644 --- a/tests/purus/passing/ImportQualified/output/M1/index.cfn +++ b/tests/purus/passing/ImportQualified/output/M1/index.cfn @@ -1 +1 @@ -{"builtWith":"0.0.1","comments":[],"dataTypes":{},"decls":[{"annotation":{"meta":null,"sourceSpan":{"end":[3,10],"start":[3,1]}},"bindType":"NonRec","expression":{"annotation":{"meta":null,"sourceSpan":{"end":[3,10],"start":[3,1]}},"argument":"x","body":{"annotation":{"meta":null,"sourceSpan":{"end":[3,10],"start":[3,9]}},"kind":"Var","type":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":"t1","tag":"TypeVar"},"value":{"identifier":"x","sourcePos":[3,1]}},"kind":"Abs","type":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":{"identifier":"t1","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":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":"t1","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":"t1","tag":"TypeVar"}],"tag":"TypeApp"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"identifier":"log"}],"exports":["log"],"foreign":[],"imports":[{"annotation":{"meta":null,"sourceSpan":{"end":[3,10],"start":[1,1]}},"moduleName":["Builtin"]},{"annotation":{"meta":null,"sourceSpan":{"end":[3,10],"start":[1,1]}},"moduleName":["Prim"]}],"moduleName":["M1"],"modulePath":"tests/purus/passing/ImportQualified/M1.purs","reExports":{},"sourceSpan":{"end":[3,10],"start":[1,1]}} \ No newline at end of file +{"builtWith":"0.0.1","comments":[],"dataTypes":{},"decls":[{"annotation":{"meta":null,"sourceSpan":{"end":[3,10],"start":[3,1]}},"bindType":"NonRec","expression":{"annotation":{"meta":null,"sourceSpan":{"end":[3,10],"start":[3,1]}},"argument":"x","body":{"annotation":{"meta":null,"sourceSpan":{"end":[3,10],"start":[3,9]}},"kind":"Var","type":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":{"kind":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"},"var":"t1"},"tag":"TypeVar"},"value":{"identifier":"x","sourcePos":[3,1]}},"kind":"Abs","type":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":{"identifier":"t1","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":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":{"kind":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"},"var":"t1"},"tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":{"kind":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"},"var":"t1"},"tag":"TypeVar"}],"tag":"TypeApp"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"identifier":"log"}],"exports":["log"],"foreign":[],"imports":[{"annotation":{"meta":null,"sourceSpan":{"end":[3,10],"start":[1,1]}},"moduleName":["Builtin"]},{"annotation":{"meta":null,"sourceSpan":{"end":[3,10],"start":[1,1]}},"moduleName":["Prim"]}],"moduleName":["M1"],"modulePath":"tests/purus/passing/ImportQualified/M1.purs","reExports":{},"sourceSpan":{"end":[3,10],"start":[1,1]}} \ No newline at end of file diff --git a/tests/purus/passing/ImportQualified/output/M1/index.cfn.pretty b/tests/purus/passing/ImportQualified/output/M1/index.cfn.pretty index f44bba751..d77f8d4e3 100644 --- a/tests/purus/passing/ImportQualified/output/M1/index.cfn.pretty +++ b/tests/purus/passing/ImportQualified/output/M1/index.cfn.pretty @@ -9,5 +9,5 @@ Re-Exports: Foreign: Declarations: -log :: forall (t1 :: Type). t1 -> t1 -log = \(x: t1) -> (x: t1) \ No newline at end of file +log :: forall (t1 :: Prim.Type). (t1 :: Prim.Type) -> (t1 :: Prim.Type) +log = \(x: (t1 :: Prim.Type)) -> (x: (t1 :: Prim.Type)) \ No newline at end of file diff --git a/tests/purus/passing/InstanceUnnamedSimilarClassName/ImportedClassName.purs b/tests/purus/passing/InstanceUnnamedSimilarClassName/ImportedClassName.purs index c96669335..917c18f05 100644 --- a/tests/purus/passing/InstanceUnnamedSimilarClassName/ImportedClassName.purs +++ b/tests/purus/passing/InstanceUnnamedSimilarClassName/ImportedClassName.purs @@ -1,4 +1,4 @@ module ImportedClassName where -class ClassName a where +class ClassName (a :: Type) where foo :: a -> Int diff --git a/tests/purus/passing/InstanceUnnamedSimilarClassName/output/ImportedClassName/externs.cbor b/tests/purus/passing/InstanceUnnamedSimilarClassName/output/ImportedClassName/externs.cbor index a00d7658056972a723e548d5897f3ad1e2859ab5..b9baa5bb39ea34f8a4f8b3555572d9a773978d43 100644 GIT binary patch delta 319 zcmdn1(4)3Nk8yG{M=(3HcrydDg!E)v#$dh{#-0Oz!3Bm|VhXjiQBqH3N Int } -> { foo :: a -> Int } -ClassName$Dict = \(x: { foo :: a -> Int }) -> (x: { foo :: a -> Int }) +ClassName$Dict :: forall (a :: Prim.Type). { foo :: (a :: Prim.Type) -> Prim.Int } -> { foo :: (a :: Prim.Type) -> Prim.Int } +ClassName$Dict = + \(x: { foo :: (a :: Prim.Type) -> Prim.Int }) -> + (x: { foo :: (a :: Prim.Type) -> Prim.Int }) -foo :: forall (@a :: Type). ClassName$Dict a -> a -> Int +foo :: forall (@a :: Prim.Type). ImportedClassName.ClassName$Dict (a :: Prim.Type) -> (a :: Prim.Type) -> Prim.Int foo = - \(dict: ClassName$Dict a) -> - case (dict: ClassName$Dict a) of - ClassName$Dict v -> (v: { foo :: a -> Int }).foo \ No newline at end of file + \(dict: ImportedClassName.ClassName$Dict (a :: Prim.Type)) -> + case (dict: ImportedClassName.ClassName$Dict (a :: Prim.Type)) of + ClassName$Dict v -> (v: { foo :: (a :: Prim.Type) -> Prim.Int }).foo \ No newline at end of file diff --git a/tests/purus/passing/Misc/Lib.purs b/tests/purus/passing/Misc/Lib.purs index aeccff29d..2228170ba 100644 --- a/tests/purus/passing/Misc/Lib.purs +++ b/tests/purus/passing/Misc/Lib.purs @@ -2,7 +2,7 @@ module Lib where {- Type Classes -} -- Single Param -class Eq a where +class Eq (a :: Type) where eq :: a -> a -> Boolean minus :: Int -> Int -> Int @@ -26,7 +26,7 @@ brokenEven n = else brokenEven (n `minus` 2) -- Multi Param -class Eq2 a b where +class Eq2 (a :: Type) (b :: Type) where eq2 :: a -> b -> Boolean instance Eq2 Int Boolean where @@ -45,10 +45,10 @@ data TestBinderSum = | ConString String | ConChar Char | ConNested TestBinderSum - | ConQuantified (forall x. x -> Int) - | ConConstrained (forall x. Eq x => x -> Int) -- kind of nonsensical + | ConQuantified (forall (x :: Type). x -> Int) + | ConConstrained (forall (x :: Type). Eq x => x -> Int) -- kind of nonsensical | ConObject {objField :: Int} - | ConObjectQuantified {objFieldQ :: forall x. x -> Int} + | ConObjectQuantified {objFieldQ :: forall (x :: Type). x -> Int} testBinders :: TestBinderSum -> Int testBinders x = case x of @@ -131,7 +131,7 @@ aList = [1,2,3,4,5] {- Functions -} -aFunction :: forall x. x -> (forall y. y -> Int) -> Int +aFunction :: forall (x :: Type). x -> (forall (y :: Type). y -> Int) -> Int aFunction any f = f any aFunction2 :: Int -> Array Int @@ -154,10 +154,10 @@ aFunction6 = aFunction [] go -- main = aFunction4 {a: 2, b: 3} -recF1 :: forall x. x -> Int +recF1 :: forall (x :: Type). x -> Int recF1 x = recG1 x -recG1 :: forall x. x -> Int +recG1 :: forall (x :: Type). x -> Int recG1 x = recF1 x testBuiltin :: Int @@ -198,10 +198,10 @@ anObj = {foo: 3} objUpdate :: {foo :: Int} objUpdate = anObj {foo = 4} -polyInObj :: {bar :: forall x. x -> Int, baz :: Int} +polyInObj :: {bar :: forall (x :: Type). x -> Int, baz :: Int} polyInObj = {bar: go, baz : 100} where - go :: forall y. y -> Int + go :: forall (y :: Type). y -> Int go _ = 5 polyInObjMatch :: Int @@ -211,7 +211,7 @@ polyInObjMatch = case polyInObj of aPred :: Int -> Boolean aPred _ = true -cons :: forall a. a -> Array a -> Array a +cons :: forall (a :: Type). a -> Array a -> Array a cons x xs = [x] emptyList = [] @@ -220,13 +220,13 @@ consEmptyList1 = cons 1 emptyList consEmptyList2 = cons "hello" emptyList -id :: forall t. t -> t +id :: forall (t :: Type). t -> t id x = x -objForall :: forall a b. {getIdA :: a -> a, getIdB :: b -> b} +objForall :: forall (a :: Type) (b :: Type). {getIdA :: a -> a, getIdB :: b -> b} objForall = {getIdA: id, getIdB: id} -arrForall :: forall a. Array (a -> a) +arrForall :: forall (a :: Type). Array (a -> a) arrForall = [id] {- We should probably just remove guarded case branches, see slack msg @@ -246,11 +246,11 @@ id a = a inner = {getId: id} -} -class Eq a <= Ord a where +class Eq a <= Ord (a :: Type) where compare :: a -> a -> Int instance Ord Int where compare _ _ = 42 -testEqViaOrd :: forall a. Ord a => a -> a -> Boolean +testEqViaOrd :: forall (a :: Type). Ord a => a -> a -> Boolean testEqViaOrd a b = eq a b diff --git a/tests/purus/passing/Misc/output/Lib/externs.cbor b/tests/purus/passing/Misc/output/Lib/externs.cbor deleted file mode 100644 index d80d67eee16f2da7365701461fb8177b31d0077e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 40924 zcmeHQ&2JpXu^;+HvSRrwvSqatTc#~1mMvT2hv_(ZjseM$9RrT@;XEI5(r|agU2?fg zEtfWxL$JGK7zob*fdDxQ6p)KC@`$*4lrq2dl5NqUF}|nWdHH3jH@+Uar>X z&itynTslL4a+-d{|H+4yu&ICh z84VScyTKy;#cx-_daHV|%Af1>nf_UBHN$G1f5AiidUif45tilT=M<#pBZUQ)g671_ zZdPAfTxqR@wc6$1MJ1YW)h{C+jrjby*;rZfA!+rsdk*LP0@^Z|}So~?e6pH`Q>1XT?`TB(;>)rOzvOrX6y z;Cuo;?Zb5n{?2gVGsA(u>jNG&qtZu{zK|b#L26&SQmwVBUg|C{(n{b%a(SsnQNj1{ zbuK*RgKlANC2W?X@`vHFSFF|4Zu;!fQmtAFd2)Dpds=sCx%6S6+L)dHpQUox@*=;w z)Tmwl#20rxf&Nw4Dph>QkHX(Hqp}ZVx#TJ9YP7i2y6o!(>x}li8Nq9A*+Y1_!`Z5r z%-C2yYBVVX@{xEoY&K(PpV;@;O)r{jI`;jd8qxsk`__Yn_vfN|)Fg{9f3Ow=0sq?# zqUaLE0G+YHf3ZmU4gE^>)iJ;j4TQUx_8%l1PYtOcLHh(`g8RvALEd5rfH#_9`-h!iLMTr!056#< z^Omu@IpcfD_I}8=$0a8ZVIL>de|3<>Fgi-NhWH4~T(ql(U0Z>yV%c+1%uE>ew+qR~G;Wd(B_RBowA zUFx|j%dCnxguAl(4KdY~b1*krN3Bhv{e#!h^#it5JZXI#Mr~sLz23%Ssm*rA(x3Ym z;5d01W{%|MMDF8YXO@_lGsI|8x$H*%hX$t)cv9WpNOje~tj77sGi=j-PPt6$bnh?U zlR#suyB8~ztWT5+3Vm+Vc$AoB_U_GW0le0`0Sv-~ zTKOubi9<&;qXmk{bfdTn?g(YRN7PZEo@OB2c|Jlh>yg7l3Qo{kR)Y!d$P1d$oZvXs z3*$S!^0UH9FqbaCLM&{dekl(`I(d>F0{GZ1C}uzNBqhhA}W1IP?XSI>;g zzfXZ@G>dbM=l}7$HxGOk=S(;EvA~jb6)2hMePy8hFJ{|zVTeOqurf5zA9VL-RhAMH zZ}|%Mj{bVIby{>%B%QEGn9v_BrLnQ|_Dqa=54TQD)oD(5dQAZ=o!}ks6IOO@N(-Fl z*=HXLW|`Gq6?6icL&^DwEr5-q8gBM ziA8A;OA^u9W;48ujKTZcj5ghCHC$v4h#+!#i;5rWEo(%hAC^se(gYdwZI0pIw#o|^ zbq~LhH=kHRMm+r#jd=P8S;osehM`fPd(k7>0f%gBd>Mro*7HLpHWRccGAsd5ic%anRC9x5jmiOLD9K`4{S48k0kWDcag9!^V}kpq#VS?5?E%Z!w9M*h^;6glPOE7l zV zZ2Mm;rSOwvCJA`}!UT-?9%+pqXK5nzXc-%vTKVzCw$F*wqvdK)dgsRz>q;kt4~nb% zyBI&p?WFVpP!Gfhqcm4e(z}=4_B_q?v!PsK{Ai76lxmMs?ZTUssQxl2)%G*{G&z3& z77v7RqjaAy%Hq0%{P$6&`+kO0R3Lb?CS|GzqmqLfl^k3ShEVqYZ&Gr=r?50EXYL^b zT=xtYOlQ=OfX-W$zzC&orLP(BjWg<%Y=tE)NV#t*#>iiiaf%8Z5K+84z}#obKGM%i z9pLx7n9ZH!U(%fhf%@eDG;Wu*xnuiW_7gr=Zxu0>y}%6+)F0SN{$TCnvY2=`JGsTJ zz-$XQvJ(KL0$q_Ra0RPC8zAev0A7Kv(6s=8s;JlF3Uoy_6Kbk~Y$sIIYw;jCQoOM42mO` zDZ55BtHf@(|JWVSrPH4vvkOU#AnaloGC%a z0s!`AQy@rc1=MEzS5}4GNS!r^JVQNfgX`?KHAhk@FjJb8P`&&SB_2 zLUX$<(ur2%=AoKW`RT?zN%447(0Jl}YU<7GfF=fsFL=2C=__R*~t;yAGr5Wo*2w``? z4ChiA)FwF4R_l#Gv-O604{lW2kW6_)y_h8hZB*Kj3mO?cAo&yskbNP!sad=4L>lZzsZj|c z`lVRVUO*71oZ4)tce08}I7LiDx}i7J1lz`Cq#1idy(uJEr6JrlPRbw?m~9v!NMZ%# zCK8jgMsBhGhSJ#IXhSCtHq_fOr@2|pH|o6(F)||qy_Z!zFF8EWN%j%xRq)6;q$|8E zUZHMRz;+WDfc`6VbAq~JEx)N6-2JRZ-FJBcLOk7`APghKYZ$A{0=xGs(hba_&Y6O( zylH@!uUUCtLw8=N1P0*$YgXRZLn}|C?o%E@2rGgazNZM^0X*R*i*QrD&yKL!0c5`^ z>fBUR$Z$7b17zF4?;2l0V~h*QRs{w1z?;&=%zQ&EbBikjLFDqD+9t&T8J#6l-vc}C zWg-ICB%jP;$IDHd;{7*iz0_s%5UJa5${N7H83{~Yqa^)imThy6Qet$#1fTJ>8w z?n7dJt_$jZy8%Q-7sv_2IfE8s&OCnv$nXXeb%Q!gd|&_>-e4Kt7+Qv!+&&p1 z#Ip=hh7AnDurxs2P`c+P-c|6KCpR>5>qMZ$QtozhLy8~Fbb;X%y?f<8^go!of7p*h zn7Xij3JcK9OjD2e_F9q zy2SFMi-0+P!%OTp*uHB51Bl`qb}`>ryVfC2_&kgk5X3icN#^wJW9_?=mh94viu8P``y#n3SqO6) zhCuSNE4!Gx>gRoOK8MNqC&K;DF*zF`NY1?XnX_y^Icx0i@uQlEoZpW*4QGM;j3g{z zA0Xwg6bKSffgy_HAxC(a{(V85Ve&XS;EwLFGrXhk`h?PgJL(mIEVwGt{jSeD5==6B zKpF<9AOZzE!W}uIdIviUn*u@f7D&p+ybbno%#GZU6FAJNj$BXh@gshrU8I%9YPpZX zVft-m$xCT>PaD4F!0216-Yo_^7)#*`u@xd4efi~Ee)$D_NIro9^qj(^r8*x`-Q}$< z`$78qh)TX*58$U_)gV;n^%5g(eb_8x41*)*d%PA~qN87nYKe=dDngc`yX>Su4JI&v z1`EWID$spB(Wv>Ya=;(mxto|(*e6V3|@9~VBa zE~yD^CaLA&PRbb~j%XzUND)fyHT@{uW;T; zkM0hf{_%q^X7enyUq~V#3kiJ*ZD^tYGwJ%QdoSU z)yPBT&1K}FN}2a()kE}9_n+?H(s$A3W+k8Tr?@5t>$qz&5 zMTwr|+$=F*GN(YmZ0@Nai*BslEuZ;puydIJBAWNbU``DX#3^5`(Nk|{ZOM;Qjh(mh zApECePBXS_w&ZzB@Wub#$KNEgmAdPrOO)NvyJ+rc4pNu$L973O6Qo|J-RU|lBL~Om z5vlcH;r+R&9yP;ORQ|y1N@mI9$JywOAbJXoMnBhR)TrqZqEn4?Qa)~-<(4fz_nOc+ z_w|k2-E2ml?hLDOM~-Ro)3x}GW*Jq9`i@!su8&oK#_tBx*mJzZW{k>MN5=wn?Ee7^ C;{+N2 diff --git a/tests/purus/passing/Misc/output/Lib/index.cfn b/tests/purus/passing/Misc/output/Lib/index.cfn deleted file mode 100644 index 0cac4e984..000000000 --- a/tests/purus/passing/Misc/output/Lib/index.cfn +++ /dev/null @@ -1 +0,0 @@ -{"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"}]],"Ord$Dict":["newtype",[["a",null]],[{"dataCtorAnn":[{"end":[250,27],"name":"tests/purus/passing/Misc/Lib.purs","start":[249,1]},[{"BlockComment":" We should probably just remove guarded case branches, see slack msg\nguardedCase :: Int\nguardedCase = case polyInObj of\n {bar: _, baz: x}\n | eq @Int x 4 -> x\n _ -> 0\n"},{"BlockComment":"\nid :: forall a. a -> a\nid a = a\n\n-- Works with signature, throws without\n-- inner :: { getId :: forall a. a -> a}\ninner = {getId: id}\n"}]],"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":["compare",{"annotation":[{"end":[250,27],"name":"tests/purus/passing/Misc/Lib.purs","start":[250,14]},[]],"contents":[{"annotation":[{"end":[250,27],"name":"tests/purus/passing/Misc/Lib.purs","start":[250,14]},[]],"contents":[{"annotation":[{"end":[250,18],"name":"tests/purus/passing/Misc/Lib.purs","start":[250,16]},[]],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[250,15],"name":"tests/purus/passing/Misc/Lib.purs","start":[250,14]},[]],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[{"end":[250,27],"name":"tests/purus/passing/Misc/Lib.purs","start":[250,19]},[]],"contents":[{"annotation":[{"end":[250,27],"name":"tests/purus/passing/Misc/Lib.purs","start":[250,19]},[]],"contents":[{"annotation":[{"end":[250,23],"name":"tests/purus/passing/Misc/Lib.purs","start":[250,21]},[]],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[250,20],"name":"tests/purus/passing/Misc/Lib.purs","start":[250,19]},[]],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[{"end":[250,27],"name":"tests/purus/passing/Misc/Lib.purs","start":[250,24]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":["Eq0",{"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]},[]],"tag":"REmpty"}],"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":[249,11],"name":"tests/purus/passing/Misc/Lib.purs","start":[249,10]},[]],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"tag":"REmpty"}],"tag":"RCons"}],"tag":"RCons"}],"tag":"TypeApp"}]],"dataCtorName":"Ord$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":{"metaType":"IsTypeClassConstructor"},"sourceSpan":{"end":[250,27],"start":[249,1]}},"bindType":"NonRec","expression":{"annotation":{"meta":{"metaType":"IsNewtype"},"sourceSpan":{"end":[250,27],"start":[249,1]}},"argument":"x","body":{"annotation":{"meta":null,"sourceSpan":{"end":[250,27],"start":[249,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":["compare",{"annotation":[{"end":[250,27],"name":"tests/purus/passing/Misc/Lib.purs","start":[250,14]},[]],"contents":[{"annotation":[{"end":[250,27],"name":"tests/purus/passing/Misc/Lib.purs","start":[250,14]},[]],"contents":[{"annotation":[{"end":[250,18],"name":"tests/purus/passing/Misc/Lib.purs","start":[250,16]},[]],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[250,15],"name":"tests/purus/passing/Misc/Lib.purs","start":[250,14]},[]],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[{"end":[250,27],"name":"tests/purus/passing/Misc/Lib.purs","start":[250,19]},[]],"contents":[{"annotation":[{"end":[250,27],"name":"tests/purus/passing/Misc/Lib.purs","start":[250,19]},[]],"contents":[{"annotation":[{"end":[250,23],"name":"tests/purus/passing/Misc/Lib.purs","start":[250,21]},[]],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[250,20],"name":"tests/purus/passing/Misc/Lib.purs","start":[250,19]},[]],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[{"end":[250,27],"name":"tests/purus/passing/Misc/Lib.purs","start":[250,24]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":["Eq0",{"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]},[]],"tag":"REmpty"}],"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":[249,11],"name":"tests/purus/passing/Misc/Lib.purs","start":[249,10]},[]],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"tag":"REmpty"}],"tag":"RCons"}],"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":["compare",{"annotation":[{"end":[250,27],"name":"tests/purus/passing/Misc/Lib.purs","start":[250,14]},[]],"contents":[{"annotation":[{"end":[250,27],"name":"tests/purus/passing/Misc/Lib.purs","start":[250,14]},[]],"contents":[{"annotation":[{"end":[250,18],"name":"tests/purus/passing/Misc/Lib.purs","start":[250,16]},[]],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[250,15],"name":"tests/purus/passing/Misc/Lib.purs","start":[250,14]},[]],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[{"end":[250,27],"name":"tests/purus/passing/Misc/Lib.purs","start":[250,19]},[]],"contents":[{"annotation":[{"end":[250,27],"name":"tests/purus/passing/Misc/Lib.purs","start":[250,19]},[]],"contents":[{"annotation":[{"end":[250,23],"name":"tests/purus/passing/Misc/Lib.purs","start":[250,21]},[]],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[250,20],"name":"tests/purus/passing/Misc/Lib.purs","start":[250,19]},[]],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[{"end":[250,27],"name":"tests/purus/passing/Misc/Lib.purs","start":[250,24]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":["Eq0",{"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]},[]],"tag":"REmpty"}],"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":[249,11],"name":"tests/purus/passing/Misc/Lib.purs","start":[249,10]},[]],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"tag":"REmpty"}],"tag":"RCons"}],"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":["compare",{"annotation":[{"end":[250,27],"name":"tests/purus/passing/Misc/Lib.purs","start":[250,14]},[]],"contents":[{"annotation":[{"end":[250,27],"name":"tests/purus/passing/Misc/Lib.purs","start":[250,14]},[]],"contents":[{"annotation":[{"end":[250,18],"name":"tests/purus/passing/Misc/Lib.purs","start":[250,16]},[]],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[250,15],"name":"tests/purus/passing/Misc/Lib.purs","start":[250,14]},[]],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[{"end":[250,27],"name":"tests/purus/passing/Misc/Lib.purs","start":[250,19]},[]],"contents":[{"annotation":[{"end":[250,27],"name":"tests/purus/passing/Misc/Lib.purs","start":[250,19]},[]],"contents":[{"annotation":[{"end":[250,23],"name":"tests/purus/passing/Misc/Lib.purs","start":[250,21]},[]],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[250,20],"name":"tests/purus/passing/Misc/Lib.purs","start":[250,19]},[]],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[{"end":[250,27],"name":"tests/purus/passing/Misc/Lib.purs","start":[250,24]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":["Eq0",{"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]},[]],"tag":"REmpty"}],"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":[249,11],"name":"tests/purus/passing/Misc/Lib.purs","start":[249,10]},[]],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"tag":"REmpty"}],"tag":"RCons"}],"tag":"RCons"}],"tag":"TypeApp"}],"tag":"TypeApp"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"identifier":"Ord$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":[253,19],"start":[252,1]}},"bindType":"NonRec","expression":{"abstraction":{"annotation":{"meta":{"metaType":"IsNewtype"},"sourceSpan":{"end":[253,19],"start":[252,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":["compare",{"annotation":[{"end":[250,27],"name":"tests/purus/passing/Misc/Lib.purs","start":[250,14]},[]],"contents":[{"annotation":[{"end":[250,27],"name":"tests/purus/passing/Misc/Lib.purs","start":[250,14]},[]],"contents":[{"annotation":[{"end":[250,18],"name":"tests/purus/passing/Misc/Lib.purs","start":[250,16]},[]],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[252,17],"name":"tests/purus/passing/Misc/Lib.purs","start":[252,14]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[{"end":[250,27],"name":"tests/purus/passing/Misc/Lib.purs","start":[250,19]},[]],"contents":[{"annotation":[{"end":[250,27],"name":"tests/purus/passing/Misc/Lib.purs","start":[250,19]},[]],"contents":[{"annotation":[{"end":[250,23],"name":"tests/purus/passing/Misc/Lib.purs","start":[250,21]},[]],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[252,17],"name":"tests/purus/passing/Misc/Lib.purs","start":[252,14]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[{"end":[250,27],"name":"tests/purus/passing/Misc/Lib.purs","start":[250,24]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":["Eq0",{"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":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"tag":"REmpty"},{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"}],"tag":"KindApp"}],"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":[252,17],"name":"tests/purus/passing/Misc/Lib.purs","start":[252,14]},[]],"contents":[["Prim"],"Int"],"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":[250,18],"name":"tests/purus/passing/Misc/Lib.purs","start":[250,16]},[]],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"}],"tag":"KindApp"}],"tag":"RCons"}],"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"],"Ord$Dict"],"tag":"TypeConstructor"},{"annotation":[{"end":[252,17],"name":"tests/purus/passing/Misc/Lib.purs","start":[252,14]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"},"value":{"identifier":"Ord$Dict","moduleName":["Lib"]}},"annotation":{"meta":null,"sourceSpan":{"end":[253,19],"start":[252,1]}},"argument":{"annotation":{"meta":null,"sourceSpan":{"end":[253,19],"start":[252,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":["compare",{"annotation":[{"end":[250,27],"name":"tests/purus/passing/Misc/Lib.purs","start":[250,14]},[]],"contents":[{"annotation":[{"end":[250,27],"name":"tests/purus/passing/Misc/Lib.purs","start":[250,14]},[]],"contents":[{"annotation":[{"end":[250,18],"name":"tests/purus/passing/Misc/Lib.purs","start":[250,16]},[]],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[252,17],"name":"tests/purus/passing/Misc/Lib.purs","start":[252,14]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[{"end":[250,27],"name":"tests/purus/passing/Misc/Lib.purs","start":[250,19]},[]],"contents":[{"annotation":[{"end":[250,27],"name":"tests/purus/passing/Misc/Lib.purs","start":[250,19]},[]],"contents":[{"annotation":[{"end":[250,23],"name":"tests/purus/passing/Misc/Lib.purs","start":[250,21]},[]],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[252,17],"name":"tests/purus/passing/Misc/Lib.purs","start":[252,14]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[{"end":[250,27],"name":"tests/purus/passing/Misc/Lib.purs","start":[250,24]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":["Eq0",{"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":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"tag":"REmpty"},{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"}],"tag":"KindApp"}],"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":[252,17],"name":"tests/purus/passing/Misc/Lib.purs","start":[252,14]},[]],"contents":[["Prim"],"Int"],"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":[250,18],"name":"tests/purus/passing/Misc/Lib.purs","start":[250,16]},[]],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"}],"tag":"KindApp"}],"tag":"RCons"}],"tag":"RCons"}],"tag":"TypeApp"},"value":{"literalType":"ObjectLiteral","value":[["Eq0",{"annotation":{"meta":null,"sourceSpan":{"end":[253,19],"start":[252,1]}},"argument":"$__unused","body":{"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":[252,17],"name":"tests/purus/passing/Misc/Lib.purs","start":[252,14]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}],"tag":"TypeApp"},"value":{"identifier":"eqInt","moduleName":["Lib"]}},"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":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Record"],"tag":"TypeConstructor"},{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"tag":"REmpty"},{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"}],"tag":"KindApp"}],"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":[252,17],"name":"tests/purus/passing/Misc/Lib.purs","start":[252,14]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"}}],["compare",{"annotation":{"meta":null,"sourceSpan":{"end":[253,19],"start":[253,3]}},"argument":"v","body":{"annotation":{"meta":null,"sourceSpan":{"end":[253,19],"start":[253,3]}},"argument":"v1","body":{"annotation":{"meta":null,"sourceSpan":{"end":[253,19],"start":[253,17]}},"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":[252,17],"name":"tests/purus/passing/Misc/Lib.purs","start":[252,14]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[{"end":[250,27],"name":"tests/purus/passing/Misc/Lib.purs","start":[250,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":[252,17],"name":"tests/purus/passing/Misc/Lib.purs","start":[252,14]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[{"end":[250,27],"name":"tests/purus/passing/Misc/Lib.purs","start":[250,19]},[]],"contents":[{"annotation":[{"end":[250,27],"name":"tests/purus/passing/Misc/Lib.purs","start":[250,19]},[]],"contents":[{"annotation":[{"end":[250,23],"name":"tests/purus/passing/Misc/Lib.purs","start":[250,21]},[]],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[252,17],"name":"tests/purus/passing/Misc/Lib.purs","start":[252,14]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[{"end":[250,27],"name":"tests/purus/passing/Misc/Lib.purs","start":[250,24]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"}}]]}},"kind":"App"},"identifier":"ordInt"},{"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":10,"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":8,"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":7,"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":11,"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":15,"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":13,"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":15,"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":13,"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":13,"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":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":[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":18,"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":[223,23],"start":[223,1]}},"bindType":"NonRec","expression":{"annotation":{"meta":null,"sourceSpan":{"end":[224,9],"start":[224,1]}},"argument":"x","body":{"annotation":{"meta":null,"sourceSpan":{"end":[224,9],"start":[224,8]}},"kind":"Var","type":{"annotation":[{"end":[223,18],"name":"tests/purus/passing/Misc/Lib.purs","start":[223,17]},[]],"contents":"t","tag":"TypeVar"},"value":{"identifier":"x","sourcePos":[224,1]}},"kind":"Abs","type":{"annotation":[{"end":[223,23],"name":"tests/purus/passing/Misc/Lib.purs","start":[223,7]},[]],"contents":{"identifier":"t","kind":{"annotation":[{"end":[223,21],"name":"tests/purus/passing/Misc/Lib.purs","start":[223,19]},[]],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"},"skolem":19,"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":[223,18],"name":"tests/purus/passing/Misc/Lib.purs","start":[223,17]},[]],"contents":"t","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[{"end":[223,23],"name":"tests/purus/passing/Misc/Lib.purs","start":[223,22]},[]],"contents":"t","tag":"TypeVar"}],"tag":"TypeApp"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"identifier":"id"},{"annotation":{"meta":null,"sourceSpan":{"end":[226,62],"start":[226,1]}},"bindType":"NonRec","expression":{"annotation":{"meta":null,"sourceSpan":{"end":[227,37],"start":[227,13]}},"kind":"Literal","type":{"annotation":[{"end":[226,62],"name":"tests/purus/passing/Misc/Lib.purs","start":[226,14]},[]],"contents":{"identifier":"a","kind":{"annotation":[{"end":[226,41],"name":"tests/purus/passing/Misc/Lib.purs","start":[226,39]},[]],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"},"skolem":22,"type":{"annotation":[{"end":[226,62],"name":"tests/purus/passing/Misc/Lib.purs","start":[226,23]},[]],"contents":{"identifier":"b","kind":{"annotation":[{"end":[226,59],"name":"tests/purus/passing/Misc/Lib.purs","start":[226,57]},[]],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"},"skolem":21,"type":{"annotation":[{"end":[226,62],"name":"tests/purus/passing/Misc/Lib.purs","start":[226,26]},[]],"contents":[{"annotation":[{"end":[226,27],"name":"tests/purus/passing/Misc/Lib.purs","start":[226,26]},[]],"contents":[["Prim"],"Record"],"tag":"TypeConstructor"},{"annotation":[{"end":[226,43],"name":"tests/purus/passing/Misc/Lib.purs","start":[226,27]},[]],"contents":["getIdA",{"annotation":[{"end":[226,43],"name":"tests/purus/passing/Misc/Lib.purs","start":[226,37]},[]],"contents":[{"annotation":[{"end":[226,43],"name":"tests/purus/passing/Misc/Lib.purs","start":[226,37]},[]],"contents":[{"annotation":[{"end":[226,41],"name":"tests/purus/passing/Misc/Lib.purs","start":[226,39]},[]],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[226,38],"name":"tests/purus/passing/Misc/Lib.purs","start":[226,37]},[]],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[{"end":[226,43],"name":"tests/purus/passing/Misc/Lib.purs","start":[226,42]},[]],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[{"end":[226,61],"name":"tests/purus/passing/Misc/Lib.purs","start":[226,45]},[]],"contents":["getIdB",{"annotation":[{"end":[226,61],"name":"tests/purus/passing/Misc/Lib.purs","start":[226,55]},[]],"contents":[{"annotation":[{"end":[226,61],"name":"tests/purus/passing/Misc/Lib.purs","start":[226,55]},[]],"contents":[{"annotation":[{"end":[226,59],"name":"tests/purus/passing/Misc/Lib.purs","start":[226,57]},[]],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[226,56],"name":"tests/purus/passing/Misc/Lib.purs","start":[226,55]},[]],"contents":"b","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[{"end":[226,61],"name":"tests/purus/passing/Misc/Lib.purs","start":[226,60]},[]],"contents":"b","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[{"end":[226,62],"name":"tests/purus/passing/Misc/Lib.purs","start":[226,61]},[]],"contents":[{"annotation":[{"end":[226,62],"name":"tests/purus/passing/Misc/Lib.purs","start":[226,61]},[]],"tag":"REmpty"},{"annotation":[{"end":[226,41],"name":"tests/purus/passing/Misc/Lib.purs","start":[226,39]},[]],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"}],"tag":"KindApp"}],"tag":"RCons"}],"tag":"RCons"}],"tag":"TypeApp"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"value":{"literalType":"ObjectLiteral","value":[["getIdB",{"annotation":{"meta":null,"sourceSpan":{"end":[227,36],"start":[227,34]}},"kind":"Var","type":{"annotation":[{"end":[223,23],"name":"tests/purus/passing/Misc/Lib.purs","start":[223,7]},[]],"contents":{"identifier":"t","kind":{"annotation":[{"end":[223,21],"name":"tests/purus/passing/Misc/Lib.purs","start":[223,19]},[]],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"},"skolem":19,"type":{"annotation":[{"end":[223,23],"name":"tests/purus/passing/Misc/Lib.purs","start":[223,17]},[]],"contents":[{"annotation":[{"end":[223,23],"name":"tests/purus/passing/Misc/Lib.purs","start":[223,17]},[]],"contents":[{"annotation":[{"end":[223,21],"name":"tests/purus/passing/Misc/Lib.purs","start":[223,19]},[]],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[223,18],"name":"tests/purus/passing/Misc/Lib.purs","start":[223,17]},[]],"contents":"t","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[{"end":[223,23],"name":"tests/purus/passing/Misc/Lib.purs","start":[223,22]},[]],"contents":"t","tag":"TypeVar"}],"tag":"TypeApp"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"value":{"identifier":"id","moduleName":["Lib"]}}],["getIdA",{"annotation":{"meta":null,"sourceSpan":{"end":[227,24],"start":[227,22]}},"kind":"Var","type":{"annotation":[{"end":[223,23],"name":"tests/purus/passing/Misc/Lib.purs","start":[223,7]},[]],"contents":{"identifier":"t","kind":{"annotation":[{"end":[223,21],"name":"tests/purus/passing/Misc/Lib.purs","start":[223,19]},[]],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"},"skolem":19,"type":{"annotation":[{"end":[223,23],"name":"tests/purus/passing/Misc/Lib.purs","start":[223,17]},[]],"contents":[{"annotation":[{"end":[223,23],"name":"tests/purus/passing/Misc/Lib.purs","start":[223,17]},[]],"contents":[{"annotation":[{"end":[223,21],"name":"tests/purus/passing/Misc/Lib.purs","start":[223,19]},[]],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[223,18],"name":"tests/purus/passing/Misc/Lib.purs","start":[223,17]},[]],"contents":"t","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[{"end":[223,23],"name":"tests/purus/passing/Misc/Lib.purs","start":[223,22]},[]],"contents":"t","tag":"TypeVar"}],"tag":"TypeApp"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"value":{"identifier":"id","moduleName":["Lib"]}}]]}},"identifier":"objForall"},{"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":26,"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":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":[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":26,"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":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":[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":27,"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":27,"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":[255,53],"start":[255,1]}},"bindType":"NonRec","expression":{"annotation":{"meta":null,"sourceSpan":{"end":[0,0],"start":[0,0]}},"argument":"dictOrd","body":{"annotation":{"meta":null,"sourceSpan":{"end":[256,26],"start":[256,1]}},"argument":"a","body":{"annotation":{"meta":null,"sourceSpan":{"end":[256,26],"start":[256,1]}},"argument":"b","body":{"abstraction":{"abstraction":{"abstraction":{"annotation":{"meta":null,"sourceSpan":{"end":[256,22],"start":[256,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":27,"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":[256,24],"start":[256,20]}},"argument":{"abstraction":{"annotation":{"meta":null,"sourceSpan":{"end":[256,24],"start":[256,20]}},"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":[["Lib"],"Ord$Dict"],"tag":"TypeConstructor"},{"annotation":[{"end":[255,32],"name":"tests/purus/passing/Misc/Lib.purs","start":[255,31]},[]],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},"value":{"identifier":"dictOrd","sourcePos":[0,0]}},"fieldName":"Eq0","kind":"Accessor","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":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"tag":"REmpty"},{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"}],"tag":"KindApp"}],"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":[249,11],"name":"tests/purus/passing/Misc/Lib.purs","start":[249,10]},[]],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"annotation":{"meta":null,"sourceSpan":{"end":[256,24],"start":[256,20]}},"argument":{"annotation":{"meta":null,"sourceSpan":{"end":[256,24],"start":[256,20]}},"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]},[]],"tag":"REmpty"}],"tag":"TypeApp"},"value":{"literalType":"ObjectLiteral","value":[]}},"kind":"App"},"kind":"App"},"annotation":{"meta":null,"sourceSpan":{"end":[256,24],"start":[256,20]}},"argument":{"annotation":{"meta":null,"sourceSpan":{"end":[256,24],"start":[256,23]}},"kind":"Var","type":{"annotation":[{"end":[255,37],"name":"tests/purus/passing/Misc/Lib.purs","start":[255,36]},[]],"contents":"a","tag":"TypeVar"},"value":{"identifier":"a","sourcePos":[256,1]}},"kind":"App"},"annotation":{"meta":null,"sourceSpan":{"end":[256,26],"start":[256,20]}},"argument":{"annotation":{"meta":null,"sourceSpan":{"end":[256,26],"start":[256,25]}},"kind":"Var","type":{"annotation":[{"end":[255,42],"name":"tests/purus/passing/Misc/Lib.purs","start":[255,41]},[]],"contents":"a","tag":"TypeVar"},"value":{"identifier":"b","sourcePos":[256,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":[255,42],"name":"tests/purus/passing/Misc/Lib.purs","start":[255,41]},[]],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[{"end":[255,53],"name":"tests/purus/passing/Misc/Lib.purs","start":[255,46]},[]],"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":[255,37],"name":"tests/purus/passing/Misc/Lib.purs","start":[255,36]},[]],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[{"end":[255,53],"name":"tests/purus/passing/Misc/Lib.purs","start":[255,41]},[]],"contents":[{"annotation":[{"end":[255,53],"name":"tests/purus/passing/Misc/Lib.purs","start":[255,41]},[]],"contents":[{"annotation":[{"end":[255,45],"name":"tests/purus/passing/Misc/Lib.purs","start":[255,43]},[]],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[255,42],"name":"tests/purus/passing/Misc/Lib.purs","start":[255,41]},[]],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[{"end":[255,53],"name":"tests/purus/passing/Misc/Lib.purs","start":[255,46]},[]],"contents":[["Prim"],"Boolean"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"kind":"Abs","type":{"annotation":[{"end":[255,53],"name":"tests/purus/passing/Misc/Lib.purs","start":[255,17]},[]],"contents":{"identifier":"a","kind":{"annotation":[{"end":[255,32],"name":"tests/purus/passing/Misc/Lib.purs","start":[255,27]},[]],"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":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Lib"],"Ord$Dict"],"tag":"TypeConstructor"},{"annotation":[{"end":[255,32],"name":"tests/purus/passing/Misc/Lib.purs","start":[255,31]},[]],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[{"end":[255,53],"name":"tests/purus/passing/Misc/Lib.purs","start":[255,36]},[]],"contents":[{"annotation":[{"end":[255,53],"name":"tests/purus/passing/Misc/Lib.purs","start":[255,36]},[]],"contents":[{"annotation":[{"end":[255,40],"name":"tests/purus/passing/Misc/Lib.purs","start":[255,38]},[]],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[255,37],"name":"tests/purus/passing/Misc/Lib.purs","start":[255,36]},[]],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[{"end":[255,53],"name":"tests/purus/passing/Misc/Lib.purs","start":[255,41]},[]],"contents":[{"annotation":[{"end":[255,53],"name":"tests/purus/passing/Misc/Lib.purs","start":[255,41]},[]],"contents":[{"annotation":[{"end":[255,45],"name":"tests/purus/passing/Misc/Lib.purs","start":[255,43]},[]],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[255,42],"name":"tests/purus/passing/Misc/Lib.purs","start":[255,41]},[]],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[{"end":[255,53],"name":"tests/purus/passing/Misc/Lib.purs","start":[255,46]},[]],"contents":[["Prim"],"Boolean"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"identifier":"testEqViaOrd"},{"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":27,"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":"t120","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":"t120","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":30,"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":30,"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":"t120","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":"t120","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":30,"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":"t120","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":"t120","tag":"TypeVar"}],"tag":"TypeApp"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"value":{"identifier":"emptyList","moduleName":["Lib"]}},"kind":"App"},"identifier":"consEmptyList2"},{"annotation":{"meta":null,"sourceSpan":{"end":[250,27],"start":[250,3]}},"bindType":"NonRec","expression":{"annotation":{"meta":null,"sourceSpan":{"end":[250,27],"start":[250,3]}},"argument":"dict","body":{"annotation":{"meta":null,"sourceSpan":{"end":[250,27],"start":[250,3]}},"caseAlternatives":[{"binders":[{"annotation":{"meta":{"metaType":"IsNewtype"},"sourceSpan":{"end":[250,27],"start":[250,3]}},"binderType":"ConstructorBinder","binders":[{"annotation":{"meta":null,"sourceSpan":{"end":[250,27],"start":[250,3]}},"binderType":"VarBinder","identifier":"v"}],"constructorName":{"identifier":"Ord$Dict","moduleName":["Lib"]},"typeName":{"identifier":"Ord$Dict","moduleName":["Lib"]}}],"expression":{"annotation":{"meta":null,"sourceSpan":{"end":[250,27],"start":[250,3]}},"expression":{"annotation":{"meta":null,"sourceSpan":{"end":[250,27],"start":[250,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":["compare",{"annotation":[{"end":[250,27],"name":"tests/purus/passing/Misc/Lib.purs","start":[250,14]},[]],"contents":[{"annotation":[{"end":[250,27],"name":"tests/purus/passing/Misc/Lib.purs","start":[250,14]},[]],"contents":[{"annotation":[{"end":[250,18],"name":"tests/purus/passing/Misc/Lib.purs","start":[250,16]},[]],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[{"end":[250,27],"name":"tests/purus/passing/Misc/Lib.purs","start":[250,19]},[]],"contents":[{"annotation":[{"end":[250,27],"name":"tests/purus/passing/Misc/Lib.purs","start":[250,19]},[]],"contents":[{"annotation":[{"end":[250,23],"name":"tests/purus/passing/Misc/Lib.purs","start":[250,21]},[]],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[{"end":[250,27],"name":"tests/purus/passing/Misc/Lib.purs","start":[250,24]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":["Eq0",{"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":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"tag":"REmpty"},{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"}],"tag":"KindApp"}],"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":[0,0],"name":"","start":[0,0]},[]],"contents":"a","tag":"TypeVar"}],"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":[250,18],"name":"tests/purus/passing/Misc/Lib.purs","start":[250,16]},[]],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"}],"tag":"KindApp"}],"tag":"RCons"}],"tag":"RCons"}],"tag":"TypeApp"},"value":{"identifier":"v","sourcePos":[250,3]}},"fieldName":"compare","kind":"Accessor","type":{"annotation":[{"end":[250,27],"name":"tests/purus/passing/Misc/Lib.purs","start":[250,14]},[]],"contents":[{"annotation":[{"end":[250,27],"name":"tests/purus/passing/Misc/Lib.purs","start":[250,14]},[]],"contents":[{"annotation":[{"end":[250,18],"name":"tests/purus/passing/Misc/Lib.purs","start":[250,16]},[]],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[250,15],"name":"tests/purus/passing/Misc/Lib.purs","start":[250,14]},[]],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[{"end":[250,27],"name":"tests/purus/passing/Misc/Lib.purs","start":[250,19]},[]],"contents":[{"annotation":[{"end":[250,27],"name":"tests/purus/passing/Misc/Lib.purs","start":[250,19]},[]],"contents":[{"annotation":[{"end":[250,23],"name":"tests/purus/passing/Misc/Lib.purs","start":[250,21]},[]],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[250,20],"name":"tests/purus/passing/Misc/Lib.purs","start":[250,19]},[]],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[{"end":[250,27],"name":"tests/purus/passing/Misc/Lib.purs","start":[250,24]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"isGuarded":false}],"caseExpressions":[{"annotation":{"meta":null,"sourceSpan":{"end":[250,27],"start":[250,3]}},"kind":"Var","type":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Lib"],"Ord$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":[250,27],"name":"tests/purus/passing/Misc/Lib.purs","start":[250,14]},[]],"contents":[{"annotation":[{"end":[250,27],"name":"tests/purus/passing/Misc/Lib.purs","start":[250,14]},[]],"contents":[{"annotation":[{"end":[250,18],"name":"tests/purus/passing/Misc/Lib.purs","start":[250,16]},[]],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[250,15],"name":"tests/purus/passing/Misc/Lib.purs","start":[250,14]},[]],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[{"end":[250,27],"name":"tests/purus/passing/Misc/Lib.purs","start":[250,19]},[]],"contents":[{"annotation":[{"end":[250,27],"name":"tests/purus/passing/Misc/Lib.purs","start":[250,19]},[]],"contents":[{"annotation":[{"end":[250,23],"name":"tests/purus/passing/Misc/Lib.purs","start":[250,21]},[]],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[250,20],"name":"tests/purus/passing/Misc/Lib.purs","start":[250,19]},[]],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[{"end":[250,27],"name":"tests/purus/passing/Misc/Lib.purs","start":[250,24]},[]],"contents":[["Prim"],"Int"],"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":34,"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"],"Ord$Dict"],"tag":"TypeConstructor"},{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[{"end":[250,27],"name":"tests/purus/passing/Misc/Lib.purs","start":[250,14]},[]],"contents":[{"annotation":[{"end":[250,27],"name":"tests/purus/passing/Misc/Lib.purs","start":[250,14]},[]],"contents":[{"annotation":[{"end":[250,18],"name":"tests/purus/passing/Misc/Lib.purs","start":[250,16]},[]],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[250,15],"name":"tests/purus/passing/Misc/Lib.purs","start":[250,14]},[]],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[{"end":[250,27],"name":"tests/purus/passing/Misc/Lib.purs","start":[250,19]},[]],"contents":[{"annotation":[{"end":[250,27],"name":"tests/purus/passing/Misc/Lib.purs","start":[250,19]},[]],"contents":[{"annotation":[{"end":[250,23],"name":"tests/purus/passing/Misc/Lib.purs","start":[250,21]},[]],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[250,20],"name":"tests/purus/passing/Misc/Lib.purs","start":[250,19]},[]],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[{"end":[250,27],"name":"tests/purus/passing/Misc/Lib.purs","start":[250,24]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"},"visibility":"TypeVarVisible"},"tag":"ForAll"}},"identifier":"compare"},{"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":27,"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":[229,38],"start":[229,1]}},"bindType":"NonRec","expression":{"annotation":{"meta":null,"sourceSpan":{"end":[230,17],"start":[230,13]}},"kind":"Literal","type":{"annotation":[{"end":[229,38],"name":"tests/purus/passing/Misc/Lib.purs","start":[229,14]},[]],"contents":{"identifier":"a","kind":{"annotation":[{"end":[229,35],"name":"tests/purus/passing/Misc/Lib.purs","start":[229,33]},[]],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"},"skolem":35,"type":{"annotation":[{"end":[229,38],"name":"tests/purus/passing/Misc/Lib.purs","start":[229,24]},[]],"contents":[{"annotation":[{"end":[229,29],"name":"tests/purus/passing/Misc/Lib.purs","start":[229,24]},[]],"contents":[["Prim"],"Array"],"tag":"TypeConstructor"},{"annotation":[{"end":[229,37],"name":"tests/purus/passing/Misc/Lib.purs","start":[229,31]},[]],"contents":[{"annotation":[{"end":[229,37],"name":"tests/purus/passing/Misc/Lib.purs","start":[229,31]},[]],"contents":[{"annotation":[{"end":[229,35],"name":"tests/purus/passing/Misc/Lib.purs","start":[229,33]},[]],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[229,32],"name":"tests/purus/passing/Misc/Lib.purs","start":[229,31]},[]],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[{"end":[229,37],"name":"tests/purus/passing/Misc/Lib.purs","start":[229,36]},[]],"contents":"a","tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"value":{"literalType":"ArrayLiteral","value":[{"annotation":{"meta":null,"sourceSpan":{"end":[230,16],"start":[230,14]}},"kind":"Var","type":{"annotation":[{"end":[223,23],"name":"tests/purus/passing/Misc/Lib.purs","start":[223,7]},[]],"contents":{"identifier":"t","kind":{"annotation":[{"end":[223,21],"name":"tests/purus/passing/Misc/Lib.purs","start":[223,19]},[]],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"},"skolem":19,"type":{"annotation":[{"end":[223,23],"name":"tests/purus/passing/Misc/Lib.purs","start":[223,17]},[]],"contents":[{"annotation":[{"end":[223,23],"name":"tests/purus/passing/Misc/Lib.purs","start":[223,17]},[]],"contents":[{"annotation":[{"end":[223,21],"name":"tests/purus/passing/Misc/Lib.purs","start":[223,19]},[]],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[223,18],"name":"tests/purus/passing/Misc/Lib.purs","start":[223,17]},[]],"contents":"t","tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[{"end":[223,23],"name":"tests/purus/passing/Misc/Lib.purs","start":[223,22]},[]],"contents":"t","tag":"TypeVar"}],"tag":"TypeApp"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"value":{"identifier":"id","moduleName":["Lib"]}}]}},"identifier":"arrForall"},{"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":"$23","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":"$23","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":27,"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":27,"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":27,"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":"$23","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":"$23","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":"$23","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":"$23","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":"$23","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":"$23","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":"$23","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":"$23","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":37,"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":37,"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":[166,39],"start":[166,1]}},"bindType":"NonRec","expression":{"abstraction":{"annotation":{"meta":null,"sourceSpan":{"end":[166,18],"start":[166,8]}},"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":37,"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":[166,39],"start":[166,8]}},"argument":{"annotation":{"meta":null,"sourceSpan":{"end":[166,39],"start":[166,19]}},"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":["b",{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"String"],"tag":"TypeConstructor"},{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"tag":"REmpty"},{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"}],"tag":"KindApp"}],"tag":"RCons"}],"tag":"RCons"}],"tag":"TypeApp"},"value":{"literalType":"ObjectLiteral","value":[["b",{"annotation":{"meta":null,"sourceSpan":{"end":[166,38],"start":[166,31]}},"kind":"Literal","type":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"String"],"tag":"TypeConstructor"},"value":{"literalType":"StringLiteral","value":"hello"}}],["a",{"annotation":{"meta":null,"sourceSpan":{"end":[166,26],"start":[166,23]}},"kind":"Literal","type":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"},"value":{"literalType":"IntLiteral","value":101}}]]}},"kind":"App"},"identifier":"main"},{"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":27,"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":39,"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":39,"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":40,"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":39,"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":43,"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":40,"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":39,"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":154,"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":43,"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":["compare","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","main","plus","guardedCase","nestedApplications","anObj","objUpdate","polyInObj","polyInObjMatch","aPred","cons","emptyList","consEmptyList1","consEmptyList2","id","objForall","arrForall","testEqViaOrd","eqInt","eq2IntBoolean","ordInt"],"foreign":[],"imports":[{"annotation":{"meta":null,"sourceSpan":{"end":[256,26],"start":[1,1]}},"moduleName":["Builtin"]},{"annotation":{"meta":null,"sourceSpan":{"end":[256,26],"start":[1,1]}},"moduleName":["Lib"]},{"annotation":{"meta":null,"sourceSpan":{"end":[256,26],"start":[1,1]}},"moduleName":["Prim"]}],"moduleName":["Lib"],"modulePath":"tests/purus/passing/Misc/Lib.purs","reExports":{},"sourceSpan":{"end":[256,26],"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 deleted file mode 100644 index 8da97d554..000000000 --- a/tests/purus/passing/Misc/output/Lib/index.cfn.pretty +++ /dev/null @@ -1,486 +0,0 @@ -Lib (tests/purus/passing/Misc/Lib.purs) -Imported Modules: - Builtin, - Lib, - Prim -Exports: - compare, - 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, - main, - plus, - guardedCase, - nestedApplications, - anObj, - objUpdate, - polyInObj, - polyInObjMatch, - aPred, - cons, - emptyList, - consEmptyList1, - consEmptyList2, - id, - objForall, - arrForall, - testEqViaOrd, - eqInt, - eq2IntBoolean, - ordInt -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 }) - -Ord$Dict :: forall a. { compare :: a -> a -> Int, Eq0 :: Record {} -> Eq$Dict a } -> { compare :: a -> a -> Int, Eq0 :: Record {} -> Eq$Dict a } -Ord$Dict = - \(x: { compare :: a -> a -> Int, Eq0 :: Record {} -> Eq$Dict a }) -> - (x: { compare :: a -> a -> Int, Eq0 :: Record {} -> Eq$Dict a }) - -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 - }) - -ordInt :: Ord$Dict Int -ordInt = - (Ord$Dict: { - compare :: Int -> Int -> Int, - Eq0 :: Record {}@Type -> Eq$Dict Int - } -> - Ord$Dict Int) - ({ - Eq0: \($__unused: Record {}@Type) -> - (eqInt: Eq$Dict Int), - compare: \(v: Int) -> - \(v1: Int) -> - (42: Int) - }: { compare :: Int -> Int -> Int, Eq0 :: Record {}@Type -> Eq$Dict Int }) - -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) - -id :: forall (t :: Type). t -> t -id = \(x: t) -> (x: t) - -objForall :: forall (a :: Type) (b :: Type). { getIdA :: a -> a, getIdB :: b -> b } -objForall = - ({ - getIdB: (id: forall (t :: Type). t -> t), - getIdA: (id: forall (t :: Type). t -> t) - }: forall (a :: Type) (b :: Type). { getIdA :: a -> a, getIdB :: b -> b }) - -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) - -testEqViaOrd :: forall (a :: Type). Ord$Dict a -> a -> a -> Boolean -testEqViaOrd = - \(dictOrd: Ord$Dict a) -> - \(a: a) -> - \(b: a) -> - (eq: forall (@a :: Type). Eq$Dict a -> a -> a -> Boolean) - (((dictOrd: Ord$Dict a).Eq0) ({ }: Record {})) - (a: a) - (b: a) - -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 (t120 :: Type). Array (t120) -emptyList = ([]: forall (t120 :: Type). Array (t120)) - -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 (t120 :: Type). Array (t120)) - -consEmptyList2 :: Array (String) -consEmptyList2 = - (cons: forall (a :: Type). a -> Array (a) -> Array (a)) - ("hello": String) - (emptyList: forall (t120 :: Type). Array (t120)) - -compare :: forall (@a :: Type). Ord$Dict a -> a -> a -> Int -compare = - \(dict: Ord$Dict a) -> - case (dict: Ord$Dict a) of - Ord$Dict v -> - (v: { compare :: a -> a -> Int, Eq0 :: Record {}@Type -> Eq$Dict a }) - .compare - -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)) - -arrForall :: forall (a :: Type). Array (a -> a) -arrForall = - ([(id: forall (t :: Type). t -> t)]: forall (a :: Type). Array (a -> a)) - -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 $23. $23 -> Int - v = \(v1: $23) -> (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 $23. $23 -> Int) - (true: Boolean) - _ -> - (v: forall $23. $23 -> Int) - (true: Boolean) - _ -> (v: forall $23. $23 -> Int) (true: Boolean) - _ -> (v: forall $23. $23 -> 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 }) - -main :: Int -main = - (aFunction4: forall (r :: Row Type). { a :: Int | r } -> Int) - ({ b: ("hello": String), a: (101: Int) }: { a :: Int, b :: String }) - -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 (t154)) - (go: forall (z :: Type). z -> Int) - -aBool :: Boolean -aBool = (true: Boolean) \ No newline at end of file diff --git a/tests/purus/passing/ModuleDeps/output/M1/index.cfn.pretty b/tests/purus/passing/ModuleDeps/output/M1/index.cfn.pretty index fba52bf8c..a342eb57a 100644 --- a/tests/purus/passing/ModuleDeps/output/M1/index.cfn.pretty +++ b/tests/purus/passing/ModuleDeps/output/M1/index.cfn.pretty @@ -10,5 +10,5 @@ Re-Exports: Foreign: Declarations: -foo :: Int -foo = (bar: Int) \ No newline at end of file +foo :: Prim.Int +foo = (bar: Prim.Int) \ No newline at end of file diff --git a/tests/purus/passing/ModuleDeps/output/M2/index.cfn.pretty b/tests/purus/passing/ModuleDeps/output/M2/index.cfn.pretty index 682e4e44e..486bce8fa 100644 --- a/tests/purus/passing/ModuleDeps/output/M2/index.cfn.pretty +++ b/tests/purus/passing/ModuleDeps/output/M2/index.cfn.pretty @@ -10,5 +10,5 @@ Re-Exports: Foreign: Declarations: -bar :: Int -bar = (baz: Int) \ No newline at end of file +bar :: Prim.Int +bar = (baz: Prim.Int) \ No newline at end of file diff --git a/tests/purus/passing/ModuleDeps/output/M3/index.cfn.pretty b/tests/purus/passing/ModuleDeps/output/M3/index.cfn.pretty index 119b4b637..7cbf51969 100644 --- a/tests/purus/passing/ModuleDeps/output/M3/index.cfn.pretty +++ b/tests/purus/passing/ModuleDeps/output/M3/index.cfn.pretty @@ -9,5 +9,5 @@ Re-Exports: Foreign: Declarations: -baz :: Int -baz = (1: Int) \ No newline at end of file +baz :: Prim.Int +baz = (1: Prim.Int) \ No newline at end of file diff --git a/tests/purus/passing/NonOrphanInstanceFunDepExtra/output/Lib/externs.cbor b/tests/purus/passing/NonOrphanInstanceFunDepExtra/output/Lib/externs.cbor deleted file mode 100644 index f8b25d82b774d4b336d8833729db03382c81ba33..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3805 zcmeHK%}(1u5FQ&UT8VpKfOFEs>VYevNJtS>RUe>>;{=zmiEKxL+x}RfKE*yI=k0hA z25%Cu$`m0%qQstw=bOpyxAXG{CSN+eubo~L57QH)p@fUwBFT%qJ6~iA{APKc@=5n- z#*ef4DdUGcFBp%Lg9YDD=HD)gjCIkpgOBGLf}}A1n52i{lBwK z5$Ky+y4y_jzI5$7fV!eQk~dwI#f({k42))DNmhPb|7xplYpDy&`0puSzv^}L!+$&U?)IkSvU%b;a^T0VIM^2GIo zsH;tD3kn8$&YlpPT=%H&i7WnTHP_S}cX{T18o;)9Nz-4_M4pC?eZ|yQWSHFWWpJPv zVH0StH>+91C}P?w;zXy2(_A%%X)u8`p|v+|ARDgOqKC5=mIM$2JLqTC+}knqFH=0} A>;M1& diff --git a/tests/purus/passing/NonOrphanInstanceFunDepExtra/output/Lib/index.cfn b/tests/purus/passing/NonOrphanInstanceFunDepExtra/output/Lib/index.cfn deleted file mode 100644 index 33d0c9f8f..000000000 --- a/tests/purus/passing/NonOrphanInstanceFunDepExtra/output/Lib/index.cfn +++ /dev/null @@ -1 +0,0 @@ -{"builtWith":"0.0.1","comments":[],"dataTypes":{"C$Dict":["newtype",[["f",null],["l",null],["r",null]],[{"dataCtorAnn":[{"end":[3,23],"name":"tests/purus/passing/NonOrphanInstanceFunDepExtra/Lib.purs","start":[3,1]},[{"LineComment":" covering sets: {{f, l}}"}]],"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]},[]],"tag":"REmpty"}],"tag":"TypeApp"}]],"dataCtorName":"C$Dict"}]],"L":["data",[],[]]},"decls":[{"annotation":{"meta":{"metaType":"IsTypeClassConstructor"},"sourceSpan":{"end":[3,23],"start":[3,1]}},"bindType":"NonRec","expression":{"annotation":{"meta":{"metaType":"IsNewtype"},"sourceSpan":{"end":[3,23],"start":[3,1]}},"argument":"x","body":{"annotation":{"meta":null,"sourceSpan":{"end":[3,23],"start":[3,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]},[]],"tag":"REmpty"}],"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":[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]},[]],"tag":"REmpty"}],"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]},[]],"tag":"REmpty"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"identifier":"C$Dict"}],"exports":[],"foreign":[],"imports":[{"annotation":{"meta":null,"sourceSpan":{"end":[4,7],"start":[1,1]}},"moduleName":["Builtin"]},{"annotation":{"meta":null,"sourceSpan":{"end":[4,7],"start":[1,1]}},"moduleName":["Prim"]}],"moduleName":["Lib"],"modulePath":"tests/purus/passing/NonOrphanInstanceFunDepExtra/Lib.purs","reExports":{},"sourceSpan":{"end":[4,7],"start":[1,1]}} \ No newline at end of file diff --git a/tests/purus/passing/NonOrphanInstanceFunDepExtra/output/Lib/index.cfn.pretty b/tests/purus/passing/NonOrphanInstanceFunDepExtra/output/Lib/index.cfn.pretty deleted file mode 100644 index 0322641b8..000000000 --- a/tests/purus/passing/NonOrphanInstanceFunDepExtra/output/Lib/index.cfn.pretty +++ /dev/null @@ -1,13 +0,0 @@ -Lib (tests/purus/passing/NonOrphanInstanceFunDepExtra/Lib.purs) -Imported Modules: - Builtin, - Prim -Exports: - -Re-Exports: - -Foreign: - -Declarations: -C$Dict :: Record {} -> Record {} -C$Dict = \(x: Record {}) -> (x: Record {}) \ No newline at end of file