From 5777b4ecd3962a42e0fe32b03ed52f06a0dcd0a4 Mon Sep 17 00:00:00 2001 From: gnumonik Date: Tue, 28 May 2024 17:20:58 -0400 Subject: [PATCH] Fixed mistake (ignored TVBinders in instance chains), cleaned up/fixed existing tests --- src/Language/PureScript/CST/Convert.hs | 18 ++++++++- src/Language/PureScript/TypeChecker/Types.hs | 24 +++++++----- tests/purus/passing/4035/Other.purs | 2 +- .../passing/4035/output/Other/externs.cbor | Bin 697 -> 694 bytes .../purus/passing/4035/output/Other/index.cfn | 2 +- tests/purus/passing/4101/Lib.purs | 2 +- .../passing/4101/output/Lib/externs.cbor | Bin 2985 -> 2985 bytes tests/purus/passing/4101/output/Lib/index.cfn | 2 +- tests/purus/passing/4105/Lib.purs | 4 +- .../passing/4105/output/Lib/externs.cbor | Bin 2591 -> 2591 bytes tests/purus/passing/4310/Lib.purs | 10 ++--- .../passing/4310/output/Lib/externs.cbor | Bin 6223 -> 7132 bytes tests/purus/passing/4310/output/Lib/index.cfn | 2 +- .../passing/4310/output/Lib/index.cfn.pretty | 34 ++++++++++++++++- tests/purus/passing/ForeignKind/Lib.purs | 16 +++----- .../output/ForeignKinds.Lib/externs.cbor | Bin 10443 -> 15388 bytes .../output/ForeignKinds.Lib/index.cfn | 2 +- .../output/ForeignKinds.Lib/index.cfn.pretty | 33 +++++++++++++++- tests/purus/passing/RowSyntax/RowSyntax.purs | 6 +-- .../RowSyntax/output/RowSyntax/externs.cbor | Bin 0 -> 8894 bytes .../RowSyntax/output/RowSyntax/index.cfn | 1 + .../output/RowSyntax/index.cfn.pretty | 36 ++++++++++++++++++ 22 files changed, 148 insertions(+), 46 deletions(-) create mode 100644 tests/purus/passing/RowSyntax/output/RowSyntax/externs.cbor create mode 100644 tests/purus/passing/RowSyntax/output/RowSyntax/index.cfn create mode 100644 tests/purus/passing/RowSyntax/output/RowSyntax/index.cfn.pretty 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 6249a05caf64ebf908391280a5a5e077dad75101..d2cf89da11566b13877c464a7a9e29e915c93510 100644 GIT binary patch delta 37 scmdnVx{Y;$6QjgN=WUFP!jpe9+Ovr_Gq6fXOm<{40Sc5eIWkHB0Lz;RO8@`> delta 40 ucmdnSx|4N+6Qk@#=WUEk5)zYtG1{|B$TTysO2|&OXEFf^l`uIn$^ro7hY79# 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 dbf26f2dd5a688c240ee71e4b0bbbd3b459546e2..abb9001e4d2e0b9df48816bb4bc6cd6945ab0ca4 100644 GIT binary patch delta 165 zcmZ1}zEXTc0VAWqx1MB8YbH@8v!NlSh9fRN|pealK(7qXiEOGI8FY^>I+on O&gKVIws|%iA1eToo+%~( delta 165 zcmZ1}zEXTc0VAW;;F{?8&dS&~C_@;OE}3`LG?Y9K}W zlR20(8097xGCRQpb~1ajTY}`Q8YbH@8v!NlSh9fRN|pealK(7qXiEOGI8FY^>I+on O&gKVIws|%iA1eUQYboRa 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 9af3cc5f90914a1d1b9c8a68252f7efeaf8ce66c..17d223ba204f0d799d9e87357e40e484941f5bb6 100644 GIT binary patch delta 307 zcmbO)GGAmvDI=ru`W@&`r(M(N3lOtx(DAVFm?Qys+A znEanzV)A|_JEFC|VYXufYqbH}0yQO>#hy(QWT4gL6)cvV24H4G3*+QKHZ5*2&$uBu zIX`D|Agck;sF`T2H}C-05N~E4tqbNB+zTt%q$YJll?iw hCJS&l14TkO?AT?S8CWFb8YU}p7%@t2KEn~r2mq?WLT>;7 delta 308 zcmbO)GGAmvDI=rq`W@&`r(Muo|WOtx$)AVFO)(-6co zn*5(#V)A|_JEFC|VYXufYjp$L0yQO>#h%R=WT4CB6)cvVR$yjB3*+QKHZ5*2&$b~s zIX`D|Agck 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 906cdebe342fa656b68dbba6854d389ff71bd6cb..456927f717df188638d60d998b00f5421d6a376b 100644 GIT binary patch literal 7132 zcmeHMOK;Oa5MDP81k|Ka17#8Khu}cTgMtK7#Q_RZ5eEc0_E0Bwf@$kUiH+d4YrCxw zKf-^KyV+g8lbGx#265=2sU3S~zxnpt*_p`?&~MgT&+4ts?t87{+64!EyJM&$W7HU! zLz8^Uqmicf8&5Y|%?5d;PQD)5K$2{532s=RKQ#3=dEZ$Q9jUg>!GVfh3;0)_y)0^? z)7Z78c?OBQc_S%9(&EQt!klEPJ@&x+(3 z^(uHq0R{9-9UHDMQCF;&(+idZ_Cl8s2C{4y$yZ$JE3et0ypAXW=8*-I_V=XrgoRBTXzSLYbP&r_vJ=2%Pe^!cr+cMa`GXU=nx&48|= z9Ow}MUh~OGtZ?s>F(iQqTY&8NP>uX_7f8S=z=iunTmOuZvR&${+CreTM~X=7%O``lUrQZG>uafa+GGOS8Y&DCAnSF zhxIVR7FRZ3l}PJidRuo2#Gr@kTAlq?b{fWlK6&NItXE{2Z4oY@HIgoo20!AMS?5jKcZGz%t~V41Z{Ip8%^JaNXX1$%|jyKH|fML76bp>w~-I`$m5I< Qwd@E%>MJhZgCFO91L+<1A^-pY literal 6223 zcmeHMOK;Oa5FWQRkEoC+1++j>K_E`3X;hw4#Q_i!5(fl1a;O`-!O*&q9|&&t+HHmS z5&o0h&F)ib9LKaqy@#9qjUM@Aoji6zP?Qi>x)?^bXAQ{b(SoF*G4RHFMi662uaa;{a)h1U z$55HUMmofOZ9FzCUEaa1=OIWss53Ct2)=BM49l=J*U-r*0Q85zO;hv6aswraBhcU3 z=6(PH`y0XNg=g-$rbV9c%j_Gh#KH+$yd1(J$*ey3J~jeh-0ljoLpLz&esFEV7#UNv zN^RFL3~6kB;wSMT1j;!KG|7M!N=~eBuF!WXc}MZh-cf9_JWaLbEF%mrNPBz{N3hM& z^#jnfP$iFqRzSNOLL1%msS7Lt8DvqbGUyRhZVQK5ru{flD({={An~K~qEU26wmazh z3>M-@bvk5@ZW*XguRUw%ng!Fe0ljLZD z#~$R1bFM017vjl5o5&tpDFxjoZtKaIQ(gx7CKFC;!oTvnNybbdJaIb(a3(}DF)_#1 zT}P|QA)6qT?-P-|`&HZXj17L#PnZtM6cYS#rCWE;0ctk;<81NlPz@dt-QD>xY*rTL&gNi;;~yWT62vkb~SrJacE= z%%9F|I*u^1saE z(>amK!-CtBdaeOxQ#GgSWJ61im$Gd+#xgBvT`gygV}711+~uFu+}Ubw;`_gTs&xNP uNy7wIal%VfyLjF0wnOMv)Gj?pO#(l_LbATAkb{irXU;@L2@R3{L*O^z7|=if 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 e7c455cb20efee9acd514ae9a1876c2de60c70c8..8c9f97c5b882c30cd20a36a6f474b43344f7a3ce 100644 GIT binary patch delta 1616 zcmZ{k%}*0S6u@^%D{QxgsL&43A^|0Sq1`TIn=KSb@TMi`4I#47f`Xx@!31x++eQy2 z2Ar!&_3XujzreHqg#H5>uU_iBH?y$x(oO` zCq^6;rL}Uka#8c-_4c-}3FQ+kL5i^Kk|kKal0{g4lVuI|Zxu5>D`mY!&ib+{c*Awr zeKHG9^qvB4+Idy29KF#&9gwpiW0Jyd)D%ct5KE;JF9nDVaJyrpT#wY1{kh%pLAh!l zmP>`2qA2ir%ANqQTGAam5E!%o+dxhW;T4tipMHp68jaU_&LX{2+24VTW@$BrT6E8G z3Cm2(s1~KD7-hf0sgQtT79BgMK2HHPiHfNJ)o;;TXOvxGOP8~pyN4MX|m%% zgYR4xskKOUG#lkzT0!F~`-@?=U!e2s=aUD2hwp* z8FD=(!N27D2-DRhmGirBVjG^l&%R7vi+FZb%tJE>cWcnQ4qC=TP6JPjL9e6!CL_bc zA4kF=Ibj12mqBksF?~i7p%I>H>YTVEJhl;$rt7#KJDHeH8$@xH&R0yNpFT^!jz!g7dbOCG9WwHU&*-SPZV1-G3Mj%BHT}gh%jSbDr zlOJ;GO@6@0$_Fv30A#cQc40&8!baGIjhh)@W<#Cnn34kY?B)Y3{+x^qn+5pTq#6Ii Ilz 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 0000000000000000000000000000000000000000..6424c59c6258dd54fe7678d56c4e0d2e0e606c05 GIT binary patch literal 8894 zcmd^FZEw^@5Z=q%^-k9-rygd2(iZ^*0!p}xKvh*$Dn&@Bm5K;IfaA_FCKnsoj+%V) z8%0%rgnwl}yR+-Hy?1ex-uP5SsiM5B;(7ec?6W(wv-c-69&QaDZ4GwJm-g?w$Cfub zO5&B69X;@L*K@buA3BHlbL6_FWo#GElz(mE6K=#BjfiRRIAnXjSvo!z__a`sUHc$| ziC7IX#&h>4By*=0m$!)U!m*EzgCu0dAdOaQ5Hm+PXf2p`2ezX>Gxh1jt>xnWE1c|? z`q*|RgPJp^Kn)RUJ!bnq7`ml9BTt|F7%|59cgPGgo0_1JCNZ15aLj{%1>$!x^kZf` zIW(u9Y2p9!KU3dFi$ZB}GhBQkRxd?t6~K?ysm7oC5eplFZ^*_tn>47tcUQ_k0-{-1T#VUaSe-1 znH!Su!a9s+GyiX%2a9vEP|2d*gbrq+4&0;Vz}%RW0}JDFpPOA>3%i0@phK;2I>LB4 z6;6j&ID$#(+8Gs2o&y;<2WAcs>%0HNdzk|Zz4{^}6~jQ)^0G3~`H#wCdwUVB*^II9DaM0;?TgMD{`+>lBR`!XC)IrPdt50T&Z9PgJC{C24Po@RIoKjVpQ zPxX;SYD6J74)`l=Ar;o7g;b>kS!0Auxi}b*(EHd+?_X9YQebDTbQPUeRtk97rY+Qy z+~f(2B(gr1g?+eLXw1g;{u`RU`fww|QuI|v|9!a4@wOzl5ja#{_cI)Y7dd$#9}c!n z(|ln~Q)NYft293(p=+pl4KI0=C{>GoNE3aAzey8)1-Uw^*We58?B+6Lukmt%V<~~F zBYO?-xk z*TsE=5)T2xTPVDVwCHiXjh%%y-1pCXL5i2mq!+-Zd;_g(+{WA1Hhe`}ahdVVc0j%n lY4a;O!K5tPMCjAN55mRc&I0@-N7ZKm@ZMxmH2G 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