diff --git a/src/Language/PureScript/CST/Convert.hs b/src/Language/PureScript/CST/Convert.hs index 8d180fdd..3b8c6eaa 100644 --- a/src/Language/PureScript/CST/Convert.hs +++ b/src/Language/PureScript/CST/Convert.hs @@ -61,8 +61,10 @@ tvKind srcTok nm = do $ "Error: Missing kind annotation for TyVar " <> Text.unpack nm <> "\n at (or near): " <> prettyRange (srcTokenRange srcTok) Just t -> pure t + +prettyRange :: SourceRange -> String +prettyRange (SourceRange start end) = goPos start <> "-" <> goPos end where - prettyRange (SourceRange start end) = goPos start <> "-" <> goPos end goPos (SourcePos line col) = show line <> ":" <> show col bindTv :: Text -> T.SourceType -> ConvertM () @@ -653,7 +655,19 @@ convertDeclaration fileName decl = case decl of DeclInstanceChain _ insts -> do let chainId = mkChainId fileName $ startSourcePos $ instKeyword $ instHead $ sepHead insts + bindTypeVariables Nothing = pure () + bindTypeVariables (Just (stok, bindings)) = traverse_ (goTvBind stok) (NE.toList bindings) + goTvBind stok = \case + TypeVarKinded (Wrapped _ (Labeled (_,nm) _ ki) _) -> do + let nm' = getIdent (nameValue nm) + ki' <- convertType fileName ki + bindTv nm' ki' + TypeVarName (_, nm) -> do + let nm' = Text.unpack . getIdent . nameValue $ nm + internalError $ "Error in instance declaration near " <> prettyRange (srcTokenRange stok) + <> "\n Missing kind annotation for Type Var '" <> nm' <> "'" goInst ix inst@(Instance (InstanceHead _ _todo nameSep ctrs cls args) bd) = do + bindTypeVariables _todo let ann' = uncurry (sourceAnnCommented fileName) $ instanceRange inst clsAnn = findInstanceAnn cls args cstrnt <- traverse (convertConstraint False fileName) $ maybe [] (toList . fst) ctrs @@ -665,7 +679,7 @@ convertDeclaration fileName decl = case decl of (qualified cls) args' (AST.ExplicitInstance instBinding) - traverse (uncurry goInst) $ zip [0..] (toList insts) + pure $ runConvert . uncurry goInst <$> zip [0..] (toList insts) DeclDerive _ _ new (InstanceHead kw _todo nameSep ctrs cls args) -> do let chainId = mkChainId fileName $ startSourcePos kw diff --git a/src/Language/PureScript/TypeChecker/Types.hs b/src/Language/PureScript/TypeChecker/Types.hs index 6697fd9b..90dca61a 100644 --- a/src/Language/PureScript/TypeChecker/Types.hs +++ b/src/Language/PureScript/TypeChecker/Types.hs @@ -375,30 +375,30 @@ instantiatePolyTypeWithUnknowns val printMe@(ForAll _ _ ident mbK ty _) = do u <- freshTypeWithKind mbK insertUnkName' u ident result <- instantiatePolyTypeWithUnknowns val $ replaceTypeVars ident u ty - let msg = mkMsg result - goTraceM msg + --let msg = mkMsg result + --goTraceM msg pure result where mkMsg (resultExpr,resultTy) = "INSTANTIATE POLYTYPES WITH UNKNOWNS" - <> "\n EXPR: " <> renderValue 100 val + -- <> "\n EXPR: " <> renderValue 100 val <> "\n TYPE: " <> prettyTypeStr printMe <> "\n RESULT EXPR: " <> renderValue 100 resultExpr - <> "\n RESULT TYPE: " <> prettyTypeStr resultTy + -- <> "\n RESULT TYPE: " <> prettyTypeStr resultTy <> spacer instantiatePolyTypeWithUnknowns val printMe@(ConstrainedType _ con ty) = do dicts <- getTypeClassDictionaries hints <- getHints result <- instantiatePolyTypeWithUnknowns (App val (TypeClassDictionary con dicts hints)) ty - goTraceM (mkMsg result) + -- goTraceM (mkMsg result) pure result where mkMsg (resultExpr,resultTy) = "INSTANTIATE POLYTYPES WITH UNKNOWNS" - <> "\n EXPR: " <> renderValue 100 val + -- <> "\n EXPR: " <> renderValue 100 val <> "\n TYPE: " <> prettyTypeStr printMe <> "\n RESULT EXPR: " <> renderValue 100 resultExpr - <> "\n RESULT TYPE: " <> prettyTypeStr resultTy + -- <> "\n RESULT TYPE: " <> prettyTypeStr resultTy <> spacer instantiatePolyTypeWithUnknowns val ty = return (val, ty) @@ -704,8 +704,14 @@ inferBinder val (VarBinder ss name) = return $ M.singleton name (ss, val) inferBinder val (ConstructorBinder ss ctor binders) = do env <- getEnv case M.lookup ctor (dataConstructors env) of - Just (_, _, ty, _) -> do - (_, fn) <- instantiatePolyTypeWithUnknowns (internalError "Data constructor types cannot contain constraints") ty + Just (_, tn, ty, _) -> do + let tn' = T.unpack $ runProperName tn + (_, fn) <- instantiatePolyTypeWithUnknowns + (internalError $ "Data constructor types cannot contain constraints: " + <> prettyTypeStr val + <> "\n while inferring binders for constructor of type: " + <> tn' <> "\n " <> prettyTypeStr ty + ) ty fn' <- introduceSkolemScope <=< replaceAllTypeSynonyms $ fn let (args, ret) = peelArgs fn' expected = length args diff --git a/tests/purus/passing/4035/Other.purs b/tests/purus/passing/4035/Other.purs index 20b560f3..fd4201ab 100644 --- a/tests/purus/passing/4035/Other.purs +++ b/tests/purus/passing/4035/Other.purs @@ -2,4 +2,4 @@ module Other where type Id :: Type -> Type -type Id (a :: Prim.Type) = a +type Id (a :: Type) = a diff --git a/tests/purus/passing/4035/output/Other/externs.cbor b/tests/purus/passing/4035/output/Other/externs.cbor index 6249a05c..d2cf89da 100644 Binary files a/tests/purus/passing/4035/output/Other/externs.cbor and b/tests/purus/passing/4035/output/Other/externs.cbor differ diff --git a/tests/purus/passing/4035/output/Other/index.cfn b/tests/purus/passing/4035/output/Other/index.cfn index 6c39aff2..1c75ab10 100644 --- a/tests/purus/passing/4035/output/Other/index.cfn +++ b/tests/purus/passing/4035/output/Other/index.cfn @@ -1 +1 @@ -{"builtWith":"0.0.1","comments":[],"dataTypes":{},"decls":[],"exports":[],"foreign":[],"imports":[{"annotation":{"meta":null,"sourceSpan":{"end":[5,29],"start":[1,1]}},"moduleName":["Builtin"]},{"annotation":{"meta":null,"sourceSpan":{"end":[5,29],"start":[1,1]}},"moduleName":["Prim"]}],"moduleName":["Other"],"modulePath":"tests/purus/passing/4035/Other.purs","reExports":{},"sourceSpan":{"end":[5,29],"start":[1,1]}} \ No newline at end of file +{"builtWith":"0.0.1","comments":[],"dataTypes":{},"decls":[],"exports":[],"foreign":[],"imports":[{"annotation":{"meta":null,"sourceSpan":{"end":[5,24],"start":[1,1]}},"moduleName":["Builtin"]},{"annotation":{"meta":null,"sourceSpan":{"end":[5,24],"start":[1,1]}},"moduleName":["Prim"]}],"moduleName":["Other"],"modulePath":"tests/purus/passing/4035/Other.purs","reExports":{},"sourceSpan":{"end":[5,24],"start":[1,1]}} \ No newline at end of file diff --git a/tests/purus/passing/4101/Lib.purs b/tests/purus/passing/4101/Lib.purs index b5bab074..7cc9b79b 100644 --- a/tests/purus/passing/4101/Lib.purs +++ b/tests/purus/passing/4101/Lib.purs @@ -1,7 +1,7 @@ module Lib where -- newtype Const :: forall (j :: Type) (k :: j). Type -> k -> Type -newtype Const (a :: Prim.Type) (b :: Prim.Type) = Const a +newtype Const (a :: Type) (b :: Type) = Const a data Unit = Unit diff --git a/tests/purus/passing/4101/output/Lib/externs.cbor b/tests/purus/passing/4101/output/Lib/externs.cbor index dbf26f2d..abb9001e 100644 Binary files a/tests/purus/passing/4101/output/Lib/externs.cbor and b/tests/purus/passing/4101/output/Lib/externs.cbor differ diff --git a/tests/purus/passing/4101/output/Lib/index.cfn b/tests/purus/passing/4101/output/Lib/index.cfn index c183613e..2364828c 100644 --- a/tests/purus/passing/4101/output/Lib/index.cfn +++ b/tests/purus/passing/4101/output/Lib/index.cfn @@ -1 +1 @@ -{"builtWith":"0.0.1","comments":[],"dataTypes":{"Const":["newtype",[["a",{"annotation":[{"end":[4,30],"name":"tests/purus/passing/4101/Lib.purs","start":[4,21]},[]],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"}],["b",{"annotation":[{"end":[4,47],"name":"tests/purus/passing/4101/Lib.purs","start":[4,38]},[]],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"}]],[{"dataCtorAnn":[{"end":[4,58],"name":"tests/purus/passing/4101/Lib.purs","start":[4,49]},[]],"dataCtorFields":[[{"Ident":"value0"},{"annotation":[{"end":[4,58],"name":"tests/purus/passing/4101/Lib.purs","start":[4,57]},[]],"contents":{"kind":{"annotation":[{"end":[4,30],"name":"tests/purus/passing/4101/Lib.purs","start":[4,21]},[]],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"},"var":"a"},"tag":"TypeVar"}]],"dataCtorName":"Const"}]],"Unit":["data",[],[{"dataCtorAnn":[{"end":[6,17],"name":"tests/purus/passing/4101/Lib.purs","start":[6,11]},[]],"dataCtorFields":[],"dataCtorName":"Unit"}]]},"decls":[{"annotation":{"meta":null,"sourceSpan":{"end":[6,17],"start":[6,1]}},"bindType":"NonRec","expression":{"annotation":{"meta":null,"sourceSpan":{"end":[6,17],"start":[6,1]}},"constructorName":"Unit","fieldNames":[],"kind":"Constructor","type":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Lib"],"Unit"],"tag":"TypeConstructor"},"typeName":"Unit"},"identifier":"Unit"},{"annotation":{"meta":null,"sourceSpan":{"end":[4,58],"start":[4,1]}},"bindType":"NonRec","expression":{"annotation":{"meta":{"metaType":"IsNewtype"},"sourceSpan":{"end":[4,58],"start":[4,1]}},"argument":"x","body":{"annotation":{"meta":null,"sourceSpan":{"end":[4,58],"start":[4,1]}},"kind":"Var","type":{"annotation":[{"end":[4,58],"name":"tests/purus/passing/4101/Lib.purs","start":[4,57]},[]],"contents":{"kind":{"annotation":[{"end":[4,30],"name":"tests/purus/passing/4101/Lib.purs","start":[4,21]},[]],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"},"var":"a"},"tag":"TypeVar"},"value":{"identifier":"x","sourcePos":[0,0]}},"kind":"Abs","type":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":{"identifier":"a","kind":{"annotation":[{"end":[4,30],"name":"tests/purus/passing/4101/Lib.purs","start":[4,21]},[]],"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":[4,58],"name":"tests/purus/passing/4101/Lib.purs","start":[4,57]},[]],"contents":{"kind":{"annotation":[{"end":[4,30],"name":"tests/purus/passing/4101/Lib.purs","start":[4,21]},[]],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"},"var":"a"},"tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[{"end":[4,58],"name":"tests/purus/passing/4101/Lib.purs","start":[4,57]},[]],"contents":{"kind":{"annotation":[{"end":[4,30],"name":"tests/purus/passing/4101/Lib.purs","start":[4,21]},[]],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"},"var":"a"},"tag":"TypeVar"}],"tag":"TypeApp"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"identifier":"Const"}],"exports":["Const","Unit"],"foreign":[],"imports":[{"annotation":{"meta":null,"sourceSpan":{"end":[9,23],"start":[1,1]}},"moduleName":["Builtin"]},{"annotation":{"meta":null,"sourceSpan":{"end":[9,23],"start":[1,1]}},"moduleName":["Prim"]}],"moduleName":["Lib"],"modulePath":"tests/purus/passing/4101/Lib.purs","reExports":{},"sourceSpan":{"end":[9,23],"start":[1,1]}} \ No newline at end of file +{"builtWith":"0.0.1","comments":[],"dataTypes":{"Const":["newtype",[["a",{"annotation":[{"end":[4,25],"name":"tests/purus/passing/4101/Lib.purs","start":[4,21]},[]],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"}],["b",{"annotation":[{"end":[4,37],"name":"tests/purus/passing/4101/Lib.purs","start":[4,33]},[]],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"}]],[{"dataCtorAnn":[{"end":[4,48],"name":"tests/purus/passing/4101/Lib.purs","start":[4,39]},[]],"dataCtorFields":[[{"Ident":"value0"},{"annotation":[{"end":[4,48],"name":"tests/purus/passing/4101/Lib.purs","start":[4,47]},[]],"contents":{"kind":{"annotation":[{"end":[4,25],"name":"tests/purus/passing/4101/Lib.purs","start":[4,21]},[]],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"},"var":"a"},"tag":"TypeVar"}]],"dataCtorName":"Const"}]],"Unit":["data",[],[{"dataCtorAnn":[{"end":[6,17],"name":"tests/purus/passing/4101/Lib.purs","start":[6,11]},[]],"dataCtorFields":[],"dataCtorName":"Unit"}]]},"decls":[{"annotation":{"meta":null,"sourceSpan":{"end":[6,17],"start":[6,1]}},"bindType":"NonRec","expression":{"annotation":{"meta":null,"sourceSpan":{"end":[6,17],"start":[6,1]}},"constructorName":"Unit","fieldNames":[],"kind":"Constructor","type":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Lib"],"Unit"],"tag":"TypeConstructor"},"typeName":"Unit"},"identifier":"Unit"},{"annotation":{"meta":null,"sourceSpan":{"end":[4,48],"start":[4,1]}},"bindType":"NonRec","expression":{"annotation":{"meta":{"metaType":"IsNewtype"},"sourceSpan":{"end":[4,48],"start":[4,1]}},"argument":"x","body":{"annotation":{"meta":null,"sourceSpan":{"end":[4,48],"start":[4,1]}},"kind":"Var","type":{"annotation":[{"end":[4,48],"name":"tests/purus/passing/4101/Lib.purs","start":[4,47]},[]],"contents":{"kind":{"annotation":[{"end":[4,25],"name":"tests/purus/passing/4101/Lib.purs","start":[4,21]},[]],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"},"var":"a"},"tag":"TypeVar"},"value":{"identifier":"x","sourcePos":[0,0]}},"kind":"Abs","type":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":{"identifier":"a","kind":{"annotation":[{"end":[4,25],"name":"tests/purus/passing/4101/Lib.purs","start":[4,21]},[]],"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":[4,48],"name":"tests/purus/passing/4101/Lib.purs","start":[4,47]},[]],"contents":{"kind":{"annotation":[{"end":[4,25],"name":"tests/purus/passing/4101/Lib.purs","start":[4,21]},[]],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"},"var":"a"},"tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[{"end":[4,48],"name":"tests/purus/passing/4101/Lib.purs","start":[4,47]},[]],"contents":{"kind":{"annotation":[{"end":[4,25],"name":"tests/purus/passing/4101/Lib.purs","start":[4,21]},[]],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"},"var":"a"},"tag":"TypeVar"}],"tag":"TypeApp"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"identifier":"Const"}],"exports":["Const","Unit"],"foreign":[],"imports":[{"annotation":{"meta":null,"sourceSpan":{"end":[9,23],"start":[1,1]}},"moduleName":["Builtin"]},{"annotation":{"meta":null,"sourceSpan":{"end":[9,23],"start":[1,1]}},"moduleName":["Prim"]}],"moduleName":["Lib"],"modulePath":"tests/purus/passing/4101/Lib.purs","reExports":{},"sourceSpan":{"end":[9,23],"start":[1,1]}} \ No newline at end of file diff --git a/tests/purus/passing/4105/Lib.purs b/tests/purus/passing/4105/Lib.purs index 4f29753f..e42dfdae 100644 --- a/tests/purus/passing/4105/Lib.purs +++ b/tests/purus/passing/4105/Lib.purs @@ -1,5 +1,5 @@ module Lib where -type Template (col :: Prim.Type -> Prim.Type) = { bio :: col String } -type Identity (a :: Prim.Type) = a +type Template (col :: Type -> Type) = { bio :: col String } +type Identity (a :: Type) = a type Patch = Template Identity diff --git a/tests/purus/passing/4105/output/Lib/externs.cbor b/tests/purus/passing/4105/output/Lib/externs.cbor index 9af3cc5f..17d223ba 100644 Binary files a/tests/purus/passing/4105/output/Lib/externs.cbor and b/tests/purus/passing/4105/output/Lib/externs.cbor differ diff --git a/tests/purus/passing/4310/Lib.purs b/tests/purus/passing/4310/Lib.purs index 4700555f..e2567a5d 100644 --- a/tests/purus/passing/4310/Lib.purs +++ b/tests/purus/passing/4310/Lib.purs @@ -1,8 +1,6 @@ module Lib where -import Prim (Type, String, Int) - -data Tuple (a :: Prim.Type) (b :: Prim.Type) = Tuple a b +data Tuple (a :: Type) (b :: Type) = Tuple a b infixr 6 Tuple as /\ infixr 6 type Tuple as /\ @@ -12,13 +10,11 @@ mappend _ _ = "mappend" infixr 5 mappend as <> -class Test (a :: Prim.Type) where +class Test (a :: Type) where runTest :: a -> String instance Test Int where runTest _ = "4" -{- TODO/FIXME: Disabled while I figure out what to do here -instance (Test a, Test b) => Test (a /\ b) where +instance forall (a :: Type) (b :: Type). (Test a, Test b) => Test (a /\ b) where runTest (a /\ b) = runTest a <> runTest b --} diff --git a/tests/purus/passing/4310/output/Lib/externs.cbor b/tests/purus/passing/4310/output/Lib/externs.cbor index 906cdebe..456927f7 100644 Binary files a/tests/purus/passing/4310/output/Lib/externs.cbor and b/tests/purus/passing/4310/output/Lib/externs.cbor differ diff --git a/tests/purus/passing/4310/output/Lib/index.cfn b/tests/purus/passing/4310/output/Lib/index.cfn index 8f345b0a..f7393e03 100644 --- a/tests/purus/passing/4310/output/Lib/index.cfn +++ b/tests/purus/passing/4310/output/Lib/index.cfn @@ -1 +1 @@ -{"builtWith":"0.0.1","comments":[],"dataTypes":{"Test$Dict":["newtype",[["a",{"annotation":[{"end":[15,27],"name":"tests/purus/passing/4310/Lib.purs","start":[15,18]},[]],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"}]],[{"dataCtorAnn":[{"end":[16,25],"name":"tests/purus/passing/4310/Lib.purs","start":[15,1]},[]],"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":["runTest",{"annotation":[{"end":[16,25],"name":"tests/purus/passing/4310/Lib.purs","start":[16,14]},[]],"contents":[{"annotation":[{"end":[16,25],"name":"tests/purus/passing/4310/Lib.purs","start":[16,14]},[]],"contents":[{"annotation":[{"end":[16,18],"name":"tests/purus/passing/4310/Lib.purs","start":[16,16]},[]],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[16,15],"name":"tests/purus/passing/4310/Lib.purs","start":[16,14]},[]],"contents":{"kind":{"annotation":[{"end":[15,27],"name":"tests/purus/passing/4310/Lib.purs","start":[15,18]},[]],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"},"var":"a"},"tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[{"end":[16,25],"name":"tests/purus/passing/4310/Lib.purs","start":[16,19]},[]],"contents":[["Prim"],"String"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"tag":"REmpty"}],"tag":"RCons"}],"tag":"TypeApp"}]],"dataCtorName":"Test$Dict"}]],"Tuple":["data",[["a",{"annotation":[{"end":[5,27],"name":"tests/purus/passing/4310/Lib.purs","start":[5,18]},[]],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"}],["b",{"annotation":[{"end":[5,44],"name":"tests/purus/passing/4310/Lib.purs","start":[5,35]},[]],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"}]],[{"dataCtorAnn":[{"end":[5,53],"name":"tests/purus/passing/4310/Lib.purs","start":[5,46]},[]],"dataCtorFields":[[{"Ident":"value0"},{"annotation":[{"end":[5,55],"name":"tests/purus/passing/4310/Lib.purs","start":[5,54]},[]],"contents":{"kind":{"annotation":[{"end":[5,27],"name":"tests/purus/passing/4310/Lib.purs","start":[5,18]},[]],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"},"var":"a"},"tag":"TypeVar"}],[{"Ident":"value1"},{"annotation":[{"end":[5,57],"name":"tests/purus/passing/4310/Lib.purs","start":[5,56]},[]],"contents":{"kind":{"annotation":[{"end":[5,44],"name":"tests/purus/passing/4310/Lib.purs","start":[5,35]},[]],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"},"var":"b"},"tag":"TypeVar"}]],"dataCtorName":"Tuple"}]]},"decls":[{"annotation":{"meta":null,"sourceSpan":{"end":[5,57],"start":[5,1]}},"bindType":"NonRec","expression":{"annotation":{"meta":null,"sourceSpan":{"end":[5,57],"start":[5,1]}},"constructorName":"Tuple","fieldNames":["value0","value1"],"kind":"Constructor","type":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":{"identifier":"a","kind":{"annotation":[{"end":[5,27],"name":"tests/purus/passing/4310/Lib.purs","start":[5,18]},[]],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"},"skolem":null,"type":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":{"identifier":"b","kind":{"annotation":[{"end":[5,44],"name":"tests/purus/passing/4310/Lib.purs","start":[5,35]},[]],"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":[5,55],"name":"tests/purus/passing/4310/Lib.purs","start":[5,54]},[]],"contents":{"kind":{"annotation":[{"end":[5,27],"name":"tests/purus/passing/4310/Lib.purs","start":[5,18]},[]],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"},"var":"a"},"tag":"TypeVar"}],"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":[5,57],"name":"tests/purus/passing/4310/Lib.purs","start":[5,56]},[]],"contents":{"kind":{"annotation":[{"end":[5,44],"name":"tests/purus/passing/4310/Lib.purs","start":[5,35]},[]],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"},"var":"b"},"tag":"TypeVar"}],"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"],"Tuple"],"tag":"TypeConstructor"},{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":{"kind":{"annotation":[{"end":[5,27],"name":"tests/purus/passing/4310/Lib.purs","start":[5,18]},[]],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"},"var":"a"},"tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":{"kind":{"annotation":[{"end":[5,44],"name":"tests/purus/passing/4310/Lib.purs","start":[5,35]},[]],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"},"var":"b"},"tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"},"visibility":"TypeVarVisible"},"tag":"ForAll"},"visibility":"TypeVarVisible"},"tag":"ForAll"},"typeName":"Tuple"},"identifier":"Tuple"},{"annotation":{"meta":{"metaType":"IsTypeClassConstructor"},"sourceSpan":{"end":[16,25],"start":[15,1]}},"bindType":"NonRec","expression":{"annotation":{"meta":{"metaType":"IsNewtype"},"sourceSpan":{"end":[16,25],"start":[15,1]}},"argument":"x","body":{"annotation":{"meta":null,"sourceSpan":{"end":[16,25],"start":[15,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":["runTest",{"annotation":[{"end":[16,25],"name":"tests/purus/passing/4310/Lib.purs","start":[16,14]},[]],"contents":[{"annotation":[{"end":[16,25],"name":"tests/purus/passing/4310/Lib.purs","start":[16,14]},[]],"contents":[{"annotation":[{"end":[16,18],"name":"tests/purus/passing/4310/Lib.purs","start":[16,16]},[]],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[16,15],"name":"tests/purus/passing/4310/Lib.purs","start":[16,14]},[]],"contents":{"kind":{"annotation":[{"end":[15,27],"name":"tests/purus/passing/4310/Lib.purs","start":[15,18]},[]],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"},"var":"a"},"tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[{"end":[16,25],"name":"tests/purus/passing/4310/Lib.purs","start":[16,19]},[]],"contents":[["Prim"],"String"],"tag":"TypeConstructor"}],"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":{"annotation":[{"end":[15,27],"name":"tests/purus/passing/4310/Lib.purs","start":[15,18]},[]],"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":[["Prim"],"Record"],"tag":"TypeConstructor"},{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":["runTest",{"annotation":[{"end":[16,25],"name":"tests/purus/passing/4310/Lib.purs","start":[16,14]},[]],"contents":[{"annotation":[{"end":[16,25],"name":"tests/purus/passing/4310/Lib.purs","start":[16,14]},[]],"contents":[{"annotation":[{"end":[16,18],"name":"tests/purus/passing/4310/Lib.purs","start":[16,16]},[]],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[16,15],"name":"tests/purus/passing/4310/Lib.purs","start":[16,14]},[]],"contents":{"kind":{"annotation":[{"end":[15,27],"name":"tests/purus/passing/4310/Lib.purs","start":[15,18]},[]],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"},"var":"a"},"tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[{"end":[16,25],"name":"tests/purus/passing/4310/Lib.purs","start":[16,19]},[]],"contents":[["Prim"],"String"],"tag":"TypeConstructor"}],"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":["runTest",{"annotation":[{"end":[16,25],"name":"tests/purus/passing/4310/Lib.purs","start":[16,14]},[]],"contents":[{"annotation":[{"end":[16,25],"name":"tests/purus/passing/4310/Lib.purs","start":[16,14]},[]],"contents":[{"annotation":[{"end":[16,18],"name":"tests/purus/passing/4310/Lib.purs","start":[16,16]},[]],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[16,15],"name":"tests/purus/passing/4310/Lib.purs","start":[16,14]},[]],"contents":{"kind":{"annotation":[{"end":[15,27],"name":"tests/purus/passing/4310/Lib.purs","start":[15,18]},[]],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"},"var":"a"},"tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[{"end":[16,25],"name":"tests/purus/passing/4310/Lib.purs","start":[16,19]},[]],"contents":[["Prim"],"String"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"tag":"REmpty"}],"tag":"RCons"}],"tag":"TypeApp"}],"tag":"TypeApp"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"identifier":"Test$Dict"},{"annotation":{"meta":null,"sourceSpan":{"end":[19,18],"start":[18,1]}},"bindType":"NonRec","expression":{"abstraction":{"annotation":{"meta":{"metaType":"IsNewtype"},"sourceSpan":{"end":[19,18],"start":[18,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":["runTest",{"annotation":[{"end":[16,25],"name":"tests/purus/passing/4310/Lib.purs","start":[16,14]},[]],"contents":[{"annotation":[{"end":[16,25],"name":"tests/purus/passing/4310/Lib.purs","start":[16,14]},[]],"contents":[{"annotation":[{"end":[16,18],"name":"tests/purus/passing/4310/Lib.purs","start":[16,16]},[]],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[18,18],"name":"tests/purus/passing/4310/Lib.purs","start":[18,15]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[{"end":[16,25],"name":"tests/purus/passing/4310/Lib.purs","start":[16,19]},[]],"contents":[["Prim"],"String"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"tag":"REmpty"},{"annotation":[{"end":[16,18],"name":"tests/purus/passing/4310/Lib.purs","start":[16,16]},[]],"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"],"Test$Dict"],"tag":"TypeConstructor"},{"annotation":[{"end":[18,18],"name":"tests/purus/passing/4310/Lib.purs","start":[18,15]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"},"value":{"identifier":"Test$Dict","moduleName":["Lib"]}},"annotation":{"meta":null,"sourceSpan":{"end":[19,18],"start":[18,1]}},"argument":{"annotation":{"meta":null,"sourceSpan":{"end":[19,18],"start":[18,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":["runTest",{"annotation":[{"end":[16,25],"name":"tests/purus/passing/4310/Lib.purs","start":[16,14]},[]],"contents":[{"annotation":[{"end":[16,25],"name":"tests/purus/passing/4310/Lib.purs","start":[16,14]},[]],"contents":[{"annotation":[{"end":[16,18],"name":"tests/purus/passing/4310/Lib.purs","start":[16,16]},[]],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[18,18],"name":"tests/purus/passing/4310/Lib.purs","start":[18,15]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[{"end":[16,25],"name":"tests/purus/passing/4310/Lib.purs","start":[16,19]},[]],"contents":[["Prim"],"String"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"tag":"REmpty"},{"annotation":[{"end":[16,18],"name":"tests/purus/passing/4310/Lib.purs","start":[16,16]},[]],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"}],"tag":"KindApp"}],"tag":"RCons"}],"tag":"TypeApp"},"value":{"literalType":"ObjectLiteral","value":[["runTest",{"annotation":{"meta":null,"sourceSpan":{"end":[19,18],"start":[19,3]}},"argument":"v","body":{"annotation":{"meta":null,"sourceSpan":{"end":[19,18],"start":[19,15]}},"kind":"Literal","type":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"String"],"tag":"TypeConstructor"},"value":{"literalType":"StringLiteral","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":[18,18],"name":"tests/purus/passing/4310/Lib.purs","start":[18,15]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[{"end":[16,25],"name":"tests/purus/passing/4310/Lib.purs","start":[16,19]},[]],"contents":[["Prim"],"String"],"tag":"TypeConstructor"}],"tag":"TypeApp"}}]]}},"kind":"App"},"identifier":"testInt"},{"annotation":{"meta":null,"sourceSpan":{"end":[16,25],"start":[16,3]}},"bindType":"NonRec","expression":{"annotation":{"meta":null,"sourceSpan":{"end":[16,25],"start":[16,3]}},"argument":"dict","body":{"annotation":{"meta":null,"sourceSpan":{"end":[16,25],"start":[16,3]}},"caseAlternatives":[{"binders":[{"annotation":{"meta":{"metaType":"IsNewtype"},"sourceSpan":{"end":[16,25],"start":[16,3]}},"binderType":"ConstructorBinder","binders":[{"annotation":{"meta":null,"sourceSpan":{"end":[16,25],"start":[16,3]}},"binderType":"VarBinder","identifier":"v"}],"constructorName":{"identifier":"Test$Dict","moduleName":["Lib"]},"typeName":{"identifier":"Test$Dict","moduleName":["Lib"]}}],"expression":{"annotation":{"meta":null,"sourceSpan":{"end":[16,25],"start":[16,3]}},"expression":{"annotation":{"meta":null,"sourceSpan":{"end":[16,25],"start":[16,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":["runTest",{"annotation":[{"end":[16,25],"name":"tests/purus/passing/4310/Lib.purs","start":[16,14]},[]],"contents":[{"annotation":[{"end":[16,25],"name":"tests/purus/passing/4310/Lib.purs","start":[16,14]},[]],"contents":[{"annotation":[{"end":[16,18],"name":"tests/purus/passing/4310/Lib.purs","start":[16,16]},[]],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":{"kind":{"annotation":[{"end":[15,27],"name":"tests/purus/passing/4310/Lib.purs","start":[15,18]},[]],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"},"var":"a"},"tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[{"end":[16,25],"name":"tests/purus/passing/4310/Lib.purs","start":[16,19]},[]],"contents":[["Prim"],"String"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"tag":"REmpty"},{"annotation":[{"end":[16,18],"name":"tests/purus/passing/4310/Lib.purs","start":[16,16]},[]],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"}],"tag":"KindApp"}],"tag":"RCons"}],"tag":"TypeApp"},"value":{"identifier":"v","sourcePos":[16,3]}},"fieldName":"runTest","kind":"Accessor","type":{"annotation":[{"end":[16,25],"name":"tests/purus/passing/4310/Lib.purs","start":[16,14]},[]],"contents":[{"annotation":[{"end":[16,25],"name":"tests/purus/passing/4310/Lib.purs","start":[16,14]},[]],"contents":[{"annotation":[{"end":[16,18],"name":"tests/purus/passing/4310/Lib.purs","start":[16,16]},[]],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[16,15],"name":"tests/purus/passing/4310/Lib.purs","start":[16,14]},[]],"contents":{"kind":{"annotation":[{"end":[15,27],"name":"tests/purus/passing/4310/Lib.purs","start":[15,18]},[]],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"},"var":"a"},"tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[{"end":[16,25],"name":"tests/purus/passing/4310/Lib.purs","start":[16,19]},[]],"contents":[["Prim"],"String"],"tag":"TypeConstructor"}],"tag":"TypeApp"}},"isGuarded":false}],"caseExpressions":[{"annotation":{"meta":null,"sourceSpan":{"end":[16,25],"start":[16,3]}},"kind":"Var","type":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Lib"],"Test$Dict"],"tag":"TypeConstructor"},{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":{"kind":{"annotation":[{"end":[15,27],"name":"tests/purus/passing/4310/Lib.purs","start":[15,18]},[]],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"},"var":"a"},"tag":"TypeVar"}],"tag":"TypeApp"},"value":{"identifier":"dict","sourcePos":[0,0]}}],"kind":"Case","type":{"annotation":[{"end":[16,25],"name":"tests/purus/passing/4310/Lib.purs","start":[16,14]},[]],"contents":[{"annotation":[{"end":[16,25],"name":"tests/purus/passing/4310/Lib.purs","start":[16,14]},[]],"contents":[{"annotation":[{"end":[16,18],"name":"tests/purus/passing/4310/Lib.purs","start":[16,16]},[]],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[16,15],"name":"tests/purus/passing/4310/Lib.purs","start":[16,14]},[]],"contents":{"kind":{"annotation":[{"end":[15,27],"name":"tests/purus/passing/4310/Lib.purs","start":[15,18]},[]],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"},"var":"a"},"tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[{"end":[16,25],"name":"tests/purus/passing/4310/Lib.purs","start":[16,19]},[]],"contents":[["Prim"],"String"],"tag":"TypeConstructor"}],"tag":"TypeApp"}},"kind":"Abs","type":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":{"identifier":"a","kind":{"annotation":[{"end":[15,27],"name":"tests/purus/passing/4310/Lib.purs","start":[15,18]},[]],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"},"skolem":1,"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"],"Test$Dict"],"tag":"TypeConstructor"},{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":{"kind":{"annotation":[{"end":[15,27],"name":"tests/purus/passing/4310/Lib.purs","start":[15,18]},[]],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"},"var":"a"},"tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[{"end":[16,25],"name":"tests/purus/passing/4310/Lib.purs","start":[16,14]},[]],"contents":[{"annotation":[{"end":[16,25],"name":"tests/purus/passing/4310/Lib.purs","start":[16,14]},[]],"contents":[{"annotation":[{"end":[16,18],"name":"tests/purus/passing/4310/Lib.purs","start":[16,16]},[]],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[16,15],"name":"tests/purus/passing/4310/Lib.purs","start":[16,14]},[]],"contents":{"kind":{"annotation":[{"end":[15,27],"name":"tests/purus/passing/4310/Lib.purs","start":[15,18]},[]],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"},"var":"a"},"tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[{"end":[16,25],"name":"tests/purus/passing/4310/Lib.purs","start":[16,19]},[]],"contents":[["Prim"],"String"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"},"visibility":"TypeVarVisible"},"tag":"ForAll"}},"identifier":"runTest"},{"annotation":{"meta":null,"sourceSpan":{"end":[10,38],"start":[10,1]}},"bindType":"NonRec","expression":{"annotation":{"meta":null,"sourceSpan":{"end":[11,24],"start":[11,1]}},"argument":"v","body":{"annotation":{"meta":null,"sourceSpan":{"end":[11,24],"start":[11,1]}},"argument":"v1","body":{"annotation":{"meta":null,"sourceSpan":{"end":[11,24],"start":[11,15]}},"kind":"Literal","type":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"String"],"tag":"TypeConstructor"},"value":{"literalType":"StringLiteral","value":"mappend"}},"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":[10,28],"name":"tests/purus/passing/4310/Lib.purs","start":[10,22]},[]],"contents":[["Prim"],"String"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[{"end":[10,38],"name":"tests/purus/passing/4310/Lib.purs","start":[10,32]},[]],"contents":[["Prim"],"String"],"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":[10,18],"name":"tests/purus/passing/4310/Lib.purs","start":[10,12]},[]],"contents":[["Prim"],"String"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[{"end":[10,38],"name":"tests/purus/passing/4310/Lib.purs","start":[10,22]},[]],"contents":[{"annotation":[{"end":[10,38],"name":"tests/purus/passing/4310/Lib.purs","start":[10,22]},[]],"contents":[{"annotation":[{"end":[10,31],"name":"tests/purus/passing/4310/Lib.purs","start":[10,29]},[]],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[10,28],"name":"tests/purus/passing/4310/Lib.purs","start":[10,22]},[]],"contents":[["Prim"],"String"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[{"end":[10,38],"name":"tests/purus/passing/4310/Lib.purs","start":[10,32]},[]],"contents":[["Prim"],"String"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"identifier":"mappend"}],"exports":["runTest","Tuple","mappend","testInt"],"foreign":[],"imports":[{"annotation":{"meta":null,"sourceSpan":{"end":[19,18],"start":[1,1]}},"moduleName":["Builtin"]},{"annotation":{"meta":null,"sourceSpan":{"end":[19,18],"start":[1,1]}},"moduleName":["Lib"]},{"annotation":{"meta":null,"sourceSpan":{"end":[3,32],"start":[3,1]}},"moduleName":["Prim"]}],"moduleName":["Lib"],"modulePath":"tests/purus/passing/4310/Lib.purs","reExports":{},"sourceSpan":{"end":[19,18],"start":[1,1]}} \ No newline at end of file +{"builtWith":"0.0.1","comments":[],"dataTypes":{"Test$Dict":["newtype",[["a",{"annotation":[{"end":[13,22],"name":"tests/purus/passing/4310/Lib.purs","start":[13,18]},[]],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"}]],[{"dataCtorAnn":[{"end":[14,25],"name":"tests/purus/passing/4310/Lib.purs","start":[13,1]},[]],"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":["runTest",{"annotation":[{"end":[14,25],"name":"tests/purus/passing/4310/Lib.purs","start":[14,14]},[]],"contents":[{"annotation":[{"end":[14,25],"name":"tests/purus/passing/4310/Lib.purs","start":[14,14]},[]],"contents":[{"annotation":[{"end":[14,18],"name":"tests/purus/passing/4310/Lib.purs","start":[14,16]},[]],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[14,15],"name":"tests/purus/passing/4310/Lib.purs","start":[14,14]},[]],"contents":{"kind":{"annotation":[{"end":[13,22],"name":"tests/purus/passing/4310/Lib.purs","start":[13,18]},[]],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"},"var":"a"},"tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[{"end":[14,25],"name":"tests/purus/passing/4310/Lib.purs","start":[14,19]},[]],"contents":[["Prim"],"String"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"tag":"REmpty"}],"tag":"RCons"}],"tag":"TypeApp"}]],"dataCtorName":"Test$Dict"}]],"Tuple":["data",[["a",{"annotation":[{"end":[3,22],"name":"tests/purus/passing/4310/Lib.purs","start":[3,18]},[]],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"}],["b",{"annotation":[{"end":[3,34],"name":"tests/purus/passing/4310/Lib.purs","start":[3,30]},[]],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"}]],[{"dataCtorAnn":[{"end":[3,43],"name":"tests/purus/passing/4310/Lib.purs","start":[3,36]},[]],"dataCtorFields":[[{"Ident":"value0"},{"annotation":[{"end":[3,45],"name":"tests/purus/passing/4310/Lib.purs","start":[3,44]},[]],"contents":{"kind":{"annotation":[{"end":[3,22],"name":"tests/purus/passing/4310/Lib.purs","start":[3,18]},[]],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"},"var":"a"},"tag":"TypeVar"}],[{"Ident":"value1"},{"annotation":[{"end":[3,47],"name":"tests/purus/passing/4310/Lib.purs","start":[3,46]},[]],"contents":{"kind":{"annotation":[{"end":[3,34],"name":"tests/purus/passing/4310/Lib.purs","start":[3,30]},[]],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"},"var":"b"},"tag":"TypeVar"}]],"dataCtorName":"Tuple"}]]},"decls":[{"annotation":{"meta":null,"sourceSpan":{"end":[3,47],"start":[3,1]}},"bindType":"NonRec","expression":{"annotation":{"meta":null,"sourceSpan":{"end":[3,47],"start":[3,1]}},"constructorName":"Tuple","fieldNames":["value0","value1"],"kind":"Constructor","type":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":{"identifier":"a","kind":{"annotation":[{"end":[3,22],"name":"tests/purus/passing/4310/Lib.purs","start":[3,18]},[]],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"},"skolem":null,"type":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":{"identifier":"b","kind":{"annotation":[{"end":[3,34],"name":"tests/purus/passing/4310/Lib.purs","start":[3,30]},[]],"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":[3,45],"name":"tests/purus/passing/4310/Lib.purs","start":[3,44]},[]],"contents":{"kind":{"annotation":[{"end":[3,22],"name":"tests/purus/passing/4310/Lib.purs","start":[3,18]},[]],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"},"var":"a"},"tag":"TypeVar"}],"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":[3,47],"name":"tests/purus/passing/4310/Lib.purs","start":[3,46]},[]],"contents":{"kind":{"annotation":[{"end":[3,34],"name":"tests/purus/passing/4310/Lib.purs","start":[3,30]},[]],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"},"var":"b"},"tag":"TypeVar"}],"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"],"Tuple"],"tag":"TypeConstructor"},{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":{"kind":{"annotation":[{"end":[3,22],"name":"tests/purus/passing/4310/Lib.purs","start":[3,18]},[]],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"},"var":"a"},"tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":{"kind":{"annotation":[{"end":[3,34],"name":"tests/purus/passing/4310/Lib.purs","start":[3,30]},[]],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"},"var":"b"},"tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"},"visibility":"TypeVarVisible"},"tag":"ForAll"},"visibility":"TypeVarVisible"},"tag":"ForAll"},"typeName":"Tuple"},"identifier":"Tuple"},{"annotation":{"meta":{"metaType":"IsTypeClassConstructor"},"sourceSpan":{"end":[14,25],"start":[13,1]}},"bindType":"NonRec","expression":{"annotation":{"meta":{"metaType":"IsNewtype"},"sourceSpan":{"end":[14,25],"start":[13,1]}},"argument":"x","body":{"annotation":{"meta":null,"sourceSpan":{"end":[14,25],"start":[13,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":["runTest",{"annotation":[{"end":[14,25],"name":"tests/purus/passing/4310/Lib.purs","start":[14,14]},[]],"contents":[{"annotation":[{"end":[14,25],"name":"tests/purus/passing/4310/Lib.purs","start":[14,14]},[]],"contents":[{"annotation":[{"end":[14,18],"name":"tests/purus/passing/4310/Lib.purs","start":[14,16]},[]],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[14,15],"name":"tests/purus/passing/4310/Lib.purs","start":[14,14]},[]],"contents":{"kind":{"annotation":[{"end":[13,22],"name":"tests/purus/passing/4310/Lib.purs","start":[13,18]},[]],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"},"var":"a"},"tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[{"end":[14,25],"name":"tests/purus/passing/4310/Lib.purs","start":[14,19]},[]],"contents":[["Prim"],"String"],"tag":"TypeConstructor"}],"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":{"annotation":[{"end":[13,22],"name":"tests/purus/passing/4310/Lib.purs","start":[13,18]},[]],"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":[["Prim"],"Record"],"tag":"TypeConstructor"},{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":["runTest",{"annotation":[{"end":[14,25],"name":"tests/purus/passing/4310/Lib.purs","start":[14,14]},[]],"contents":[{"annotation":[{"end":[14,25],"name":"tests/purus/passing/4310/Lib.purs","start":[14,14]},[]],"contents":[{"annotation":[{"end":[14,18],"name":"tests/purus/passing/4310/Lib.purs","start":[14,16]},[]],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[14,15],"name":"tests/purus/passing/4310/Lib.purs","start":[14,14]},[]],"contents":{"kind":{"annotation":[{"end":[13,22],"name":"tests/purus/passing/4310/Lib.purs","start":[13,18]},[]],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"},"var":"a"},"tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[{"end":[14,25],"name":"tests/purus/passing/4310/Lib.purs","start":[14,19]},[]],"contents":[["Prim"],"String"],"tag":"TypeConstructor"}],"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":["runTest",{"annotation":[{"end":[14,25],"name":"tests/purus/passing/4310/Lib.purs","start":[14,14]},[]],"contents":[{"annotation":[{"end":[14,25],"name":"tests/purus/passing/4310/Lib.purs","start":[14,14]},[]],"contents":[{"annotation":[{"end":[14,18],"name":"tests/purus/passing/4310/Lib.purs","start":[14,16]},[]],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[14,15],"name":"tests/purus/passing/4310/Lib.purs","start":[14,14]},[]],"contents":{"kind":{"annotation":[{"end":[13,22],"name":"tests/purus/passing/4310/Lib.purs","start":[13,18]},[]],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"},"var":"a"},"tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[{"end":[14,25],"name":"tests/purus/passing/4310/Lib.purs","start":[14,19]},[]],"contents":[["Prim"],"String"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"tag":"REmpty"}],"tag":"RCons"}],"tag":"TypeApp"}],"tag":"TypeApp"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"identifier":"Test$Dict"},{"annotation":{"meta":null,"sourceSpan":{"end":[17,18],"start":[16,1]}},"bindType":"NonRec","expression":{"abstraction":{"annotation":{"meta":{"metaType":"IsNewtype"},"sourceSpan":{"end":[17,18],"start":[16,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":["runTest",{"annotation":[{"end":[14,25],"name":"tests/purus/passing/4310/Lib.purs","start":[14,14]},[]],"contents":[{"annotation":[{"end":[14,25],"name":"tests/purus/passing/4310/Lib.purs","start":[14,14]},[]],"contents":[{"annotation":[{"end":[14,18],"name":"tests/purus/passing/4310/Lib.purs","start":[14,16]},[]],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[16,18],"name":"tests/purus/passing/4310/Lib.purs","start":[16,15]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[{"end":[14,25],"name":"tests/purus/passing/4310/Lib.purs","start":[14,19]},[]],"contents":[["Prim"],"String"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"tag":"REmpty"},{"annotation":[{"end":[14,18],"name":"tests/purus/passing/4310/Lib.purs","start":[14,16]},[]],"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"],"Test$Dict"],"tag":"TypeConstructor"},{"annotation":[{"end":[16,18],"name":"tests/purus/passing/4310/Lib.purs","start":[16,15]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"},"value":{"identifier":"Test$Dict","moduleName":["Lib"]}},"annotation":{"meta":null,"sourceSpan":{"end":[17,18],"start":[16,1]}},"argument":{"annotation":{"meta":null,"sourceSpan":{"end":[17,18],"start":[16,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":["runTest",{"annotation":[{"end":[14,25],"name":"tests/purus/passing/4310/Lib.purs","start":[14,14]},[]],"contents":[{"annotation":[{"end":[14,25],"name":"tests/purus/passing/4310/Lib.purs","start":[14,14]},[]],"contents":[{"annotation":[{"end":[14,18],"name":"tests/purus/passing/4310/Lib.purs","start":[14,16]},[]],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[16,18],"name":"tests/purus/passing/4310/Lib.purs","start":[16,15]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[{"end":[14,25],"name":"tests/purus/passing/4310/Lib.purs","start":[14,19]},[]],"contents":[["Prim"],"String"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"tag":"REmpty"},{"annotation":[{"end":[14,18],"name":"tests/purus/passing/4310/Lib.purs","start":[14,16]},[]],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"}],"tag":"KindApp"}],"tag":"RCons"}],"tag":"TypeApp"},"value":{"literalType":"ObjectLiteral","value":[["runTest",{"annotation":{"meta":null,"sourceSpan":{"end":[17,18],"start":[17,3]}},"argument":"v","body":{"annotation":{"meta":null,"sourceSpan":{"end":[17,18],"start":[17,15]}},"kind":"Literal","type":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"String"],"tag":"TypeConstructor"},"value":{"literalType":"StringLiteral","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":[16,18],"name":"tests/purus/passing/4310/Lib.purs","start":[16,15]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[{"end":[14,25],"name":"tests/purus/passing/4310/Lib.purs","start":[14,19]},[]],"contents":[["Prim"],"String"],"tag":"TypeConstructor"}],"tag":"TypeApp"}}]]}},"kind":"App"},"identifier":"testInt"},{"annotation":{"meta":null,"sourceSpan":{"end":[14,25],"start":[14,3]}},"bindType":"NonRec","expression":{"annotation":{"meta":null,"sourceSpan":{"end":[14,25],"start":[14,3]}},"argument":"dict","body":{"annotation":{"meta":null,"sourceSpan":{"end":[14,25],"start":[14,3]}},"caseAlternatives":[{"binders":[{"annotation":{"meta":{"metaType":"IsNewtype"},"sourceSpan":{"end":[14,25],"start":[14,3]}},"binderType":"ConstructorBinder","binders":[{"annotation":{"meta":null,"sourceSpan":{"end":[14,25],"start":[14,3]}},"binderType":"VarBinder","identifier":"v"}],"constructorName":{"identifier":"Test$Dict","moduleName":["Lib"]},"typeName":{"identifier":"Test$Dict","moduleName":["Lib"]}}],"expression":{"annotation":{"meta":null,"sourceSpan":{"end":[14,25],"start":[14,3]}},"expression":{"annotation":{"meta":null,"sourceSpan":{"end":[14,25],"start":[14,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":["runTest",{"annotation":[{"end":[14,25],"name":"tests/purus/passing/4310/Lib.purs","start":[14,14]},[]],"contents":[{"annotation":[{"end":[14,25],"name":"tests/purus/passing/4310/Lib.purs","start":[14,14]},[]],"contents":[{"annotation":[{"end":[14,18],"name":"tests/purus/passing/4310/Lib.purs","start":[14,16]},[]],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":{"kind":{"annotation":[{"end":[13,22],"name":"tests/purus/passing/4310/Lib.purs","start":[13,18]},[]],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"},"var":"a"},"tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[{"end":[14,25],"name":"tests/purus/passing/4310/Lib.purs","start":[14,19]},[]],"contents":[["Prim"],"String"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"tag":"REmpty"},{"annotation":[{"end":[14,18],"name":"tests/purus/passing/4310/Lib.purs","start":[14,16]},[]],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"}],"tag":"KindApp"}],"tag":"RCons"}],"tag":"TypeApp"},"value":{"identifier":"v","sourcePos":[14,3]}},"fieldName":"runTest","kind":"Accessor","type":{"annotation":[{"end":[14,25],"name":"tests/purus/passing/4310/Lib.purs","start":[14,14]},[]],"contents":[{"annotation":[{"end":[14,25],"name":"tests/purus/passing/4310/Lib.purs","start":[14,14]},[]],"contents":[{"annotation":[{"end":[14,18],"name":"tests/purus/passing/4310/Lib.purs","start":[14,16]},[]],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[14,15],"name":"tests/purus/passing/4310/Lib.purs","start":[14,14]},[]],"contents":{"kind":{"annotation":[{"end":[13,22],"name":"tests/purus/passing/4310/Lib.purs","start":[13,18]},[]],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"},"var":"a"},"tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[{"end":[14,25],"name":"tests/purus/passing/4310/Lib.purs","start":[14,19]},[]],"contents":[["Prim"],"String"],"tag":"TypeConstructor"}],"tag":"TypeApp"}},"isGuarded":false}],"caseExpressions":[{"annotation":{"meta":null,"sourceSpan":{"end":[14,25],"start":[14,3]}},"kind":"Var","type":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Lib"],"Test$Dict"],"tag":"TypeConstructor"},{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":{"kind":{"annotation":[{"end":[13,22],"name":"tests/purus/passing/4310/Lib.purs","start":[13,18]},[]],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"},"var":"a"},"tag":"TypeVar"}],"tag":"TypeApp"},"value":{"identifier":"dict","sourcePos":[0,0]}}],"kind":"Case","type":{"annotation":[{"end":[14,25],"name":"tests/purus/passing/4310/Lib.purs","start":[14,14]},[]],"contents":[{"annotation":[{"end":[14,25],"name":"tests/purus/passing/4310/Lib.purs","start":[14,14]},[]],"contents":[{"annotation":[{"end":[14,18],"name":"tests/purus/passing/4310/Lib.purs","start":[14,16]},[]],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[14,15],"name":"tests/purus/passing/4310/Lib.purs","start":[14,14]},[]],"contents":{"kind":{"annotation":[{"end":[13,22],"name":"tests/purus/passing/4310/Lib.purs","start":[13,18]},[]],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"},"var":"a"},"tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[{"end":[14,25],"name":"tests/purus/passing/4310/Lib.purs","start":[14,19]},[]],"contents":[["Prim"],"String"],"tag":"TypeConstructor"}],"tag":"TypeApp"}},"kind":"Abs","type":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":{"identifier":"a","kind":{"annotation":[{"end":[13,22],"name":"tests/purus/passing/4310/Lib.purs","start":[13,18]},[]],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"},"skolem":1,"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"],"Test$Dict"],"tag":"TypeConstructor"},{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":{"kind":{"annotation":[{"end":[13,22],"name":"tests/purus/passing/4310/Lib.purs","start":[13,18]},[]],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"},"var":"a"},"tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[{"end":[14,25],"name":"tests/purus/passing/4310/Lib.purs","start":[14,14]},[]],"contents":[{"annotation":[{"end":[14,25],"name":"tests/purus/passing/4310/Lib.purs","start":[14,14]},[]],"contents":[{"annotation":[{"end":[14,18],"name":"tests/purus/passing/4310/Lib.purs","start":[14,16]},[]],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[14,15],"name":"tests/purus/passing/4310/Lib.purs","start":[14,14]},[]],"contents":{"kind":{"annotation":[{"end":[13,22],"name":"tests/purus/passing/4310/Lib.purs","start":[13,18]},[]],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"},"var":"a"},"tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[{"end":[14,25],"name":"tests/purus/passing/4310/Lib.purs","start":[14,19]},[]],"contents":[["Prim"],"String"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"},"visibility":"TypeVarVisible"},"tag":"ForAll"}},"identifier":"runTest"},{"annotation":{"meta":null,"sourceSpan":{"end":[8,38],"start":[8,1]}},"bindType":"NonRec","expression":{"annotation":{"meta":null,"sourceSpan":{"end":[9,24],"start":[9,1]}},"argument":"v","body":{"annotation":{"meta":null,"sourceSpan":{"end":[9,24],"start":[9,1]}},"argument":"v1","body":{"annotation":{"meta":null,"sourceSpan":{"end":[9,24],"start":[9,15]}},"kind":"Literal","type":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"String"],"tag":"TypeConstructor"},"value":{"literalType":"StringLiteral","value":"mappend"}},"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,28],"name":"tests/purus/passing/4310/Lib.purs","start":[8,22]},[]],"contents":[["Prim"],"String"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[{"end":[8,38],"name":"tests/purus/passing/4310/Lib.purs","start":[8,32]},[]],"contents":[["Prim"],"String"],"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,18],"name":"tests/purus/passing/4310/Lib.purs","start":[8,12]},[]],"contents":[["Prim"],"String"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[{"end":[8,38],"name":"tests/purus/passing/4310/Lib.purs","start":[8,22]},[]],"contents":[{"annotation":[{"end":[8,38],"name":"tests/purus/passing/4310/Lib.purs","start":[8,22]},[]],"contents":[{"annotation":[{"end":[8,31],"name":"tests/purus/passing/4310/Lib.purs","start":[8,29]},[]],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[8,28],"name":"tests/purus/passing/4310/Lib.purs","start":[8,22]},[]],"contents":[["Prim"],"String"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[{"end":[8,38],"name":"tests/purus/passing/4310/Lib.purs","start":[8,32]},[]],"contents":[["Prim"],"String"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"identifier":"mappend"},{"annotation":{"meta":null,"sourceSpan":{"end":[20,44],"start":[19,1]}},"bindType":"NonRec","expression":{"annotation":{"meta":null,"sourceSpan":{"end":[0,0],"start":[0,0]}},"argument":"dictTest","body":{"annotation":{"meta":null,"sourceSpan":{"end":[0,0],"start":[0,0]}},"argument":"dictTest1","body":{"abstraction":{"annotation":{"meta":{"metaType":"IsNewtype"},"sourceSpan":{"end":[20,44],"start":[19,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":["runTest",{"annotation":[{"end":[14,25],"name":"tests/purus/passing/4310/Lib.purs","start":[14,14]},[]],"contents":[{"annotation":[{"end":[14,25],"name":"tests/purus/passing/4310/Lib.purs","start":[14,14]},[]],"contents":[{"annotation":[{"end":[14,18],"name":"tests/purus/passing/4310/Lib.purs","start":[14,16]},[]],"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":[20,44],"name":"tests/purus/passing/4310/Lib.purs","start":[19,1]},[]],"contents":[["Lib"],"Tuple"],"tag":"TypeConstructor"},{"annotation":[{"end":[19,69],"name":"tests/purus/passing/4310/Lib.purs","start":[19,68]},[]],"contents":{"kind":{"annotation":[{"end":[19,27],"name":"tests/purus/passing/4310/Lib.purs","start":[19,23]},[]],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"},"var":"a"},"tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[{"end":[19,74],"name":"tests/purus/passing/4310/Lib.purs","start":[19,73]},[]],"contents":{"kind":{"annotation":[{"end":[19,39],"name":"tests/purus/passing/4310/Lib.purs","start":[19,35]},[]],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"},"var":"b"},"tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[{"end":[14,25],"name":"tests/purus/passing/4310/Lib.purs","start":[14,19]},[]],"contents":[["Prim"],"String"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"tag":"REmpty"},{"annotation":[{"end":[14,18],"name":"tests/purus/passing/4310/Lib.purs","start":[14,16]},[]],"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"],"Test$Dict"],"tag":"TypeConstructor"},{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[20,44],"name":"tests/purus/passing/4310/Lib.purs","start":[19,1]},[]],"contents":[["Lib"],"Tuple"],"tag":"TypeConstructor"},{"annotation":[{"end":[19,69],"name":"tests/purus/passing/4310/Lib.purs","start":[19,68]},[]],"contents":{"kind":{"annotation":[{"end":[19,27],"name":"tests/purus/passing/4310/Lib.purs","start":[19,23]},[]],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"},"var":"a"},"tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[{"end":[19,74],"name":"tests/purus/passing/4310/Lib.purs","start":[19,73]},[]],"contents":{"kind":{"annotation":[{"end":[19,39],"name":"tests/purus/passing/4310/Lib.purs","start":[19,35]},[]],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"},"var":"b"},"tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"},"value":{"identifier":"Test$Dict","moduleName":["Lib"]}},"annotation":{"meta":null,"sourceSpan":{"end":[0,0],"start":[0,0]}},"argument":{"annotation":{"meta":null,"sourceSpan":{"end":[0,0],"start":[0,0]}},"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":["runTest",{"annotation":[{"end":[14,25],"name":"tests/purus/passing/4310/Lib.purs","start":[14,14]},[]],"contents":[{"annotation":[{"end":[14,25],"name":"tests/purus/passing/4310/Lib.purs","start":[14,14]},[]],"contents":[{"annotation":[{"end":[14,18],"name":"tests/purus/passing/4310/Lib.purs","start":[14,16]},[]],"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":[20,44],"name":"tests/purus/passing/4310/Lib.purs","start":[19,1]},[]],"contents":[["Lib"],"Tuple"],"tag":"TypeConstructor"},{"annotation":[{"end":[19,69],"name":"tests/purus/passing/4310/Lib.purs","start":[19,68]},[]],"contents":{"kind":{"annotation":[{"end":[19,27],"name":"tests/purus/passing/4310/Lib.purs","start":[19,23]},[]],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"},"var":"a"},"tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[{"end":[19,74],"name":"tests/purus/passing/4310/Lib.purs","start":[19,73]},[]],"contents":{"kind":{"annotation":[{"end":[19,39],"name":"tests/purus/passing/4310/Lib.purs","start":[19,35]},[]],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"},"var":"b"},"tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[{"end":[14,25],"name":"tests/purus/passing/4310/Lib.purs","start":[14,19]},[]],"contents":[["Prim"],"String"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"tag":"REmpty"},{"annotation":[{"end":[14,18],"name":"tests/purus/passing/4310/Lib.purs","start":[14,16]},[]],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"}],"tag":"KindApp"}],"tag":"RCons"}],"tag":"TypeApp"},"value":{"literalType":"ObjectLiteral","value":[["runTest",{"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":{"constructorType":"ProductType","identifiers":["value0","value1"],"metaType":"IsConstructor"},"sourceSpan":{"end":[20,16],"start":[20,14]}},"binderType":"ConstructorBinder","binders":[{"annotation":{"meta":null,"sourceSpan":{"end":[20,13],"start":[20,12]}},"binderType":"VarBinder","identifier":"a"},{"annotation":{"meta":null,"sourceSpan":{"end":[20,18],"start":[20,17]}},"binderType":"VarBinder","identifier":"b"}],"constructorName":{"identifier":"Tuple","moduleName":["Lib"]},"typeName":{"identifier":"Tuple","moduleName":["Lib"]}}],"expression":{"abstraction":{"abstraction":{"annotation":{"meta":null,"sourceSpan":{"end":[20,34],"start":[20,32]}},"kind":"Var","type":{"annotation":[{"end":[8,38],"name":"tests/purus/passing/4310/Lib.purs","start":[8,12]},[]],"contents":[{"annotation":[{"end":[8,38],"name":"tests/purus/passing/4310/Lib.purs","start":[8,12]},[]],"contents":[{"annotation":[{"end":[8,21],"name":"tests/purus/passing/4310/Lib.purs","start":[8,19]},[]],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[8,18],"name":"tests/purus/passing/4310/Lib.purs","start":[8,12]},[]],"contents":[["Prim"],"String"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[{"end":[8,38],"name":"tests/purus/passing/4310/Lib.purs","start":[8,22]},[]],"contents":[{"annotation":[{"end":[8,38],"name":"tests/purus/passing/4310/Lib.purs","start":[8,22]},[]],"contents":[{"annotation":[{"end":[8,31],"name":"tests/purus/passing/4310/Lib.purs","start":[8,29]},[]],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[8,28],"name":"tests/purus/passing/4310/Lib.purs","start":[8,22]},[]],"contents":[["Prim"],"String"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[{"end":[8,38],"name":"tests/purus/passing/4310/Lib.purs","start":[8,32]},[]],"contents":[["Prim"],"String"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"},"value":{"identifier":"mappend","moduleName":["Lib"]}},"annotation":{"meta":null,"sourceSpan":{"end":[20,44],"start":[20,22]}},"argument":{"abstraction":{"abstraction":{"annotation":{"meta":null,"sourceSpan":{"end":[20,29],"start":[20,22]}},"kind":"Var","type":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":{"identifier":"a","kind":{"annotation":[{"end":[13,22],"name":"tests/purus/passing/4310/Lib.purs","start":[13,18]},[]],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"},"skolem":1,"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"],"Test$Dict"],"tag":"TypeConstructor"},{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":{"kind":{"annotation":[{"end":[13,22],"name":"tests/purus/passing/4310/Lib.purs","start":[13,18]},[]],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"},"var":"a"},"tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[{"end":[14,25],"name":"tests/purus/passing/4310/Lib.purs","start":[14,14]},[]],"contents":[{"annotation":[{"end":[14,25],"name":"tests/purus/passing/4310/Lib.purs","start":[14,14]},[]],"contents":[{"annotation":[{"end":[14,18],"name":"tests/purus/passing/4310/Lib.purs","start":[14,16]},[]],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[14,15],"name":"tests/purus/passing/4310/Lib.purs","start":[14,14]},[]],"contents":{"kind":{"annotation":[{"end":[13,22],"name":"tests/purus/passing/4310/Lib.purs","start":[13,18]},[]],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"},"var":"a"},"tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[{"end":[14,25],"name":"tests/purus/passing/4310/Lib.purs","start":[14,19]},[]],"contents":[["Prim"],"String"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"},"visibility":"TypeVarVisible"},"tag":"ForAll"},"value":{"identifier":"runTest","moduleName":["Lib"]}},"annotation":{"meta":null,"sourceSpan":{"end":[20,31],"start":[20,22]}},"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"],"Test$Dict"],"tag":"TypeConstructor"},{"annotation":[{"end":[19,49],"name":"tests/purus/passing/4310/Lib.purs","start":[19,48]},[]],"contents":{"kind":{"annotation":[{"end":[19,27],"name":"tests/purus/passing/4310/Lib.purs","start":[19,23]},[]],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"},"var":"a"},"tag":"TypeVar"}],"tag":"TypeApp"},"value":{"identifier":"dictTest","sourcePos":[0,0]}},"kind":"App"},"annotation":{"meta":null,"sourceSpan":{"end":[20,31],"start":[20,22]}},"argument":{"annotation":{"meta":null,"sourceSpan":{"end":[20,31],"start":[20,30]}},"kind":"Var","type":{"annotation":[{"end":[19,69],"name":"tests/purus/passing/4310/Lib.purs","start":[19,68]},[]],"contents":{"kind":{"annotation":[{"end":[19,27],"name":"tests/purus/passing/4310/Lib.purs","start":[19,23]},[]],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"},"var":"a"},"tag":"TypeVar"},"value":{"identifier":"a","sourcePos":[20,12]}},"kind":"App"},"kind":"App"},"annotation":{"meta":null,"sourceSpan":{"end":[20,44],"start":[20,22]}},"argument":{"abstraction":{"abstraction":{"annotation":{"meta":null,"sourceSpan":{"end":[20,42],"start":[20,35]}},"kind":"Var","type":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":{"identifier":"a","kind":{"annotation":[{"end":[13,22],"name":"tests/purus/passing/4310/Lib.purs","start":[13,18]},[]],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"},"skolem":1,"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"],"Test$Dict"],"tag":"TypeConstructor"},{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":{"kind":{"annotation":[{"end":[13,22],"name":"tests/purus/passing/4310/Lib.purs","start":[13,18]},[]],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"},"var":"a"},"tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[{"end":[14,25],"name":"tests/purus/passing/4310/Lib.purs","start":[14,14]},[]],"contents":[{"annotation":[{"end":[14,25],"name":"tests/purus/passing/4310/Lib.purs","start":[14,14]},[]],"contents":[{"annotation":[{"end":[14,18],"name":"tests/purus/passing/4310/Lib.purs","start":[14,16]},[]],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[14,15],"name":"tests/purus/passing/4310/Lib.purs","start":[14,14]},[]],"contents":{"kind":{"annotation":[{"end":[13,22],"name":"tests/purus/passing/4310/Lib.purs","start":[13,18]},[]],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"},"var":"a"},"tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[{"end":[14,25],"name":"tests/purus/passing/4310/Lib.purs","start":[14,19]},[]],"contents":[["Prim"],"String"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"},"visibility":"TypeVarVisible"},"tag":"ForAll"},"value":{"identifier":"runTest","moduleName":["Lib"]}},"annotation":{"meta":null,"sourceSpan":{"end":[20,44],"start":[20,35]}},"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"],"Test$Dict"],"tag":"TypeConstructor"},{"annotation":[{"end":[19,57],"name":"tests/purus/passing/4310/Lib.purs","start":[19,56]},[]],"contents":{"kind":{"annotation":[{"end":[19,39],"name":"tests/purus/passing/4310/Lib.purs","start":[19,35]},[]],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"},"var":"b"},"tag":"TypeVar"}],"tag":"TypeApp"},"value":{"identifier":"dictTest1","sourcePos":[0,0]}},"kind":"App"},"annotation":{"meta":null,"sourceSpan":{"end":[20,44],"start":[20,35]}},"argument":{"annotation":{"meta":null,"sourceSpan":{"end":[20,44],"start":[20,43]}},"kind":"Var","type":{"annotation":[{"end":[19,74],"name":"tests/purus/passing/4310/Lib.purs","start":[19,73]},[]],"contents":{"kind":{"annotation":[{"end":[19,39],"name":"tests/purus/passing/4310/Lib.purs","start":[19,35]},[]],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"},"var":"b"},"tag":"TypeVar"},"value":{"identifier":"b","sourcePos":[20,17]}},"kind":"App"},"kind":"App"},"isGuarded":false}],"caseExpressions":[{"annotation":{"meta":null,"sourceSpan":{"end":[20,44],"start":[20,3]}},"kind":"Var","type":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[20,44],"name":"tests/purus/passing/4310/Lib.purs","start":[19,1]},[]],"contents":[["Lib"],"Tuple"],"tag":"TypeConstructor"},{"annotation":[{"end":[19,69],"name":"tests/purus/passing/4310/Lib.purs","start":[19,68]},[]],"contents":{"kind":{"annotation":[{"end":[19,27],"name":"tests/purus/passing/4310/Lib.purs","start":[19,23]},[]],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"},"var":"a"},"tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[{"end":[19,74],"name":"tests/purus/passing/4310/Lib.purs","start":[19,73]},[]],"contents":{"kind":{"annotation":[{"end":[19,39],"name":"tests/purus/passing/4310/Lib.purs","start":[19,35]},[]],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"},"var":"b"},"tag":"TypeVar"}],"tag":"TypeApp"},"value":{"identifier":"v","sourcePos":[0,0]}}],"kind":"Case","type":{"annotation":[{"end":[14,25],"name":"tests/purus/passing/4310/Lib.purs","start":[14,19]},[]],"contents":[["Prim"],"String"],"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":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[20,44],"name":"tests/purus/passing/4310/Lib.purs","start":[19,1]},[]],"contents":[["Lib"],"Tuple"],"tag":"TypeConstructor"},{"annotation":[{"end":[19,69],"name":"tests/purus/passing/4310/Lib.purs","start":[19,68]},[]],"contents":{"kind":{"annotation":[{"end":[19,27],"name":"tests/purus/passing/4310/Lib.purs","start":[19,23]},[]],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"},"var":"a"},"tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[{"end":[19,74],"name":"tests/purus/passing/4310/Lib.purs","start":[19,73]},[]],"contents":{"kind":{"annotation":[{"end":[19,39],"name":"tests/purus/passing/4310/Lib.purs","start":[19,35]},[]],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"},"var":"b"},"tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[{"end":[14,25],"name":"tests/purus/passing/4310/Lib.purs","start":[14,19]},[]],"contents":[["Prim"],"String"],"tag":"TypeConstructor"}],"tag":"TypeApp"}}]]}},"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":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Lib"],"Test$Dict"],"tag":"TypeConstructor"},{"annotation":[{"end":[19,57],"name":"tests/purus/passing/4310/Lib.purs","start":[19,56]},[]],"contents":{"kind":{"annotation":[{"end":[19,39],"name":"tests/purus/passing/4310/Lib.purs","start":[19,35]},[]],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"},"var":"b"},"tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Lib"],"Test$Dict"],"tag":"TypeConstructor"},{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[20,44],"name":"tests/purus/passing/4310/Lib.purs","start":[19,1]},[]],"contents":[["Lib"],"Tuple"],"tag":"TypeConstructor"},{"annotation":[{"end":[19,69],"name":"tests/purus/passing/4310/Lib.purs","start":[19,68]},[]],"contents":{"kind":{"annotation":[{"end":[19,27],"name":"tests/purus/passing/4310/Lib.purs","start":[19,23]},[]],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"},"var":"a"},"tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[{"end":[19,74],"name":"tests/purus/passing/4310/Lib.purs","start":[19,73]},[]],"contents":{"kind":{"annotation":[{"end":[19,39],"name":"tests/purus/passing/4310/Lib.purs","start":[19,35]},[]],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"},"var":"b"},"tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"kind":"Abs","type":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":{"identifier":"a","kind":{"annotation":[{"end":[19,27],"name":"tests/purus/passing/4310/Lib.purs","start":[19,23]},[]],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"},"skolem":3,"type":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":{"identifier":"b","kind":{"annotation":[{"end":[19,39],"name":"tests/purus/passing/4310/Lib.purs","start":[19,35]},[]],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"},"skolem":2,"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"],"Test$Dict"],"tag":"TypeConstructor"},{"annotation":[{"end":[19,49],"name":"tests/purus/passing/4310/Lib.purs","start":[19,48]},[]],"contents":{"kind":{"annotation":[{"end":[19,27],"name":"tests/purus/passing/4310/Lib.purs","start":[19,23]},[]],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"},"var":"a"},"tag":"TypeVar"}],"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":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Lib"],"Test$Dict"],"tag":"TypeConstructor"},{"annotation":[{"end":[19,57],"name":"tests/purus/passing/4310/Lib.purs","start":[19,56]},[]],"contents":{"kind":{"annotation":[{"end":[19,39],"name":"tests/purus/passing/4310/Lib.purs","start":[19,35]},[]],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"},"var":"b"},"tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Lib"],"Test$Dict"],"tag":"TypeConstructor"},{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[20,44],"name":"tests/purus/passing/4310/Lib.purs","start":[19,1]},[]],"contents":[["Lib"],"Tuple"],"tag":"TypeConstructor"},{"annotation":[{"end":[19,69],"name":"tests/purus/passing/4310/Lib.purs","start":[19,68]},[]],"contents":{"kind":{"annotation":[{"end":[19,27],"name":"tests/purus/passing/4310/Lib.purs","start":[19,23]},[]],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"},"var":"a"},"tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[{"end":[19,74],"name":"tests/purus/passing/4310/Lib.purs","start":[19,73]},[]],"contents":{"kind":{"annotation":[{"end":[19,39],"name":"tests/purus/passing/4310/Lib.purs","start":[19,35]},[]],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"},"var":"b"},"tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"identifier":"test/\\"}],"exports":["runTest","Tuple","mappend","testInt","test/\\"],"foreign":[],"imports":[{"annotation":{"meta":null,"sourceSpan":{"end":[20,44],"start":[1,1]}},"moduleName":["Builtin"]},{"annotation":{"meta":null,"sourceSpan":{"end":[20,44],"start":[1,1]}},"moduleName":["Lib"]},{"annotation":{"meta":null,"sourceSpan":{"end":[20,44],"start":[1,1]}},"moduleName":["Prim"]}],"moduleName":["Lib"],"modulePath":"tests/purus/passing/4310/Lib.purs","reExports":{},"sourceSpan":{"end":[20,44],"start":[1,1]}} \ No newline at end of file diff --git a/tests/purus/passing/4310/output/Lib/index.cfn.pretty b/tests/purus/passing/4310/output/Lib/index.cfn.pretty index bfd8f93b..7387c489 100644 --- a/tests/purus/passing/4310/output/Lib/index.cfn.pretty +++ b/tests/purus/passing/4310/output/Lib/index.cfn.pretty @@ -7,7 +7,8 @@ Exports: runTest, Tuple, mappend, - testInt + testInt, + test/\ Re-Exports: Foreign: @@ -39,4 +40,33 @@ runTest = .runTest mappend :: Prim.String -> Prim.String -> Prim.String -mappend = \(v: Prim.String) -> \(v1: Prim.String) -> ("mappend": Prim.String) \ No newline at end of file +mappend = \(v: Prim.String) -> \(v1: Prim.String) -> ("mappend": Prim.String) + +test/\ :: forall (a :: Prim.Type) (b :: Prim.Type). Lib.Test$Dict (a :: Prim.Type) -> Lib.Test$Dict (b :: Prim.Type) -> Lib.Test$Dict (Lib.Tuple (a :: Prim.Type) (b :: Prim.Type)) +test/\ = + \(dictTest: Lib.Test$Dict (a :: Prim.Type)) -> + \(dictTest1: Lib.Test$Dict (b :: Prim.Type)) -> + (Test$Dict: { + runTest :: (Lib.Tuple (a :: Prim.Type) (b :: Prim.Type)) -> + Prim.String + } -> + Lib.Test$Dict (Lib.Tuple (a :: Prim.Type) (b :: Prim.Type))) + ({ + runTest: \(v: (Lib.Tuple (a :: Prim.Type) (b :: Prim.Type))) -> + case (v: (Lib.Tuple (a :: Prim.Type) (b :: Prim.Type))) of + Tuple a b -> + (mappend: Prim.String -> Prim.String -> Prim.String) + ((runTest: forall (@a :: Prim.Type). Lib.Test$Dict + (a :: Prim.Type) -> + (a :: Prim.Type) -> Prim.String) + (dictTest: Lib.Test$Dict (a :: Prim.Type)) + (a: (a :: Prim.Type))) + ((runTest: forall (@a :: Prim.Type). Lib.Test$Dict + (a :: Prim.Type) -> + (a :: Prim.Type) -> Prim.String) + (dictTest1: Lib.Test$Dict (b :: Prim.Type)) + (b: (b :: Prim.Type))) + }: { + runTest :: (Lib.Tuple (a :: Prim.Type) (b :: Prim.Type)) -> + Prim.String + }) \ No newline at end of file diff --git a/tests/purus/passing/ForeignKind/Lib.purs b/tests/purus/passing/ForeignKind/Lib.purs index d25ea612..95726877 100644 --- a/tests/purus/passing/ForeignKind/Lib.purs +++ b/tests/purus/passing/ForeignKind/Lib.purs @@ -48,18 +48,12 @@ proxy3 = NatProxy -- TODO: Don't require annotations in fundep class AddNat (l :: Nat) (r :: Nat) (o :: Nat) | l -> r o -{- -instance addNatZero - :: AddNat Zero (r :: Nat) (r :: Nat) +instance forall (r :: Nat). AddNat Zero r r -- TODO: Bind kinds -instance addNatSucc - :: AddNat ((l) :: Nat) ((r) :: Nat) ((o) :: Nat) - => AddNat (Succ ((l) :: Nat)) ((r) :: Nat) (Succ ((o) :: Nat)) +instance forall (l :: Nat) (r :: Nat) (o :: Nat). AddNat l r o + => AddNat (Succ l) r (Succ o) --- use of class - ---addNat :: forall (l :: Nat) (r :: Nat) (o :: Nat). AddNat l r o => NatProxy l -> NatProxy r -> NatProxy o ---addNat _ _ = NatProxy --} +addNat :: forall (l :: Nat) (r :: Nat) (o :: Nat). AddNat l r o => NatProxy l -> NatProxy r -> NatProxy o +addNat _ _ = NatProxy diff --git a/tests/purus/passing/ForeignKind/output/ForeignKinds.Lib/externs.cbor b/tests/purus/passing/ForeignKind/output/ForeignKinds.Lib/externs.cbor index e7c455cb..8c9f97c5 100644 Binary files a/tests/purus/passing/ForeignKind/output/ForeignKinds.Lib/externs.cbor and b/tests/purus/passing/ForeignKind/output/ForeignKinds.Lib/externs.cbor differ diff --git a/tests/purus/passing/ForeignKind/output/ForeignKinds.Lib/index.cfn b/tests/purus/passing/ForeignKind/output/ForeignKinds.Lib/index.cfn index 50ebe278..f86c662d 100644 --- a/tests/purus/passing/ForeignKind/output/ForeignKinds.Lib/index.cfn +++ b/tests/purus/passing/ForeignKind/output/ForeignKinds.Lib/index.cfn @@ -1 +1 @@ -{"builtWith":"0.0.1","comments":[],"dataTypes":{"AddNat$Dict":["newtype",[["l",{"annotation":[{"end":[49,23],"name":"tests/purus/passing/ForeignKind/Lib.purs","start":[49,20]},[]],"contents":[["ForeignKinds","Lib"],"Nat"],"tag":"TypeConstructor"}],["r",{"annotation":[{"end":[49,34],"name":"tests/purus/passing/ForeignKind/Lib.purs","start":[49,31]},[]],"contents":[["ForeignKinds","Lib"],"Nat"],"tag":"TypeConstructor"}],["o",{"annotation":[{"end":[49,45],"name":"tests/purus/passing/ForeignKind/Lib.purs","start":[49,42]},[]],"contents":[["ForeignKinds","Lib"],"Nat"],"tag":"TypeConstructor"}]],[{"dataCtorAnn":[{"end":[49,57],"name":"tests/purus/passing/ForeignKind/Lib.purs","start":[49,1]},[{"LineComment":" use in class"},{"LineComment":" TODO: Don't require annotations in fundep"}]],"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":"AddNat$Dict"}]],"Nat":["data",[],[]],"NatProxy":["data",[["t",{"annotation":[{"end":[14,24],"name":"tests/purus/passing/ForeignKind/Lib.purs","start":[14,21]},[]],"contents":[["ForeignKinds","Lib"],"Nat"],"tag":"TypeConstructor"}]],[{"dataCtorAnn":[{"end":[14,36],"name":"tests/purus/passing/ForeignKind/Lib.purs","start":[14,26]},[]],"dataCtorFields":[],"dataCtorName":"NatProxy"}]]},"decls":[{"annotation":{"meta":null,"sourceSpan":{"end":[14,36],"start":[14,1]}},"bindType":"NonRec","expression":{"annotation":{"meta":null,"sourceSpan":{"end":[14,36],"start":[14,1]}},"constructorName":"NatProxy","fieldNames":[],"kind":"Constructor","type":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":{"identifier":"t","kind":{"annotation":[{"end":[14,24],"name":"tests/purus/passing/ForeignKind/Lib.purs","start":[14,21]},[]],"contents":[["ForeignKinds","Lib"],"Nat"],"tag":"TypeConstructor"},"skolem":null,"type":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["ForeignKinds","Lib"],"NatProxy"],"tag":"TypeConstructor"},{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":{"kind":{"annotation":[{"end":[14,24],"name":"tests/purus/passing/ForeignKind/Lib.purs","start":[14,21]},[]],"contents":[["ForeignKinds","Lib"],"Nat"],"tag":"TypeConstructor"},"var":"t"},"tag":"TypeVar"}],"tag":"TypeApp"},"visibility":"TypeVarVisible"},"tag":"ForAll"},"typeName":"NatProxy"},"identifier":"NatProxy"},{"annotation":{"meta":{"metaType":"IsTypeClassConstructor"},"sourceSpan":{"end":[49,57],"start":[49,1]}},"bindType":"NonRec","expression":{"annotation":{"meta":{"metaType":"IsNewtype"},"sourceSpan":{"end":[49,57],"start":[49,1]}},"argument":"x","body":{"annotation":{"meta":null,"sourceSpan":{"end":[49,57],"start":[49,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":"AddNat$Dict"},{"annotation":{"meta":null,"sourceSpan":{"end":[18,64],"start":[18,1]}},"bindType":"NonRec","expression":{"annotation":{"meta":null,"sourceSpan":{"end":[19,23],"start":[19,1]}},"argument":"v","body":{"annotation":{"meta":{"constructorType":"ProductType","identifiers":[],"metaType":"IsConstructor"},"sourceSpan":{"end":[19,23],"start":[19,15]}},"kind":"Var","type":{"annotation":[{"end":[18,64],"name":"tests/purus/passing/ForeignKind/Lib.purs","start":[18,47]},[]],"contents":[{"annotation":[{"end":[18,55],"name":"tests/purus/passing/ForeignKind/Lib.purs","start":[18,47]},[]],"contents":[["ForeignKinds","Lib"],"NatProxy"],"tag":"TypeConstructor"},{"annotation":[{"end":[18,63],"name":"tests/purus/passing/ForeignKind/Lib.purs","start":[18,57]},[]],"contents":[{"annotation":[{"end":[18,61],"name":"tests/purus/passing/ForeignKind/Lib.purs","start":[18,57]},[]],"contents":[["ForeignKinds","Lib"],"Succ"],"tag":"TypeConstructor"},{"annotation":[{"end":[18,63],"name":"tests/purus/passing/ForeignKind/Lib.purs","start":[18,62]},[]],"contents":{"kind":{"annotation":[{"end":[18,30],"name":"tests/purus/passing/ForeignKind/Lib.purs","start":[18,27]},[]],"contents":[["ForeignKinds","Lib"],"Nat"],"tag":"TypeConstructor"},"var":"n"},"tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"},"value":{"identifier":"NatProxy","moduleName":["ForeignKinds","Lib"]}},"kind":"Abs","type":{"annotation":[{"end":[18,64],"name":"tests/purus/passing/ForeignKind/Lib.purs","start":[18,14]},[]],"contents":{"identifier":"n","kind":{"annotation":[{"end":[18,30],"name":"tests/purus/passing/ForeignKind/Lib.purs","start":[18,27]},[]],"contents":[["ForeignKinds","Lib"],"Nat"],"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":[18,43],"name":"tests/purus/passing/ForeignKind/Lib.purs","start":[18,33]},[]],"contents":[{"annotation":[{"end":[18,41],"name":"tests/purus/passing/ForeignKind/Lib.purs","start":[18,33]},[]],"contents":[["ForeignKinds","Lib"],"NatProxy"],"tag":"TypeConstructor"},{"annotation":[{"end":[18,43],"name":"tests/purus/passing/ForeignKind/Lib.purs","start":[18,42]},[]],"contents":{"kind":{"annotation":[{"end":[18,30],"name":"tests/purus/passing/ForeignKind/Lib.purs","start":[18,27]},[]],"contents":[["ForeignKinds","Lib"],"Nat"],"tag":"TypeConstructor"},"var":"n"},"tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[{"end":[18,64],"name":"tests/purus/passing/ForeignKind/Lib.purs","start":[18,47]},[]],"contents":[{"annotation":[{"end":[18,55],"name":"tests/purus/passing/ForeignKind/Lib.purs","start":[18,47]},[]],"contents":[["ForeignKinds","Lib"],"NatProxy"],"tag":"TypeConstructor"},{"annotation":[{"end":[18,63],"name":"tests/purus/passing/ForeignKind/Lib.purs","start":[18,57]},[]],"contents":[{"annotation":[{"end":[18,61],"name":"tests/purus/passing/ForeignKind/Lib.purs","start":[18,57]},[]],"contents":[["ForeignKinds","Lib"],"Succ"],"tag":"TypeConstructor"},{"annotation":[{"end":[18,63],"name":"tests/purus/passing/ForeignKind/Lib.purs","start":[18,62]},[]],"contents":{"kind":{"annotation":[{"end":[18,30],"name":"tests/purus/passing/ForeignKind/Lib.purs","start":[18,27]},[]],"contents":[["ForeignKinds","Lib"],"Nat"],"tag":"TypeConstructor"},"var":"n"},"tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"identifier":"succProxy"},{"annotation":{"meta":null,"sourceSpan":{"end":[43,22],"start":[43,1]}},"bindType":"NonRec","expression":{"annotation":{"meta":{"constructorType":"ProductType","identifiers":[],"metaType":"IsConstructor"},"sourceSpan":{"end":[44,18],"start":[44,10]}},"kind":"Var","type":{"annotation":[{"end":[43,22],"name":"tests/purus/passing/ForeignKind/Lib.purs","start":[43,11]},[]],"contents":[{"annotation":[{"end":[43,19],"name":"tests/purus/passing/ForeignKind/Lib.purs","start":[43,11]},[]],"contents":[["ForeignKinds","Lib"],"NatProxy"],"tag":"TypeConstructor"},{"annotation":[{"end":[30,18],"name":"tests/purus/passing/ForeignKind/Lib.purs","start":[30,11]},[]],"contents":[{"annotation":[{"end":[30,15],"name":"tests/purus/passing/ForeignKind/Lib.purs","start":[30,11]},[]],"contents":[["ForeignKinds","Lib"],"Succ"],"tag":"TypeConstructor"},{"annotation":[{"end":[29,18],"name":"tests/purus/passing/ForeignKind/Lib.purs","start":[29,11]},[]],"contents":[{"annotation":[{"end":[29,15],"name":"tests/purus/passing/ForeignKind/Lib.purs","start":[29,11]},[]],"contents":[["ForeignKinds","Lib"],"Succ"],"tag":"TypeConstructor"},{"annotation":[{"end":[28,18],"name":"tests/purus/passing/ForeignKind/Lib.purs","start":[28,11]},[]],"contents":[{"annotation":[{"end":[28,15],"name":"tests/purus/passing/ForeignKind/Lib.purs","start":[28,11]},[]],"contents":[["ForeignKinds","Lib"],"Succ"],"tag":"TypeConstructor"},{"annotation":[{"end":[27,15],"name":"tests/purus/passing/ForeignKind/Lib.purs","start":[27,11]},[]],"contents":[["ForeignKinds","Lib"],"Zero"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"},"value":{"identifier":"NatProxy","moduleName":["ForeignKinds","Lib"]}},"identifier":"proxy3"},{"annotation":{"meta":null,"sourceSpan":{"end":[40,22],"start":[40,1]}},"bindType":"NonRec","expression":{"annotation":{"meta":{"constructorType":"ProductType","identifiers":[],"metaType":"IsConstructor"},"sourceSpan":{"end":[41,18],"start":[41,10]}},"kind":"Var","type":{"annotation":[{"end":[40,22],"name":"tests/purus/passing/ForeignKind/Lib.purs","start":[40,11]},[]],"contents":[{"annotation":[{"end":[40,19],"name":"tests/purus/passing/ForeignKind/Lib.purs","start":[40,11]},[]],"contents":[["ForeignKinds","Lib"],"NatProxy"],"tag":"TypeConstructor"},{"annotation":[{"end":[29,18],"name":"tests/purus/passing/ForeignKind/Lib.purs","start":[29,11]},[]],"contents":[{"annotation":[{"end":[29,15],"name":"tests/purus/passing/ForeignKind/Lib.purs","start":[29,11]},[]],"contents":[["ForeignKinds","Lib"],"Succ"],"tag":"TypeConstructor"},{"annotation":[{"end":[28,18],"name":"tests/purus/passing/ForeignKind/Lib.purs","start":[28,11]},[]],"contents":[{"annotation":[{"end":[28,15],"name":"tests/purus/passing/ForeignKind/Lib.purs","start":[28,11]},[]],"contents":[["ForeignKinds","Lib"],"Succ"],"tag":"TypeConstructor"},{"annotation":[{"end":[27,15],"name":"tests/purus/passing/ForeignKind/Lib.purs","start":[27,11]},[]],"contents":[["ForeignKinds","Lib"],"Zero"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"},"value":{"identifier":"NatProxy","moduleName":["ForeignKinds","Lib"]}},"identifier":"proxy2"},{"annotation":{"meta":null,"sourceSpan":{"end":[37,22],"start":[37,1]}},"bindType":"NonRec","expression":{"annotation":{"meta":{"constructorType":"ProductType","identifiers":[],"metaType":"IsConstructor"},"sourceSpan":{"end":[38,18],"start":[38,10]}},"kind":"Var","type":{"annotation":[{"end":[37,22],"name":"tests/purus/passing/ForeignKind/Lib.purs","start":[37,11]},[]],"contents":[{"annotation":[{"end":[37,19],"name":"tests/purus/passing/ForeignKind/Lib.purs","start":[37,11]},[]],"contents":[["ForeignKinds","Lib"],"NatProxy"],"tag":"TypeConstructor"},{"annotation":[{"end":[28,18],"name":"tests/purus/passing/ForeignKind/Lib.purs","start":[28,11]},[]],"contents":[{"annotation":[{"end":[28,15],"name":"tests/purus/passing/ForeignKind/Lib.purs","start":[28,11]},[]],"contents":[["ForeignKinds","Lib"],"Succ"],"tag":"TypeConstructor"},{"annotation":[{"end":[27,15],"name":"tests/purus/passing/ForeignKind/Lib.purs","start":[27,11]},[]],"contents":[["ForeignKinds","Lib"],"Zero"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"},"value":{"identifier":"NatProxy","moduleName":["ForeignKinds","Lib"]}},"identifier":"proxy1"},{"annotation":{"meta":null,"sourceSpan":{"end":[34,22],"start":[34,1]}},"bindType":"NonRec","expression":{"annotation":{"meta":{"constructorType":"ProductType","identifiers":[],"metaType":"IsConstructor"},"sourceSpan":{"end":[35,18],"start":[35,10]}},"kind":"Var","type":{"annotation":[{"end":[34,22],"name":"tests/purus/passing/ForeignKind/Lib.purs","start":[34,11]},[]],"contents":[{"annotation":[{"end":[34,19],"name":"tests/purus/passing/ForeignKind/Lib.purs","start":[34,11]},[]],"contents":[["ForeignKinds","Lib"],"NatProxy"],"tag":"TypeConstructor"},{"annotation":[{"end":[27,15],"name":"tests/purus/passing/ForeignKind/Lib.purs","start":[27,11]},[]],"contents":[["ForeignKinds","Lib"],"Zero"],"tag":"TypeConstructor"}],"tag":"TypeApp"},"value":{"identifier":"NatProxy","moduleName":["ForeignKinds","Lib"]}},"identifier":"proxy0"}],"exports":["NatProxy","succProxy","proxy0","proxy1","proxy2","proxy3"],"foreign":[],"imports":[{"annotation":{"meta":null,"sourceSpan":{"end":[49,57],"start":[1,1]}},"moduleName":["Builtin"]},{"annotation":{"meta":null,"sourceSpan":{"end":[49,57],"start":[1,1]}},"moduleName":["ForeignKinds","Lib"]},{"annotation":{"meta":null,"sourceSpan":{"end":[49,57],"start":[1,1]}},"moduleName":["Prim"]}],"moduleName":["ForeignKinds","Lib"],"modulePath":"tests/purus/passing/ForeignKind/Lib.purs","reExports":{},"sourceSpan":{"end":[49,57],"start":[1,1]}} \ No newline at end of file +{"builtWith":"0.0.1","comments":[],"dataTypes":{"AddNat$Dict":["newtype",[["l",{"annotation":[{"end":[49,23],"name":"tests/purus/passing/ForeignKind/Lib.purs","start":[49,20]},[]],"contents":[["ForeignKinds","Lib"],"Nat"],"tag":"TypeConstructor"}],["r",{"annotation":[{"end":[49,34],"name":"tests/purus/passing/ForeignKind/Lib.purs","start":[49,31]},[]],"contents":[["ForeignKinds","Lib"],"Nat"],"tag":"TypeConstructor"}],["o",{"annotation":[{"end":[49,45],"name":"tests/purus/passing/ForeignKind/Lib.purs","start":[49,42]},[]],"contents":[["ForeignKinds","Lib"],"Nat"],"tag":"TypeConstructor"}]],[{"dataCtorAnn":[{"end":[49,57],"name":"tests/purus/passing/ForeignKind/Lib.purs","start":[49,1]},[{"LineComment":" use in class"},{"LineComment":" TODO: Don't require annotations in fundep"}]],"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":"AddNat$Dict"}]],"Nat":["data",[],[]],"NatProxy":["data",[["t",{"annotation":[{"end":[14,24],"name":"tests/purus/passing/ForeignKind/Lib.purs","start":[14,21]},[]],"contents":[["ForeignKinds","Lib"],"Nat"],"tag":"TypeConstructor"}]],[{"dataCtorAnn":[{"end":[14,36],"name":"tests/purus/passing/ForeignKind/Lib.purs","start":[14,26]},[]],"dataCtorFields":[],"dataCtorName":"NatProxy"}]]},"decls":[{"annotation":{"meta":null,"sourceSpan":{"end":[14,36],"start":[14,1]}},"bindType":"NonRec","expression":{"annotation":{"meta":null,"sourceSpan":{"end":[14,36],"start":[14,1]}},"constructorName":"NatProxy","fieldNames":[],"kind":"Constructor","type":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":{"identifier":"t","kind":{"annotation":[{"end":[14,24],"name":"tests/purus/passing/ForeignKind/Lib.purs","start":[14,21]},[]],"contents":[["ForeignKinds","Lib"],"Nat"],"tag":"TypeConstructor"},"skolem":null,"type":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["ForeignKinds","Lib"],"NatProxy"],"tag":"TypeConstructor"},{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":{"kind":{"annotation":[{"end":[14,24],"name":"tests/purus/passing/ForeignKind/Lib.purs","start":[14,21]},[]],"contents":[["ForeignKinds","Lib"],"Nat"],"tag":"TypeConstructor"},"var":"t"},"tag":"TypeVar"}],"tag":"TypeApp"},"visibility":"TypeVarVisible"},"tag":"ForAll"},"typeName":"NatProxy"},"identifier":"NatProxy"},{"annotation":{"meta":{"metaType":"IsTypeClassConstructor"},"sourceSpan":{"end":[49,57],"start":[49,1]}},"bindType":"NonRec","expression":{"annotation":{"meta":{"metaType":"IsNewtype"},"sourceSpan":{"end":[49,57],"start":[49,1]}},"argument":"x","body":{"annotation":{"meta":null,"sourceSpan":{"end":[49,57],"start":[49,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":"AddNat$Dict"},{"annotation":{"meta":null,"sourceSpan":{"end":[51,44],"start":[51,1]}},"bindType":"NonRec","expression":{"abstraction":{"annotation":{"meta":{"metaType":"IsNewtype"},"sourceSpan":{"end":[51,44],"start":[51,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":[{"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":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["ForeignKinds","Lib"],"AddNat$Dict"],"tag":"TypeConstructor"},{"annotation":[{"end":[51,40],"name":"tests/purus/passing/ForeignKind/Lib.purs","start":[51,36]},[]],"contents":[["ForeignKinds","Lib"],"Zero"],"tag":"TypeConstructor"}],"tag":"TypeApp"},{"annotation":[{"end":[51,42],"name":"tests/purus/passing/ForeignKind/Lib.purs","start":[51,41]},[]],"contents":{"kind":{"annotation":[{"end":[51,26],"name":"tests/purus/passing/ForeignKind/Lib.purs","start":[51,23]},[]],"contents":[["ForeignKinds","Lib"],"Nat"],"tag":"TypeConstructor"},"var":"r"},"tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[{"end":[51,42],"name":"tests/purus/passing/ForeignKind/Lib.purs","start":[51,41]},[]],"contents":{"kind":{"annotation":[{"end":[51,26],"name":"tests/purus/passing/ForeignKind/Lib.purs","start":[51,23]},[]],"contents":[["ForeignKinds","Lib"],"Nat"],"tag":"TypeConstructor"},"var":"r"},"tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"},"value":{"identifier":"AddNat$Dict","moduleName":["ForeignKinds","Lib"]}},"annotation":{"meta":null,"sourceSpan":{"end":[51,44],"start":[51,1]}},"argument":{"annotation":{"meta":null,"sourceSpan":{"end":[51,44],"start":[51,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":[{"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"},"value":{"literalType":"ObjectLiteral","value":[]}},"kind":"App"},"identifier":"addNatZero"},{"annotation":{"meta":null,"sourceSpan":{"end":[56,32],"start":[55,1]}},"bindType":"NonRec","expression":{"annotation":{"meta":null,"sourceSpan":{"end":[0,0],"start":[0,0]}},"argument":"$__unused","body":{"abstraction":{"annotation":{"meta":{"metaType":"IsNewtype"},"sourceSpan":{"end":[56,32],"start":[55,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":[{"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":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["ForeignKinds","Lib"],"AddNat$Dict"],"tag":"TypeConstructor"},{"annotation":[{"end":[56,20],"name":"tests/purus/passing/ForeignKind/Lib.purs","start":[56,14]},[]],"contents":[{"annotation":[{"end":[56,18],"name":"tests/purus/passing/ForeignKind/Lib.purs","start":[56,14]},[]],"contents":[["ForeignKinds","Lib"],"Succ"],"tag":"TypeConstructor"},{"annotation":[{"end":[56,20],"name":"tests/purus/passing/ForeignKind/Lib.purs","start":[56,19]},[]],"contents":{"kind":{"annotation":[{"end":[55,26],"name":"tests/purus/passing/ForeignKind/Lib.purs","start":[55,23]},[]],"contents":[["ForeignKinds","Lib"],"Nat"],"tag":"TypeConstructor"},"var":"l"},"tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[{"end":[56,23],"name":"tests/purus/passing/ForeignKind/Lib.purs","start":[56,22]},[]],"contents":{"kind":{"annotation":[{"end":[55,37],"name":"tests/purus/passing/ForeignKind/Lib.purs","start":[55,34]},[]],"contents":[["ForeignKinds","Lib"],"Nat"],"tag":"TypeConstructor"},"var":"r"},"tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[{"end":[56,31],"name":"tests/purus/passing/ForeignKind/Lib.purs","start":[56,25]},[]],"contents":[{"annotation":[{"end":[56,29],"name":"tests/purus/passing/ForeignKind/Lib.purs","start":[56,25]},[]],"contents":[["ForeignKinds","Lib"],"Succ"],"tag":"TypeConstructor"},{"annotation":[{"end":[56,31],"name":"tests/purus/passing/ForeignKind/Lib.purs","start":[56,30]},[]],"contents":{"kind":{"annotation":[{"end":[55,48],"name":"tests/purus/passing/ForeignKind/Lib.purs","start":[55,45]},[]],"contents":[["ForeignKinds","Lib"],"Nat"],"tag":"TypeConstructor"},"var":"o"},"tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"},"value":{"identifier":"AddNat$Dict","moduleName":["ForeignKinds","Lib"]}},"annotation":{"meta":null,"sourceSpan":{"end":[0,0],"start":[0,0]}},"argument":{"annotation":{"meta":null,"sourceSpan":{"end":[0,0],"start":[0,0]}},"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":[{"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"},"value":{"literalType":"ObjectLiteral","value":[]}},"kind":"App"},"kind":"Abs","type":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":{"identifier":"l","kind":{"annotation":[{"end":[55,26],"name":"tests/purus/passing/ForeignKind/Lib.purs","start":[55,23]},[]],"contents":[["ForeignKinds","Lib"],"Nat"],"tag":"TypeConstructor"},"skolem":7,"type":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":{"identifier":"r","kind":{"annotation":[{"end":[55,37],"name":"tests/purus/passing/ForeignKind/Lib.purs","start":[55,34]},[]],"contents":[["ForeignKinds","Lib"],"Nat"],"tag":"TypeConstructor"},"skolem":6,"type":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":{"identifier":"o","kind":{"annotation":[{"end":[55,48],"name":"tests/purus/passing/ForeignKind/Lib.purs","start":[55,45]},[]],"contents":[["ForeignKinds","Lib"],"Nat"],"tag":"TypeConstructor"},"skolem":5,"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":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["ForeignKinds","Lib"],"AddNat$Dict"],"tag":"TypeConstructor"},{"annotation":[{"end":[55,59],"name":"tests/purus/passing/ForeignKind/Lib.purs","start":[55,58]},[]],"contents":{"kind":{"annotation":[{"end":[55,26],"name":"tests/purus/passing/ForeignKind/Lib.purs","start":[55,23]},[]],"contents":[["ForeignKinds","Lib"],"Nat"],"tag":"TypeConstructor"},"var":"l"},"tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[{"end":[55,61],"name":"tests/purus/passing/ForeignKind/Lib.purs","start":[55,60]},[]],"contents":{"kind":{"annotation":[{"end":[55,37],"name":"tests/purus/passing/ForeignKind/Lib.purs","start":[55,34]},[]],"contents":[["ForeignKinds","Lib"],"Nat"],"tag":"TypeConstructor"},"var":"r"},"tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[{"end":[55,63],"name":"tests/purus/passing/ForeignKind/Lib.purs","start":[55,62]},[]],"contents":{"kind":{"annotation":[{"end":[55,48],"name":"tests/purus/passing/ForeignKind/Lib.purs","start":[55,45]},[]],"contents":[["ForeignKinds","Lib"],"Nat"],"tag":"TypeConstructor"},"var":"o"},"tag":"TypeVar"}],"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":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["ForeignKinds","Lib"],"AddNat$Dict"],"tag":"TypeConstructor"},{"annotation":[{"end":[56,20],"name":"tests/purus/passing/ForeignKind/Lib.purs","start":[56,14]},[]],"contents":[{"annotation":[{"end":[56,18],"name":"tests/purus/passing/ForeignKind/Lib.purs","start":[56,14]},[]],"contents":[["ForeignKinds","Lib"],"Succ"],"tag":"TypeConstructor"},{"annotation":[{"end":[56,20],"name":"tests/purus/passing/ForeignKind/Lib.purs","start":[56,19]},[]],"contents":{"kind":{"annotation":[{"end":[55,26],"name":"tests/purus/passing/ForeignKind/Lib.purs","start":[55,23]},[]],"contents":[["ForeignKinds","Lib"],"Nat"],"tag":"TypeConstructor"},"var":"l"},"tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[{"end":[56,23],"name":"tests/purus/passing/ForeignKind/Lib.purs","start":[56,22]},[]],"contents":{"kind":{"annotation":[{"end":[55,37],"name":"tests/purus/passing/ForeignKind/Lib.purs","start":[55,34]},[]],"contents":[["ForeignKinds","Lib"],"Nat"],"tag":"TypeConstructor"},"var":"r"},"tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[{"end":[56,31],"name":"tests/purus/passing/ForeignKind/Lib.purs","start":[56,25]},[]],"contents":[{"annotation":[{"end":[56,29],"name":"tests/purus/passing/ForeignKind/Lib.purs","start":[56,25]},[]],"contents":[["ForeignKinds","Lib"],"Succ"],"tag":"TypeConstructor"},{"annotation":[{"end":[56,31],"name":"tests/purus/passing/ForeignKind/Lib.purs","start":[56,30]},[]],"contents":{"kind":{"annotation":[{"end":[55,48],"name":"tests/purus/passing/ForeignKind/Lib.purs","start":[55,45]},[]],"contents":[["ForeignKinds","Lib"],"Nat"],"tag":"TypeConstructor"},"var":"o"},"tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"identifier":"addNatSuccSucc"},{"annotation":{"meta":null,"sourceSpan":{"end":[18,64],"start":[18,1]}},"bindType":"NonRec","expression":{"annotation":{"meta":null,"sourceSpan":{"end":[19,23],"start":[19,1]}},"argument":"v","body":{"annotation":{"meta":{"constructorType":"ProductType","identifiers":[],"metaType":"IsConstructor"},"sourceSpan":{"end":[19,23],"start":[19,15]}},"kind":"Var","type":{"annotation":[{"end":[18,64],"name":"tests/purus/passing/ForeignKind/Lib.purs","start":[18,47]},[]],"contents":[{"annotation":[{"end":[18,55],"name":"tests/purus/passing/ForeignKind/Lib.purs","start":[18,47]},[]],"contents":[["ForeignKinds","Lib"],"NatProxy"],"tag":"TypeConstructor"},{"annotation":[{"end":[18,63],"name":"tests/purus/passing/ForeignKind/Lib.purs","start":[18,57]},[]],"contents":[{"annotation":[{"end":[18,61],"name":"tests/purus/passing/ForeignKind/Lib.purs","start":[18,57]},[]],"contents":[["ForeignKinds","Lib"],"Succ"],"tag":"TypeConstructor"},{"annotation":[{"end":[18,63],"name":"tests/purus/passing/ForeignKind/Lib.purs","start":[18,62]},[]],"contents":{"kind":{"annotation":[{"end":[18,30],"name":"tests/purus/passing/ForeignKind/Lib.purs","start":[18,27]},[]],"contents":[["ForeignKinds","Lib"],"Nat"],"tag":"TypeConstructor"},"var":"n"},"tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"},"value":{"identifier":"NatProxy","moduleName":["ForeignKinds","Lib"]}},"kind":"Abs","type":{"annotation":[{"end":[18,64],"name":"tests/purus/passing/ForeignKind/Lib.purs","start":[18,14]},[]],"contents":{"identifier":"n","kind":{"annotation":[{"end":[18,30],"name":"tests/purus/passing/ForeignKind/Lib.purs","start":[18,27]},[]],"contents":[["ForeignKinds","Lib"],"Nat"],"tag":"TypeConstructor"},"skolem":14,"type":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[18,43],"name":"tests/purus/passing/ForeignKind/Lib.purs","start":[18,33]},[]],"contents":[{"annotation":[{"end":[18,41],"name":"tests/purus/passing/ForeignKind/Lib.purs","start":[18,33]},[]],"contents":[["ForeignKinds","Lib"],"NatProxy"],"tag":"TypeConstructor"},{"annotation":[{"end":[18,43],"name":"tests/purus/passing/ForeignKind/Lib.purs","start":[18,42]},[]],"contents":{"kind":{"annotation":[{"end":[18,30],"name":"tests/purus/passing/ForeignKind/Lib.purs","start":[18,27]},[]],"contents":[["ForeignKinds","Lib"],"Nat"],"tag":"TypeConstructor"},"var":"n"},"tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[{"end":[18,64],"name":"tests/purus/passing/ForeignKind/Lib.purs","start":[18,47]},[]],"contents":[{"annotation":[{"end":[18,55],"name":"tests/purus/passing/ForeignKind/Lib.purs","start":[18,47]},[]],"contents":[["ForeignKinds","Lib"],"NatProxy"],"tag":"TypeConstructor"},{"annotation":[{"end":[18,63],"name":"tests/purus/passing/ForeignKind/Lib.purs","start":[18,57]},[]],"contents":[{"annotation":[{"end":[18,61],"name":"tests/purus/passing/ForeignKind/Lib.purs","start":[18,57]},[]],"contents":[["ForeignKinds","Lib"],"Succ"],"tag":"TypeConstructor"},{"annotation":[{"end":[18,63],"name":"tests/purus/passing/ForeignKind/Lib.purs","start":[18,62]},[]],"contents":{"kind":{"annotation":[{"end":[18,30],"name":"tests/purus/passing/ForeignKind/Lib.purs","start":[18,27]},[]],"contents":[["ForeignKinds","Lib"],"Nat"],"tag":"TypeConstructor"},"var":"n"},"tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"identifier":"succProxy"},{"annotation":{"meta":null,"sourceSpan":{"end":[43,22],"start":[43,1]}},"bindType":"NonRec","expression":{"annotation":{"meta":{"constructorType":"ProductType","identifiers":[],"metaType":"IsConstructor"},"sourceSpan":{"end":[44,18],"start":[44,10]}},"kind":"Var","type":{"annotation":[{"end":[43,22],"name":"tests/purus/passing/ForeignKind/Lib.purs","start":[43,11]},[]],"contents":[{"annotation":[{"end":[43,19],"name":"tests/purus/passing/ForeignKind/Lib.purs","start":[43,11]},[]],"contents":[["ForeignKinds","Lib"],"NatProxy"],"tag":"TypeConstructor"},{"annotation":[{"end":[30,18],"name":"tests/purus/passing/ForeignKind/Lib.purs","start":[30,11]},[]],"contents":[{"annotation":[{"end":[30,15],"name":"tests/purus/passing/ForeignKind/Lib.purs","start":[30,11]},[]],"contents":[["ForeignKinds","Lib"],"Succ"],"tag":"TypeConstructor"},{"annotation":[{"end":[29,18],"name":"tests/purus/passing/ForeignKind/Lib.purs","start":[29,11]},[]],"contents":[{"annotation":[{"end":[29,15],"name":"tests/purus/passing/ForeignKind/Lib.purs","start":[29,11]},[]],"contents":[["ForeignKinds","Lib"],"Succ"],"tag":"TypeConstructor"},{"annotation":[{"end":[28,18],"name":"tests/purus/passing/ForeignKind/Lib.purs","start":[28,11]},[]],"contents":[{"annotation":[{"end":[28,15],"name":"tests/purus/passing/ForeignKind/Lib.purs","start":[28,11]},[]],"contents":[["ForeignKinds","Lib"],"Succ"],"tag":"TypeConstructor"},{"annotation":[{"end":[27,15],"name":"tests/purus/passing/ForeignKind/Lib.purs","start":[27,11]},[]],"contents":[["ForeignKinds","Lib"],"Zero"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"},"value":{"identifier":"NatProxy","moduleName":["ForeignKinds","Lib"]}},"identifier":"proxy3"},{"annotation":{"meta":null,"sourceSpan":{"end":[40,22],"start":[40,1]}},"bindType":"NonRec","expression":{"annotation":{"meta":{"constructorType":"ProductType","identifiers":[],"metaType":"IsConstructor"},"sourceSpan":{"end":[41,18],"start":[41,10]}},"kind":"Var","type":{"annotation":[{"end":[40,22],"name":"tests/purus/passing/ForeignKind/Lib.purs","start":[40,11]},[]],"contents":[{"annotation":[{"end":[40,19],"name":"tests/purus/passing/ForeignKind/Lib.purs","start":[40,11]},[]],"contents":[["ForeignKinds","Lib"],"NatProxy"],"tag":"TypeConstructor"},{"annotation":[{"end":[29,18],"name":"tests/purus/passing/ForeignKind/Lib.purs","start":[29,11]},[]],"contents":[{"annotation":[{"end":[29,15],"name":"tests/purus/passing/ForeignKind/Lib.purs","start":[29,11]},[]],"contents":[["ForeignKinds","Lib"],"Succ"],"tag":"TypeConstructor"},{"annotation":[{"end":[28,18],"name":"tests/purus/passing/ForeignKind/Lib.purs","start":[28,11]},[]],"contents":[{"annotation":[{"end":[28,15],"name":"tests/purus/passing/ForeignKind/Lib.purs","start":[28,11]},[]],"contents":[["ForeignKinds","Lib"],"Succ"],"tag":"TypeConstructor"},{"annotation":[{"end":[27,15],"name":"tests/purus/passing/ForeignKind/Lib.purs","start":[27,11]},[]],"contents":[["ForeignKinds","Lib"],"Zero"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"},"value":{"identifier":"NatProxy","moduleName":["ForeignKinds","Lib"]}},"identifier":"proxy2"},{"annotation":{"meta":null,"sourceSpan":{"end":[37,22],"start":[37,1]}},"bindType":"NonRec","expression":{"annotation":{"meta":{"constructorType":"ProductType","identifiers":[],"metaType":"IsConstructor"},"sourceSpan":{"end":[38,18],"start":[38,10]}},"kind":"Var","type":{"annotation":[{"end":[37,22],"name":"tests/purus/passing/ForeignKind/Lib.purs","start":[37,11]},[]],"contents":[{"annotation":[{"end":[37,19],"name":"tests/purus/passing/ForeignKind/Lib.purs","start":[37,11]},[]],"contents":[["ForeignKinds","Lib"],"NatProxy"],"tag":"TypeConstructor"},{"annotation":[{"end":[28,18],"name":"tests/purus/passing/ForeignKind/Lib.purs","start":[28,11]},[]],"contents":[{"annotation":[{"end":[28,15],"name":"tests/purus/passing/ForeignKind/Lib.purs","start":[28,11]},[]],"contents":[["ForeignKinds","Lib"],"Succ"],"tag":"TypeConstructor"},{"annotation":[{"end":[27,15],"name":"tests/purus/passing/ForeignKind/Lib.purs","start":[27,11]},[]],"contents":[["ForeignKinds","Lib"],"Zero"],"tag":"TypeConstructor"}],"tag":"TypeApp"}],"tag":"TypeApp"},"value":{"identifier":"NatProxy","moduleName":["ForeignKinds","Lib"]}},"identifier":"proxy1"},{"annotation":{"meta":null,"sourceSpan":{"end":[34,22],"start":[34,1]}},"bindType":"NonRec","expression":{"annotation":{"meta":{"constructorType":"ProductType","identifiers":[],"metaType":"IsConstructor"},"sourceSpan":{"end":[35,18],"start":[35,10]}},"kind":"Var","type":{"annotation":[{"end":[34,22],"name":"tests/purus/passing/ForeignKind/Lib.purs","start":[34,11]},[]],"contents":[{"annotation":[{"end":[34,19],"name":"tests/purus/passing/ForeignKind/Lib.purs","start":[34,11]},[]],"contents":[["ForeignKinds","Lib"],"NatProxy"],"tag":"TypeConstructor"},{"annotation":[{"end":[27,15],"name":"tests/purus/passing/ForeignKind/Lib.purs","start":[27,11]},[]],"contents":[["ForeignKinds","Lib"],"Zero"],"tag":"TypeConstructor"}],"tag":"TypeApp"},"value":{"identifier":"NatProxy","moduleName":["ForeignKinds","Lib"]}},"identifier":"proxy0"},{"annotation":{"meta":null,"sourceSpan":{"end":[58,106],"start":[58,1]}},"bindType":"NonRec","expression":{"annotation":{"meta":null,"sourceSpan":{"end":[0,0],"start":[0,0]}},"argument":"$__unused","body":{"annotation":{"meta":null,"sourceSpan":{"end":[59,22],"start":[59,1]}},"argument":"v","body":{"annotation":{"meta":null,"sourceSpan":{"end":[59,22],"start":[59,1]}},"argument":"v1","body":{"annotation":{"meta":{"constructorType":"ProductType","identifiers":[],"metaType":"IsConstructor"},"sourceSpan":{"end":[59,22],"start":[59,14]}},"kind":"Var","type":{"annotation":[{"end":[58,106],"name":"tests/purus/passing/ForeignKind/Lib.purs","start":[58,96]},[]],"contents":[{"annotation":[{"end":[58,104],"name":"tests/purus/passing/ForeignKind/Lib.purs","start":[58,96]},[]],"contents":[["ForeignKinds","Lib"],"NatProxy"],"tag":"TypeConstructor"},{"annotation":[{"end":[58,106],"name":"tests/purus/passing/ForeignKind/Lib.purs","start":[58,105]},[]],"contents":{"kind":{"annotation":[{"end":[58,49],"name":"tests/purus/passing/ForeignKind/Lib.purs","start":[58,46]},[]],"contents":[["ForeignKinds","Lib"],"Nat"],"tag":"TypeConstructor"},"var":"o"},"tag":"TypeVar"}],"tag":"TypeApp"},"value":{"identifier":"NatProxy","moduleName":["ForeignKinds","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":[58,92],"name":"tests/purus/passing/ForeignKind/Lib.purs","start":[58,82]},[]],"contents":[{"annotation":[{"end":[58,90],"name":"tests/purus/passing/ForeignKind/Lib.purs","start":[58,82]},[]],"contents":[["ForeignKinds","Lib"],"NatProxy"],"tag":"TypeConstructor"},{"annotation":[{"end":[58,92],"name":"tests/purus/passing/ForeignKind/Lib.purs","start":[58,91]},[]],"contents":{"kind":{"annotation":[{"end":[58,38],"name":"tests/purus/passing/ForeignKind/Lib.purs","start":[58,35]},[]],"contents":[["ForeignKinds","Lib"],"Nat"],"tag":"TypeConstructor"},"var":"r"},"tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[{"end":[58,106],"name":"tests/purus/passing/ForeignKind/Lib.purs","start":[58,96]},[]],"contents":[{"annotation":[{"end":[58,104],"name":"tests/purus/passing/ForeignKind/Lib.purs","start":[58,96]},[]],"contents":[["ForeignKinds","Lib"],"NatProxy"],"tag":"TypeConstructor"},{"annotation":[{"end":[58,106],"name":"tests/purus/passing/ForeignKind/Lib.purs","start":[58,105]},[]],"contents":{"kind":{"annotation":[{"end":[58,49],"name":"tests/purus/passing/ForeignKind/Lib.purs","start":[58,46]},[]],"contents":[["ForeignKinds","Lib"],"Nat"],"tag":"TypeConstructor"},"var":"o"},"tag":"TypeVar"}],"tag":"TypeApp"}],"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":[58,78],"name":"tests/purus/passing/ForeignKind/Lib.purs","start":[58,68]},[]],"contents":[{"annotation":[{"end":[58,76],"name":"tests/purus/passing/ForeignKind/Lib.purs","start":[58,68]},[]],"contents":[["ForeignKinds","Lib"],"NatProxy"],"tag":"TypeConstructor"},{"annotation":[{"end":[58,78],"name":"tests/purus/passing/ForeignKind/Lib.purs","start":[58,77]},[]],"contents":{"kind":{"annotation":[{"end":[58,27],"name":"tests/purus/passing/ForeignKind/Lib.purs","start":[58,24]},[]],"contents":[["ForeignKinds","Lib"],"Nat"],"tag":"TypeConstructor"},"var":"l"},"tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[{"end":[58,106],"name":"tests/purus/passing/ForeignKind/Lib.purs","start":[58,82]},[]],"contents":[{"annotation":[{"end":[58,106],"name":"tests/purus/passing/ForeignKind/Lib.purs","start":[58,82]},[]],"contents":[{"annotation":[{"end":[58,95],"name":"tests/purus/passing/ForeignKind/Lib.purs","start":[58,93]},[]],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[58,92],"name":"tests/purus/passing/ForeignKind/Lib.purs","start":[58,82]},[]],"contents":[{"annotation":[{"end":[58,90],"name":"tests/purus/passing/ForeignKind/Lib.purs","start":[58,82]},[]],"contents":[["ForeignKinds","Lib"],"NatProxy"],"tag":"TypeConstructor"},{"annotation":[{"end":[58,92],"name":"tests/purus/passing/ForeignKind/Lib.purs","start":[58,91]},[]],"contents":{"kind":{"annotation":[{"end":[58,38],"name":"tests/purus/passing/ForeignKind/Lib.purs","start":[58,35]},[]],"contents":[["ForeignKinds","Lib"],"Nat"],"tag":"TypeConstructor"},"var":"r"},"tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[{"end":[58,106],"name":"tests/purus/passing/ForeignKind/Lib.purs","start":[58,96]},[]],"contents":[{"annotation":[{"end":[58,104],"name":"tests/purus/passing/ForeignKind/Lib.purs","start":[58,96]},[]],"contents":[["ForeignKinds","Lib"],"NatProxy"],"tag":"TypeConstructor"},{"annotation":[{"end":[58,106],"name":"tests/purus/passing/ForeignKind/Lib.purs","start":[58,105]},[]],"contents":{"kind":{"annotation":[{"end":[58,49],"name":"tests/purus/passing/ForeignKind/Lib.purs","start":[58,46]},[]],"contents":[["ForeignKinds","Lib"],"Nat"],"tag":"TypeConstructor"},"var":"o"},"tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"}},"kind":"Abs","type":{"annotation":[{"end":[58,106],"name":"tests/purus/passing/ForeignKind/Lib.purs","start":[58,11]},[]],"contents":{"identifier":"l","kind":{"annotation":[{"end":[58,27],"name":"tests/purus/passing/ForeignKind/Lib.purs","start":[58,24]},[]],"contents":[["ForeignKinds","Lib"],"Nat"],"tag":"TypeConstructor"},"skolem":23,"type":{"annotation":[{"end":[58,106],"name":"tests/purus/passing/ForeignKind/Lib.purs","start":[58,30]},[]],"contents":{"identifier":"r","kind":{"annotation":[{"end":[58,38],"name":"tests/purus/passing/ForeignKind/Lib.purs","start":[58,35]},[]],"contents":[["ForeignKinds","Lib"],"Nat"],"tag":"TypeConstructor"},"skolem":22,"type":{"annotation":[{"end":[58,106],"name":"tests/purus/passing/ForeignKind/Lib.purs","start":[58,41]},[]],"contents":{"identifier":"o","kind":{"annotation":[{"end":[58,49],"name":"tests/purus/passing/ForeignKind/Lib.purs","start":[58,46]},[]],"contents":[["ForeignKinds","Lib"],"Nat"],"tag":"TypeConstructor"},"skolem":21,"type":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[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":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["ForeignKinds","Lib"],"AddNat$Dict"],"tag":"TypeConstructor"},{"annotation":[{"end":[58,60],"name":"tests/purus/passing/ForeignKind/Lib.purs","start":[58,59]},[]],"contents":{"kind":{"annotation":[{"end":[58,27],"name":"tests/purus/passing/ForeignKind/Lib.purs","start":[58,24]},[]],"contents":[["ForeignKinds","Lib"],"Nat"],"tag":"TypeConstructor"},"var":"l"},"tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[{"end":[58,62],"name":"tests/purus/passing/ForeignKind/Lib.purs","start":[58,61]},[]],"contents":{"kind":{"annotation":[{"end":[58,38],"name":"tests/purus/passing/ForeignKind/Lib.purs","start":[58,35]},[]],"contents":[["ForeignKinds","Lib"],"Nat"],"tag":"TypeConstructor"},"var":"r"},"tag":"TypeVar"}],"tag":"TypeApp"},{"annotation":[{"end":[58,64],"name":"tests/purus/passing/ForeignKind/Lib.purs","start":[58,63]},[]],"contents":{"kind":{"annotation":[{"end":[58,49],"name":"tests/purus/passing/ForeignKind/Lib.purs","start":[58,46]},[]],"contents":[["ForeignKinds","Lib"],"Nat"],"tag":"TypeConstructor"},"var":"o"},"tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[{"end":[58,106],"name":"tests/purus/passing/ForeignKind/Lib.purs","start":[58,68]},[]],"contents":[{"annotation":[{"end":[58,106],"name":"tests/purus/passing/ForeignKind/Lib.purs","start":[58,68]},[]],"contents":[{"annotation":[{"end":[58,81],"name":"tests/purus/passing/ForeignKind/Lib.purs","start":[58,79]},[]],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[58,78],"name":"tests/purus/passing/ForeignKind/Lib.purs","start":[58,68]},[]],"contents":[{"annotation":[{"end":[58,76],"name":"tests/purus/passing/ForeignKind/Lib.purs","start":[58,68]},[]],"contents":[["ForeignKinds","Lib"],"NatProxy"],"tag":"TypeConstructor"},{"annotation":[{"end":[58,78],"name":"tests/purus/passing/ForeignKind/Lib.purs","start":[58,77]},[]],"contents":{"kind":{"annotation":[{"end":[58,27],"name":"tests/purus/passing/ForeignKind/Lib.purs","start":[58,24]},[]],"contents":[["ForeignKinds","Lib"],"Nat"],"tag":"TypeConstructor"},"var":"l"},"tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[{"end":[58,106],"name":"tests/purus/passing/ForeignKind/Lib.purs","start":[58,82]},[]],"contents":[{"annotation":[{"end":[58,106],"name":"tests/purus/passing/ForeignKind/Lib.purs","start":[58,82]},[]],"contents":[{"annotation":[{"end":[58,95],"name":"tests/purus/passing/ForeignKind/Lib.purs","start":[58,93]},[]],"contents":[["Prim"],"Function"],"tag":"TypeConstructor"},{"annotation":[{"end":[58,92],"name":"tests/purus/passing/ForeignKind/Lib.purs","start":[58,82]},[]],"contents":[{"annotation":[{"end":[58,90],"name":"tests/purus/passing/ForeignKind/Lib.purs","start":[58,82]},[]],"contents":[["ForeignKinds","Lib"],"NatProxy"],"tag":"TypeConstructor"},{"annotation":[{"end":[58,92],"name":"tests/purus/passing/ForeignKind/Lib.purs","start":[58,91]},[]],"contents":{"kind":{"annotation":[{"end":[58,38],"name":"tests/purus/passing/ForeignKind/Lib.purs","start":[58,35]},[]],"contents":[["ForeignKinds","Lib"],"Nat"],"tag":"TypeConstructor"},"var":"r"},"tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"},{"annotation":[{"end":[58,106],"name":"tests/purus/passing/ForeignKind/Lib.purs","start":[58,96]},[]],"contents":[{"annotation":[{"end":[58,104],"name":"tests/purus/passing/ForeignKind/Lib.purs","start":[58,96]},[]],"contents":[["ForeignKinds","Lib"],"NatProxy"],"tag":"TypeConstructor"},{"annotation":[{"end":[58,106],"name":"tests/purus/passing/ForeignKind/Lib.purs","start":[58,105]},[]],"contents":{"kind":{"annotation":[{"end":[58,49],"name":"tests/purus/passing/ForeignKind/Lib.purs","start":[58,46]},[]],"contents":[["ForeignKinds","Lib"],"Nat"],"tag":"TypeConstructor"},"var":"o"},"tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"}],"tag":"TypeApp"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"},"visibility":"TypeVarInvisible"},"tag":"ForAll"}},"identifier":"addNat"}],"exports":["NatProxy","succProxy","proxy0","proxy1","proxy2","proxy3","addNat","addNatZero","addNatSuccSucc"],"foreign":[],"imports":[{"annotation":{"meta":null,"sourceSpan":{"end":[59,22],"start":[1,1]}},"moduleName":["Builtin"]},{"annotation":{"meta":null,"sourceSpan":{"end":[59,22],"start":[1,1]}},"moduleName":["ForeignKinds","Lib"]},{"annotation":{"meta":null,"sourceSpan":{"end":[59,22],"start":[1,1]}},"moduleName":["Prim"]}],"moduleName":["ForeignKinds","Lib"],"modulePath":"tests/purus/passing/ForeignKind/Lib.purs","reExports":{},"sourceSpan":{"end":[59,22],"start":[1,1]}} \ No newline at end of file diff --git a/tests/purus/passing/ForeignKind/output/ForeignKinds.Lib/index.cfn.pretty b/tests/purus/passing/ForeignKind/output/ForeignKinds.Lib/index.cfn.pretty index 85bccb56..99a61eda 100644 --- a/tests/purus/passing/ForeignKind/output/ForeignKinds.Lib/index.cfn.pretty +++ b/tests/purus/passing/ForeignKind/output/ForeignKinds.Lib/index.cfn.pretty @@ -9,7 +9,10 @@ Exports: proxy0, proxy1, proxy2, - proxy3 + proxy3, + addNat, + addNatZero, + addNatSuccSucc Re-Exports: Foreign: @@ -21,6 +24,24 @@ NatProxy = NatProxy AddNat$Dict :: Prim.Record {} -> Prim.Record {} AddNat$Dict = \(x: Prim.Record {}) -> (x: Prim.Record {}) +addNatZero :: ((ForeignKinds.Lib.AddNat$Dict ForeignKinds.Lib.Zero (r :: ForeignKinds.Lib.Nat)) (r :: ForeignKinds.Lib.Nat)) +addNatZero = + (AddNat$Dict: Prim.Record {}@Prim.Type -> + ((ForeignKinds.Lib.AddNat$Dict + ForeignKinds.Lib.Zero (r :: ForeignKinds.Lib.Nat)) (r :: ForeignKinds.Lib.Nat))) + ({ }: Prim.Record {}@Prim.Type) + +addNatSuccSucc :: forall (l :: ForeignKinds.Lib.Nat) (r :: ForeignKinds.Lib.Nat) (o :: ForeignKinds.Lib.Nat). ((ForeignKinds.Lib.AddNat$Dict (l :: ForeignKinds.Lib.Nat) (r :: ForeignKinds.Lib.Nat)) (o :: ForeignKinds.Lib.Nat)) -> ((ForeignKinds.Lib.AddNat$Dict ForeignKinds.Lib.Succ (l :: ForeignKinds.Lib.Nat) (r :: ForeignKinds.Lib.Nat)) ForeignKinds.Lib.Succ (o :: ForeignKinds.Lib.Nat)) +addNatSuccSucc = + \($__unused: ((ForeignKinds.Lib.AddNat$Dict + (l :: ForeignKinds.Lib.Nat) (r :: ForeignKinds.Lib.Nat)) (o :: ForeignKinds.Lib.Nat))) -> + (AddNat$Dict: Prim.Record {}@Prim.Type -> + ((ForeignKinds.Lib.AddNat$Dict + ForeignKinds.Lib.Succ + (l :: ForeignKinds.Lib.Nat) (r :: ForeignKinds.Lib.Nat)) ForeignKinds.Lib.Succ + (o :: ForeignKinds.Lib.Nat))) + ({ }: Prim.Record {}@Prim.Type) + succProxy :: forall (n :: ForeignKinds.Lib.Nat). ForeignKinds.Lib.NatProxy (n :: ForeignKinds.Lib.Nat) -> ForeignKinds.Lib.NatProxy ForeignKinds.Lib.Succ (n :: ForeignKinds.Lib.Nat) succProxy = \(v: ForeignKinds.Lib.NatProxy (n :: ForeignKinds.Lib.Nat)) -> @@ -44,4 +65,12 @@ proxy1 = ForeignKinds.Lib.Succ ForeignKinds.Lib.Zero) proxy0 :: ForeignKinds.Lib.NatProxy ForeignKinds.Lib.Zero -proxy0 = (NatProxy: ForeignKinds.Lib.NatProxy ForeignKinds.Lib.Zero) \ No newline at end of file +proxy0 = (NatProxy: ForeignKinds.Lib.NatProxy ForeignKinds.Lib.Zero) + +addNat :: forall (l :: ForeignKinds.Lib.Nat) (r :: ForeignKinds.Lib.Nat) (o :: ForeignKinds.Lib.Nat). ((ForeignKinds.Lib.AddNat$Dict (l :: ForeignKinds.Lib.Nat) (r :: ForeignKinds.Lib.Nat)) (o :: ForeignKinds.Lib.Nat)) -> ForeignKinds.Lib.NatProxy (l :: ForeignKinds.Lib.Nat) -> ForeignKinds.Lib.NatProxy (r :: ForeignKinds.Lib.Nat) -> ForeignKinds.Lib.NatProxy (o :: ForeignKinds.Lib.Nat) +addNat = + \($__unused: ((ForeignKinds.Lib.AddNat$Dict + (l :: ForeignKinds.Lib.Nat) (r :: ForeignKinds.Lib.Nat)) (o :: ForeignKinds.Lib.Nat))) -> + \(v: ForeignKinds.Lib.NatProxy (l :: ForeignKinds.Lib.Nat)) -> + \(v1: ForeignKinds.Lib.NatProxy (r :: ForeignKinds.Lib.Nat)) -> + (NatProxy: ForeignKinds.Lib.NatProxy (o :: ForeignKinds.Lib.Nat)) \ No newline at end of file diff --git a/tests/purus/passing/RowSyntax/RowSyntax.purs b/tests/purus/passing/RowSyntax/RowSyntax.purs index 841866b3..77ebe273 100644 --- a/tests/purus/passing/RowSyntax/RowSyntax.purs +++ b/tests/purus/passing/RowSyntax/RowSyntax.purs @@ -6,12 +6,8 @@ type OneRow = [one :: Int] type SomeRow :: Row Type type SomeRow = [inn'it :: Int, stirring :: String] - -class IsARow (r :: Row Type) -instance IsARow [hello :: String] - class IsARow' (r :: Row Type) -instance IsARow' (r :: Row Type) +instance forall (r :: Row Type). IsARow' r data RowProxy (r :: Row Type) = RowProxy diff --git a/tests/purus/passing/RowSyntax/output/RowSyntax/externs.cbor b/tests/purus/passing/RowSyntax/output/RowSyntax/externs.cbor new file mode 100644 index 00000000..6424c59c Binary files /dev/null and b/tests/purus/passing/RowSyntax/output/RowSyntax/externs.cbor differ diff --git a/tests/purus/passing/RowSyntax/output/RowSyntax/index.cfn b/tests/purus/passing/RowSyntax/output/RowSyntax/index.cfn new file mode 100644 index 00000000..22fcfed2 --- /dev/null +++ b/tests/purus/passing/RowSyntax/output/RowSyntax/index.cfn @@ -0,0 +1 @@ +{"builtWith":"0.0.1","comments":[],"dataTypes":{"IsARow'$Dict":["newtype",[["r",{"annotation":[{"end":[9,29],"name":"tests/purus/passing/RowSyntax/RowSyntax.purs","start":[9,21]},[]],"contents":[{"annotation":[{"end":[9,24],"name":"tests/purus/passing/RowSyntax/RowSyntax.purs","start":[9,21]},[]],"contents":[["Prim"],"Row"],"tag":"TypeConstructor"},{"annotation":[{"end":[9,29],"name":"tests/purus/passing/RowSyntax/RowSyntax.purs","start":[9,25]},[]],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"}],"tag":"TypeApp"}]],[{"dataCtorAnn":[{"end":[9,30],"name":"tests/purus/passing/RowSyntax/RowSyntax.purs","start":[9,1]},[]],"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":"IsARow'$Dict"}]],"RowProxy":["data",[["r",{"annotation":[{"end":[12,29],"name":"tests/purus/passing/RowSyntax/RowSyntax.purs","start":[12,21]},[]],"contents":[{"annotation":[{"end":[12,24],"name":"tests/purus/passing/RowSyntax/RowSyntax.purs","start":[12,21]},[]],"contents":[["Prim"],"Row"],"tag":"TypeConstructor"},{"annotation":[{"end":[12,29],"name":"tests/purus/passing/RowSyntax/RowSyntax.purs","start":[12,25]},[]],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"}],"tag":"TypeApp"}]],[{"dataCtorAnn":[{"end":[12,41],"name":"tests/purus/passing/RowSyntax/RowSyntax.purs","start":[12,31]},[]],"dataCtorFields":[],"dataCtorName":"RowProxy"}]]},"decls":[{"annotation":{"meta":null,"sourceSpan":{"end":[12,41],"start":[12,1]}},"bindType":"NonRec","expression":{"annotation":{"meta":null,"sourceSpan":{"end":[12,41],"start":[12,1]}},"constructorName":"RowProxy","fieldNames":[],"kind":"Constructor","type":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":{"identifier":"r","kind":{"annotation":[{"end":[12,29],"name":"tests/purus/passing/RowSyntax/RowSyntax.purs","start":[12,21]},[]],"contents":[{"annotation":[{"end":[12,24],"name":"tests/purus/passing/RowSyntax/RowSyntax.purs","start":[12,21]},[]],"contents":[["Prim"],"Row"],"tag":"TypeConstructor"},{"annotation":[{"end":[12,29],"name":"tests/purus/passing/RowSyntax/RowSyntax.purs","start":[12,25]},[]],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"}],"tag":"TypeApp"},"skolem":null,"type":{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":[["RowSyntax"],"RowProxy"],"tag":"TypeConstructor"},{"annotation":[{"end":[0,0],"name":"","start":[0,0]},[]],"contents":{"kind":{"annotation":[{"end":[12,29],"name":"tests/purus/passing/RowSyntax/RowSyntax.purs","start":[12,21]},[]],"contents":[{"annotation":[{"end":[12,24],"name":"tests/purus/passing/RowSyntax/RowSyntax.purs","start":[12,21]},[]],"contents":[["Prim"],"Row"],"tag":"TypeConstructor"},{"annotation":[{"end":[12,29],"name":"tests/purus/passing/RowSyntax/RowSyntax.purs","start":[12,25]},[]],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"}],"tag":"TypeApp"},"var":"r"},"tag":"TypeVar"}],"tag":"TypeApp"},"visibility":"TypeVarVisible"},"tag":"ForAll"},"typeName":"RowProxy"},"identifier":"RowProxy"},{"annotation":{"meta":{"metaType":"IsTypeClassConstructor"},"sourceSpan":{"end":[9,30],"start":[9,1]}},"bindType":"NonRec","expression":{"annotation":{"meta":{"metaType":"IsNewtype"},"sourceSpan":{"end":[9,30],"start":[9,1]}},"argument":"x","body":{"annotation":{"meta":null,"sourceSpan":{"end":[9,30],"start":[9,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":"IsARow'$Dict"},{"annotation":{"meta":null,"sourceSpan":{"end":[10,43],"start":[10,1]}},"bindType":"NonRec","expression":{"abstraction":{"annotation":{"meta":{"metaType":"IsNewtype"},"sourceSpan":{"end":[10,43],"start":[10,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":[{"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":[["RowSyntax"],"IsARow'$Dict"],"tag":"TypeConstructor"},{"annotation":[{"end":[10,43],"name":"tests/purus/passing/RowSyntax/RowSyntax.purs","start":[10,42]},[]],"contents":{"kind":{"annotation":[{"end":[10,31],"name":"tests/purus/passing/RowSyntax/RowSyntax.purs","start":[10,23]},[]],"contents":[{"annotation":[{"end":[10,26],"name":"tests/purus/passing/RowSyntax/RowSyntax.purs","start":[10,23]},[]],"contents":[["Prim"],"Row"],"tag":"TypeConstructor"},{"annotation":[{"end":[10,31],"name":"tests/purus/passing/RowSyntax/RowSyntax.purs","start":[10,27]},[]],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"}],"tag":"TypeApp"},"var":"r"},"tag":"TypeVar"}],"tag":"TypeApp"}],"tag":"TypeApp"},"value":{"identifier":"IsARow'$Dict","moduleName":["RowSyntax"]}},"annotation":{"meta":null,"sourceSpan":{"end":[10,43],"start":[10,1]}},"argument":{"annotation":{"meta":null,"sourceSpan":{"end":[10,43],"start":[10,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":[{"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"},"value":{"literalType":"ObjectLiteral","value":[]}},"kind":"App"},"identifier":"isARow'"},{"annotation":{"meta":null,"sourceSpan":{"end":[17,38],"start":[17,1]}},"bindType":"NonRec","expression":{"annotation":{"meta":{"constructorType":"ProductType","identifiers":[],"metaType":"IsConstructor"},"sourceSpan":{"end":[18,22],"start":[18,14]}},"kind":"Var","type":{"annotation":[{"end":[17,38],"name":"tests/purus/passing/RowSyntax/RowSyntax.purs","start":[17,15]},[]],"contents":[{"annotation":[{"end":[17,23],"name":"tests/purus/passing/RowSyntax/RowSyntax.purs","start":[17,15]},[]],"contents":[["RowSyntax"],"RowProxy"],"tag":"TypeConstructor"},{"annotation":[{"end":[17,38],"name":"tests/purus/passing/RowSyntax/RowSyntax.purs","start":[17,25]},[]],"contents":["field1",{"annotation":[{"end":[17,38],"name":"tests/purus/passing/RowSyntax/RowSyntax.purs","start":[17,35]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"},{"annotation":[{"end":[17,56],"name":"tests/purus/passing/RowSyntax/RowSyntax.purs","start":[17,40]},[]],"contents":["field2",{"annotation":[{"end":[17,56],"name":"tests/purus/passing/RowSyntax/RowSyntax.purs","start":[17,50]},[]],"contents":[["Prim"],"String"],"tag":"TypeConstructor"},{"annotation":[{"end":[17,75],"name":"tests/purus/passing/RowSyntax/RowSyntax.purs","start":[17,58]},[]],"contents":["field3",{"annotation":[{"end":[17,75],"name":"tests/purus/passing/RowSyntax/RowSyntax.purs","start":[17,68]},[]],"contents":[["Prim"],"Boolean"],"tag":"TypeConstructor"},{"annotation":[{"end":[17,76],"name":"tests/purus/passing/RowSyntax/RowSyntax.purs","start":[17,75]},[]],"contents":[{"annotation":[{"end":[17,76],"name":"tests/purus/passing/RowSyntax/RowSyntax.purs","start":[17,75]},[]],"tag":"REmpty"},{"annotation":[{"end":[17,38],"name":"tests/purus/passing/RowSyntax/RowSyntax.purs","start":[17,35]},[]],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"}],"tag":"KindApp"}],"tag":"RCons"}],"tag":"RCons"}],"tag":"RCons"}],"tag":"TypeApp"},"value":{"identifier":"RowProxy","moduleName":["RowSyntax"]}},"identifier":"moreFields"},{"annotation":{"meta":null,"sourceSpan":{"end":[14,36],"start":[14,1]}},"bindType":"NonRec","expression":{"annotation":{"meta":{"constructorType":"ProductType","identifiers":[],"metaType":"IsConstructor"},"sourceSpan":{"end":[15,21],"start":[15,13]}},"kind":"Var","type":{"annotation":[{"end":[14,36],"name":"tests/purus/passing/RowSyntax/RowSyntax.purs","start":[14,14]},[]],"contents":[{"annotation":[{"end":[14,22],"name":"tests/purus/passing/RowSyntax/RowSyntax.purs","start":[14,14]},[]],"contents":[["RowSyntax"],"RowProxy"],"tag":"TypeConstructor"},{"annotation":[{"end":[14,36],"name":"tests/purus/passing/RowSyntax/RowSyntax.purs","start":[14,24]},[]],"contents":["field",{"annotation":[{"end":[14,36],"name":"tests/purus/passing/RowSyntax/RowSyntax.purs","start":[14,33]},[]],"contents":[["Prim"],"Int"],"tag":"TypeConstructor"},{"annotation":[{"end":[14,37],"name":"tests/purus/passing/RowSyntax/RowSyntax.purs","start":[14,36]},[]],"contents":[{"annotation":[{"end":[14,37],"name":"tests/purus/passing/RowSyntax/RowSyntax.purs","start":[14,36]},[]],"tag":"REmpty"},{"annotation":[{"end":[14,36],"name":"tests/purus/passing/RowSyntax/RowSyntax.purs","start":[14,33]},[]],"contents":[["Prim"],"Type"],"tag":"TypeConstructor"}],"tag":"KindApp"}],"tag":"RCons"}],"tag":"TypeApp"},"value":{"identifier":"RowProxy","moduleName":["RowSyntax"]}},"identifier":"aRowProxy"}],"exports":["RowProxy","aRowProxy","moreFields","isARow'"],"foreign":[],"imports":[{"annotation":{"meta":null,"sourceSpan":{"end":[22,54],"start":[1,1]}},"moduleName":["Builtin"]},{"annotation":{"meta":null,"sourceSpan":{"end":[22,54],"start":[1,1]}},"moduleName":["Prim"]},{"annotation":{"meta":null,"sourceSpan":{"end":[22,54],"start":[1,1]}},"moduleName":["RowSyntax"]}],"moduleName":["RowSyntax"],"modulePath":"tests/purus/passing/RowSyntax/RowSyntax.purs","reExports":{},"sourceSpan":{"end":[22,54],"start":[1,1]}} \ No newline at end of file diff --git a/tests/purus/passing/RowSyntax/output/RowSyntax/index.cfn.pretty b/tests/purus/passing/RowSyntax/output/RowSyntax/index.cfn.pretty new file mode 100644 index 00000000..c66f7369 --- /dev/null +++ b/tests/purus/passing/RowSyntax/output/RowSyntax/index.cfn.pretty @@ -0,0 +1,36 @@ +RowSyntax (tests/purus/passing/RowSyntax/RowSyntax.purs) +Imported Modules: + Builtin, + Prim, + RowSyntax +Exports: + RowProxy, + aRowProxy, + moreFields, + isARow' +Re-Exports: + +Foreign: + +Declarations: +RowProxy :: forall (@r :: Prim.Row Prim.Type). RowSyntax.RowProxy (r :: Prim.Row Prim.Type) +RowProxy = RowProxy + +IsARow'$Dict :: Prim.Record {} -> Prim.Record {} +IsARow'$Dict = \(x: Prim.Record {}) -> (x: Prim.Record {}) + +isARow' :: RowSyntax.IsARow'$Dict (r :: Prim.Row Prim.Type) +isARow' = + (IsARow'$Dict: Prim.Record {}@Prim.Type -> + RowSyntax.IsARow'$Dict (r :: Prim.Row Prim.Type)) + ({ }: Prim.Record {}@Prim.Type) + +moreFields :: RowSyntax.RowProxy ( field1 :: Prim.Int +, field2 :: Prim.String +, field3 :: Prim.Boolean ) +moreFields = + (RowProxy: RowSyntax.RowProxy + (field1 :: Prim.Int, field2 :: Prim.String, field3 :: Prim.Boolean)) + +aRowProxy :: RowSyntax.RowProxy (field :: Prim.Int) +aRowProxy = (RowProxy: RowSyntax.RowProxy (field :: Prim.Int)) \ No newline at end of file