summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--CONTRIBUTORS.md1
-rw-r--r--purescript.cabal244
-rw-r--r--src/Language/PureScript/AST/Declarations.hs17
-rw-r--r--src/Language/PureScript/AST/Exported.hs2
-rw-r--r--src/Language/PureScript/AST/Traversals.hs11
-rw-r--r--src/Language/PureScript/Bundle.hs97
-rw-r--r--src/Language/PureScript/CST/Convert.hs17
-rw-r--r--src/Language/PureScript/CST/Layout.hs9
-rw-r--r--src/Language/PureScript/CoreFn/Desugar.hs13
-rw-r--r--src/Language/PureScript/CoreImp/Optimizer/TCO.hs4
-rw-r--r--src/Language/PureScript/Docs/Convert/Single.hs6
-rw-r--r--src/Language/PureScript/Docs/Prim.hs2
-rw-r--r--src/Language/PureScript/Environment.hs27
-rw-r--r--src/Language/PureScript/Errors.hs53
-rw-r--r--src/Language/PureScript/Externs.hs5
-rw-r--r--src/Language/PureScript/Ide/SourceFile.hs6
-rw-r--r--src/Language/PureScript/Ide/State.hs20
-rw-r--r--src/Language/PureScript/Make.hs47
-rw-r--r--src/Language/PureScript/Make/BuildPlan.hs67
-rw-r--r--src/Language/PureScript/Pretty/Types.hs25
-rw-r--r--src/Language/PureScript/Pretty/Values.hs1
-rw-r--r--src/Language/PureScript/Sugar/Names.hs2
-rw-r--r--src/Language/PureScript/Sugar/Names/Exports.hs2
-rw-r--r--src/Language/PureScript/Sugar/Operators.hs3
-rw-r--r--src/Language/PureScript/Sugar/TypeClasses.hs6
-rwxr-xr-xsrc/Language/PureScript/Sugar/TypeClasses/Deriving.hs20
-rw-r--r--src/Language/PureScript/TypeChecker.hs38
-rw-r--r--src/Language/PureScript/TypeChecker/Entailment.hs18
-rw-r--r--src/Language/PureScript/TypeChecker/Unify.hs3
-rw-r--r--tests/Language/PureScript/Ide/SourceFileSpec.hs4
-rw-r--r--tests/TestDocs.hs74
-rw-r--r--tests/purs/bundle/3551.purs21
-rw-r--r--tests/purs/bundle/3551/ModuleWithDeadCode.js12
-rw-r--r--tests/purs/bundle/3551/ModuleWithDeadCode.purs16
-rw-r--r--tests/purs/docs/output/Ado/docs.json2
-rw-r--r--tests/purs/docs/output/Ado/externs.json2
-rw-r--r--tests/purs/docs/output/ChildDeclOrder/docs.json2
-rw-r--r--tests/purs/docs/output/ChildDeclOrder/externs.json2
-rw-r--r--tests/purs/docs/output/Clash/externs.json2
-rw-r--r--tests/purs/docs/output/Clash1/externs.json2
-rw-r--r--tests/purs/docs/output/Clash1a/docs.json2
-rw-r--r--tests/purs/docs/output/Clash1a/externs.json2
-rw-r--r--tests/purs/docs/output/Clash2/externs.json2
-rw-r--r--tests/purs/docs/output/Clash2a/docs.json2
-rw-r--r--tests/purs/docs/output/Clash2a/externs.json2
-rw-r--r--tests/purs/docs/output/ConstrainedArgument/docs.json2
-rw-r--r--tests/purs/docs/output/ConstrainedArgument/externs.json2
-rw-r--r--tests/purs/docs/output/Data.Newtype/externs.json2
-rw-r--r--tests/purs/docs/output/DeclOrder/docs.json2
-rw-r--r--tests/purs/docs/output/DeclOrder/externs.json2
-rw-r--r--tests/purs/docs/output/DeclOrderNoExportList/docs.json2
-rw-r--r--tests/purs/docs/output/DeclOrderNoExportList/externs.json2
-rw-r--r--tests/purs/docs/output/Desugar/docs.json2
-rw-r--r--tests/purs/docs/output/Desugar/externs.json2
-rw-r--r--tests/purs/docs/output/DocComments/docs.json2
-rw-r--r--tests/purs/docs/output/DocComments/externs.json2
-rw-r--r--tests/purs/docs/output/DocCommentsClassMethod/docs.json1
-rw-r--r--tests/purs/docs/output/DocCommentsClassMethod/externs.json1
-rw-r--r--tests/purs/docs/output/DocCommentsDataConstructor/docs.json1
-rw-r--r--tests/purs/docs/output/DocCommentsDataConstructor/externs.json1
-rw-r--r--tests/purs/docs/output/DuplicateNames/docs.json2
-rw-r--r--tests/purs/docs/output/DuplicateNames/externs.json2
-rw-r--r--tests/purs/docs/output/Example/externs.json2
-rw-r--r--tests/purs/docs/output/Example2/docs.json2
-rw-r--r--tests/purs/docs/output/Example2/externs.json2
-rw-r--r--tests/purs/docs/output/ExplicitExport/docs.json2
-rw-r--r--tests/purs/docs/output/ExplicitExport/externs.json2
-rw-r--r--tests/purs/docs/output/ExplicitTypeSignatures/docs.json2
-rw-r--r--tests/purs/docs/output/ExplicitTypeSignatures/externs.json2
-rw-r--r--tests/purs/docs/output/ImportedTwice/externs.json2
-rw-r--r--tests/purs/docs/output/ImportedTwiceA/externs.json2
-rw-r--r--tests/purs/docs/output/ImportedTwiceB/docs.json2
-rw-r--r--tests/purs/docs/output/ImportedTwiceB/externs.json2
-rw-r--r--tests/purs/docs/output/MultiVirtual/externs.json2
-rw-r--r--tests/purs/docs/output/MultiVirtual1/docs.json2
-rw-r--r--tests/purs/docs/output/MultiVirtual1/externs.json2
-rw-r--r--tests/purs/docs/output/MultiVirtual2/docs.json2
-rw-r--r--tests/purs/docs/output/MultiVirtual2/externs.json2
-rw-r--r--tests/purs/docs/output/MultiVirtual3/docs.json2
-rw-r--r--tests/purs/docs/output/MultiVirtual3/externs.json2
-rw-r--r--tests/purs/docs/output/NewOperators/externs.json2
-rw-r--r--tests/purs/docs/output/NewOperators2/docs.json2
-rw-r--r--tests/purs/docs/output/NewOperators2/externs.json2
-rw-r--r--tests/purs/docs/output/NotAllCtors/externs.json2
-rw-r--r--tests/purs/docs/output/Prelude/externs.json2
-rw-r--r--tests/purs/docs/output/PrimSubmodules/docs.json2
-rw-r--r--tests/purs/docs/output/PrimSubmodules/externs.json2
-rw-r--r--tests/purs/docs/output/ReExportedTypeClass/externs.json2
-rw-r--r--tests/purs/docs/output/SolitaryTypeClassMember/externs.json2
-rw-r--r--tests/purs/docs/output/SomeTypeClass/docs.json2
-rw-r--r--tests/purs/docs/output/SomeTypeClass/externs.json2
-rw-r--r--tests/purs/docs/output/Transitive1/externs.json2
-rw-r--r--tests/purs/docs/output/Transitive2/externs.json2
-rw-r--r--tests/purs/docs/output/Transitive3/docs.json2
-rw-r--r--tests/purs/docs/output/Transitive3/externs.json2
-rw-r--r--tests/purs/docs/output/TypeClassWithFunDeps/docs.json2
-rw-r--r--tests/purs/docs/output/TypeClassWithFunDeps/externs.json2
-rw-r--r--tests/purs/docs/output/TypeClassWithoutMembers/externs.json2
-rw-r--r--tests/purs/docs/output/TypeClassWithoutMembersIntermediate/externs.json2
-rw-r--r--tests/purs/docs/output/TypeLevelString/docs.json2
-rw-r--r--tests/purs/docs/output/TypeLevelString/externs.json2
-rw-r--r--tests/purs/docs/output/TypeOpAliases/docs.json2
-rw-r--r--tests/purs/docs/output/TypeOpAliases/externs.json2
-rw-r--r--tests/purs/docs/output/TypeSynonym/docs.json2
-rw-r--r--tests/purs/docs/output/TypeSynonym/externs.json2
-rw-r--r--tests/purs/docs/output/TypeSynonymInstance/docs.json2
-rw-r--r--tests/purs/docs/output/TypeSynonymInstance/externs.json2
-rw-r--r--tests/purs/docs/output/TypeSynonymInstance/index.js16
-rw-r--r--tests/purs/docs/output/UTF8/docs.json2
-rw-r--r--tests/purs/docs/output/UTF8/externs.json2
-rw-r--r--tests/purs/docs/output/Virtual/externs.json2
-rw-r--r--tests/purs/docs/src/DocCommentsClassMethod.purs6
-rw-r--r--tests/purs/docs/src/DocCommentsDataConstructor.purs15
-rw-r--r--tests/purs/layout/LetGuards.purs29
-rw-r--r--tests/purs/passing/EmptyDicts.purs77
-rw-r--r--tests/purs/publish/basic-example/output/Control.Alt/docs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Control.Alt/externs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Control.Alternative/docs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Control.Alternative/externs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Control.Applicative/externs.json2
-rw-r--r--tests/purs/publish/basic-example/output/Control.Apply/externs.json2
-rw-r--r--tests/purs/publish/basic-example/output/Control.Biapplicative/docs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Control.Biapplicative/externs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Control.Biapply/docs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Control.Biapply/externs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Control.Bind/externs.json2
-rw-r--r--tests/purs/publish/basic-example/output/Control.Category/externs.json2
-rw-r--r--tests/purs/publish/basic-example/output/Control.Comonad/docs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Control.Comonad/externs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Control.Extend/docs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Control.Extend/externs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Control.Lazy/docs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Control.Lazy/externs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Control.Monad.Gen.Class/docs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Control.Monad.Gen.Class/externs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Control.Monad.Gen.Common/docs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Control.Monad.Gen.Common/externs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Control.Monad.Gen/docs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Control.Monad.Gen/externs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Control.Monad.Rec.Class/docs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Control.Monad.Rec.Class/externs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Control.Monad.ST.Internal/docs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Control.Monad.ST.Internal/externs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Control.Monad.ST.Ref/docs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Control.Monad.ST.Ref/externs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Control.Monad.ST/docs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Control.Monad.ST/externs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Control.Monad/externs.json2
-rw-r--r--tests/purs/publish/basic-example/output/Control.MonadPlus/docs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Control.MonadPlus/externs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Control.MonadZero/docs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Control.MonadZero/externs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Control.Plus/docs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Control.Plus/externs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Control.Semigroupoid/externs.json2
-rw-r--r--tests/purs/publish/basic-example/output/Data.Array.NonEmpty.Internal/docs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Data.Array.NonEmpty.Internal/externs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Data.Array.NonEmpty/docs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Data.Array.NonEmpty/externs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Data.Array.Partial/docs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Data.Array.Partial/externs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Data.Array.ST.Iterator/docs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Data.Array.ST.Iterator/externs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Data.Array.ST.Partial/docs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Data.Array.ST.Partial/externs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Data.Array.ST/docs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Data.Array.ST/externs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Data.Array/docs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Data.Array/externs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Data.Bifoldable/docs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Data.Bifoldable/externs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Data.Bifunctor.Clown/docs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Data.Bifunctor.Clown/externs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Data.Bifunctor.Flip/docs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Data.Bifunctor.Flip/externs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Data.Bifunctor.Join/docs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Data.Bifunctor.Join/externs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Data.Bifunctor.Joker/docs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Data.Bifunctor.Joker/externs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Data.Bifunctor.Product/docs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Data.Bifunctor.Product/externs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Data.Bifunctor.Wrap/docs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Data.Bifunctor.Wrap/externs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Data.Bifunctor/docs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Data.Bifunctor/externs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Data.Bitraversable/docs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Data.Bitraversable/externs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Data.Boolean/externs.json2
-rw-r--r--tests/purs/publish/basic-example/output/Data.BooleanAlgebra/externs.json2
-rw-r--r--tests/purs/publish/basic-example/output/Data.Bounded/externs.json2
-rw-r--r--tests/purs/publish/basic-example/output/Data.Char.Gen/docs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Data.Char.Gen/externs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Data.Char/docs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Data.Char/externs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Data.CommutativeRing/externs.json2
-rw-r--r--tests/purs/publish/basic-example/output/Data.Distributive/docs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Data.Distributive/externs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Data.DivisionRing/externs.json2
-rw-r--r--tests/purs/publish/basic-example/output/Data.Either.Inject/docs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Data.Either.Inject/externs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Data.Either.Nested/docs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Data.Either.Nested/externs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Data.Either/docs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Data.Either/externs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Data.Enum.Gen/docs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Data.Enum.Gen/externs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Data.Enum/docs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Data.Enum/externs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Data.Eq/externs.json2
-rw-r--r--tests/purs/publish/basic-example/output/Data.EuclideanRing/externs.json2
-rw-r--r--tests/purs/publish/basic-example/output/Data.Field/externs.json2
-rw-r--r--tests/purs/publish/basic-example/output/Data.Foldable/docs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Data.Foldable/externs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Data.FoldableWithIndex/docs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Data.FoldableWithIndex/externs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Data.Function.Uncurried/docs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Data.Function.Uncurried/externs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Data.Function/externs.json2
-rw-r--r--tests/purs/publish/basic-example/output/Data.Functor.Invariant/docs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Data.Functor.Invariant/externs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Data.Functor/externs.json2
-rw-r--r--tests/purs/publish/basic-example/output/Data.FunctorWithIndex/docs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Data.FunctorWithIndex/externs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Data.Generic.Rep.Bounded/docs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Data.Generic.Rep.Bounded/externs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Data.Generic.Rep.Enum/docs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Data.Generic.Rep.Enum/externs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Data.Generic.Rep.Eq/docs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Data.Generic.Rep.Eq/externs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Data.Generic.Rep.Monoid/docs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Data.Generic.Rep.Monoid/externs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Data.Generic.Rep.Ord/docs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Data.Generic.Rep.Ord/externs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Data.Generic.Rep.Semigroup/docs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Data.Generic.Rep.Semigroup/externs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Data.Generic.Rep.Show/docs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Data.Generic.Rep.Show/externs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Data.Generic.Rep/docs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Data.Generic.Rep/externs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Data.HeytingAlgebra/externs.json2
-rw-r--r--tests/purs/publish/basic-example/output/Data.Identity/docs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Data.Identity/externs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Data.Int.Bits/docs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Data.Int.Bits/externs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Data.Int/docs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Data.Int/externs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Data.Lazy/docs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Data.Lazy/externs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Data.List.Lazy.NonEmpty/docs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Data.List.Lazy.NonEmpty/externs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Data.List.Lazy.Types/docs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Data.List.Lazy.Types/externs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Data.List.Lazy/docs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Data.List.Lazy/externs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Data.List.NonEmpty/docs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Data.List.NonEmpty/externs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Data.List.Partial/docs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Data.List.Partial/externs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Data.List.Types/docs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Data.List.Types/externs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Data.List.ZipList/docs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Data.List.ZipList/externs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Data.List/docs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Data.List/externs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Data.Maybe.First/docs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Data.Maybe.First/externs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Data.Maybe.Last/docs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Data.Maybe.Last/externs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Data.Maybe/docs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Data.Maybe/externs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Data.Monoid.Additive/externs.json2
-rw-r--r--tests/purs/publish/basic-example/output/Data.Monoid.Conj/externs.json2
-rw-r--r--tests/purs/publish/basic-example/output/Data.Monoid.Disj/docs.json2
-rw-r--r--tests/purs/publish/basic-example/output/Data.Monoid.Disj/externs.json2
-rw-r--r--tests/purs/publish/basic-example/output/Data.Monoid.Dual/externs.json2
-rw-r--r--tests/purs/publish/basic-example/output/Data.Monoid.Endo/externs.json2
-rw-r--r--tests/purs/publish/basic-example/output/Data.Monoid.Multiplicative/externs.json2
-rw-r--r--tests/purs/publish/basic-example/output/Data.Monoid/externs.json2
-rw-r--r--tests/purs/publish/basic-example/output/Data.NaturalTransformation/externs.json2
-rw-r--r--tests/purs/publish/basic-example/output/Data.Newtype/externs.json2
-rw-r--r--tests/purs/publish/basic-example/output/Data.NonEmpty/docs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Data.NonEmpty/externs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Data.Ord.Down/docs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Data.Ord.Down/externs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Data.Ord.Max/docs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Data.Ord.Max/externs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Data.Ord.Min/docs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Data.Ord.Min/externs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Data.Ord.Unsafe/externs.json2
-rw-r--r--tests/purs/publish/basic-example/output/Data.Ord/docs.json2
-rw-r--r--tests/purs/publish/basic-example/output/Data.Ord/externs.json2
-rw-r--r--tests/purs/publish/basic-example/output/Data.Ordering/externs.json2
-rw-r--r--tests/purs/publish/basic-example/output/Data.Ring/externs.json2
-rw-r--r--tests/purs/publish/basic-example/output/Data.Semigroup.First/externs.json2
-rw-r--r--tests/purs/publish/basic-example/output/Data.Semigroup.Foldable/docs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Data.Semigroup.Foldable/externs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Data.Semigroup.Last/externs.json2
-rw-r--r--tests/purs/publish/basic-example/output/Data.Semigroup.Traversable/docs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Data.Semigroup.Traversable/externs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Data.Semigroup/externs.json2
-rw-r--r--tests/purs/publish/basic-example/output/Data.Semiring/externs.json2
-rw-r--r--tests/purs/publish/basic-example/output/Data.Show/externs.json2
-rw-r--r--tests/purs/publish/basic-example/output/Data.String.CaseInsensitive/docs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Data.String.CaseInsensitive/externs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Data.String.CodePoints/docs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Data.String.CodePoints/externs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Data.String.CodeUnits/docs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Data.String.CodeUnits/externs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Data.String.Common/docs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Data.String.Common/externs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Data.String.Gen/docs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Data.String.Gen/externs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Data.String.NonEmpty.CaseInsensitive/docs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Data.String.NonEmpty.CaseInsensitive/externs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Data.String.NonEmpty.CodePoints/docs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Data.String.NonEmpty.CodePoints/externs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Data.String.NonEmpty.CodeUnits/docs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Data.String.NonEmpty.CodeUnits/externs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Data.String.NonEmpty.Internal/docs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Data.String.NonEmpty.Internal/externs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Data.String.NonEmpty/docs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Data.String.NonEmpty/externs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Data.String.Pattern/docs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Data.String.Pattern/externs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Data.String.Regex.Flags/docs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Data.String.Regex.Flags/externs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Data.String.Regex.Unsafe/docs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Data.String.Regex.Unsafe/externs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Data.String.Regex/docs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Data.String.Regex/externs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Data.String.Unsafe/docs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Data.String.Unsafe/externs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Data.String/docs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Data.String/externs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Data.Symbol/externs.json2
-rw-r--r--tests/purs/publish/basic-example/output/Data.Traversable.Accum.Internal/docs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Data.Traversable.Accum.Internal/externs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Data.Traversable.Accum/docs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Data.Traversable.Accum/externs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Data.Traversable/docs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Data.Traversable/externs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Data.TraversableWithIndex/docs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Data.TraversableWithIndex/externs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Data.Tuple.Nested/docs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Data.Tuple.Nested/externs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Data.Tuple/docs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Data.Tuple/externs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Data.Unfoldable/docs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Data.Unfoldable/externs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Data.Unfoldable1/docs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Data.Unfoldable1/externs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Data.Unit/externs.json2
-rw-r--r--tests/purs/publish/basic-example/output/Data.Void/externs.json2
-rw-r--r--tests/purs/publish/basic-example/output/Effect.Class.Console/externs.json2
-rw-r--r--tests/purs/publish/basic-example/output/Effect.Class/externs.json2
-rw-r--r--tests/purs/publish/basic-example/output/Effect.Console/externs.json2
-rw-r--r--tests/purs/publish/basic-example/output/Effect.Ref/docs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Effect.Ref/externs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Effect.Uncurried/externs.json2
-rw-r--r--tests/purs/publish/basic-example/output/Effect.Unsafe/externs.json2
-rw-r--r--tests/purs/publish/basic-example/output/Effect/externs.json2
-rw-r--r--tests/purs/publish/basic-example/output/Global.Unsafe/docs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Global.Unsafe/externs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Global/docs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Global/externs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Main/docs.json2
-rw-r--r--tests/purs/publish/basic-example/output/Main/externs.json2
-rw-r--r--tests/purs/publish/basic-example/output/Math/docs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Math/externs.json1
-rw-r--r--tests/purs/publish/basic-example/output/PSCI.Support/externs.json2
-rw-r--r--tests/purs/publish/basic-example/output/Partial.Unsafe/docs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Partial.Unsafe/externs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Partial/docs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Partial/externs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Prelude/externs.json2
-rw-r--r--tests/purs/publish/basic-example/output/Record.Unsafe/externs.json2
-rw-r--r--tests/purs/publish/basic-example/output/Test.Assert/docs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Test.Assert/externs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Type.Data.Boolean/docs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Type.Data.Boolean/externs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Type.Data.Ordering/docs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Type.Data.Ordering/externs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Type.Data.Row/externs.json2
-rw-r--r--tests/purs/publish/basic-example/output/Type.Data.RowList/externs.json2
-rw-r--r--tests/purs/publish/basic-example/output/Type.Data.Symbol/docs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Type.Data.Symbol/externs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Type.Equality/docs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Type.Equality/externs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Type.Prelude/docs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Type.Prelude/externs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Type.Proxy/docs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Type.Proxy/externs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Type.Row.Homogeneous/docs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Type.Row.Homogeneous/externs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Type.Row/docs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Type.Row/externs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Unsafe.Coerce/docs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Unsafe.Coerce/externs.json1
-rw-r--r--tests/support/package-lock.json6
399 files changed, 716 insertions, 810 deletions
diff --git a/CONTRIBUTORS.md b/CONTRIBUTORS.md
index f60b75a..1ecc5a4 100644
--- a/CONTRIBUTORS.md
+++ b/CONTRIBUTORS.md
@@ -134,6 +134,7 @@ If you would prefer to use different terms, please use the section below instead
| [@Saulukass](https://github.com/Saulukass) | Saulius Skliutas | [MIT license](http://opensource.org/licenses/MIT) |
| [@adnelson](https://github.com/adnelson) | Allen Nelson | [MIT license](http://opensource.org/licenses/MIT) |
| [@dyerw](https://github.com/dyerw) | Liam Dyer | [MIT license](http://opensource.org/licenses/MIT) |
+| [@marcosh](https://github.com/marcosh) | Marco Perone | [MIT license](http://opensource.org/licenses/MIT) |
### Contributors using Modified Terms
diff --git a/purescript.cabal b/purescript.cabal
index c79a4ce..15d1c1e 100644
--- a/purescript.cabal
+++ b/purescript.cabal
@@ -1,6 +1,6 @@
cabal-version: 1.12
name: purescript
-version: 0.13.2
+version: 0.13.3
license: BSD3
license-file: LICENSE
copyright: (c) 2013-17 Phil Freeman, (c) 2014-19 Gary Burgess, (c) other contributors (see CONTRIBUTORS.md)
@@ -22,7 +22,7 @@ extra-source-files:
app/static/pursuit.less
bundle/build.sh
bundle/README
- tests/purs/docs/output/TypeSynonymInstance/index.js
+ tests/purs/bundle/3551/ModuleWithDeadCode.js
tests/purs/failing/MissingFFIImplementations.js
tests/purs/passing/2172.js
tests/purs/passing/EffFn.js
@@ -31,6 +31,8 @@ extra-source-files:
tests/purs/passing/RowUnion.js
tests/purs/warning/UnnecessaryFFIModule.js
tests/purs/warning/UnusedFFIImplementations.js
+ tests/purs/bundle/3551.purs
+ tests/purs/bundle/3551/ModuleWithDeadCode.purs
tests/purs/bundle/PSasConstructor.purs
tests/purs/docs/bower_components/purescript-newtype/src/Data/Newtype.purs
tests/purs/docs/bower_components/purescript-prelude/src/Prelude.purs
@@ -46,6 +48,8 @@ extra-source-files:
tests/purs/docs/src/DeclOrderNoExportList.purs
tests/purs/docs/src/Desugar.purs
tests/purs/docs/src/DocComments.purs
+ tests/purs/docs/src/DocCommentsClassMethod.purs
+ tests/purs/docs/src/DocCommentsDataConstructor.purs
tests/purs/docs/src/DuplicateNames.purs
tests/purs/docs/src/Example.purs
tests/purs/docs/src/Example2.purs
@@ -350,6 +354,7 @@ extra-source-files:
tests/purs/layout/DoWhere.purs
tests/purs/layout/IfThenElseDo.purs
tests/purs/layout/InstanceChainElse.purs
+ tests/purs/layout/LetGuards.purs
tests/purs/passing/1110.purs
tests/purs/passing/1185.purs
tests/purs/passing/1335.purs
@@ -445,6 +450,7 @@ extra-source-files:
tests/purs/passing/DuplicateProperties.purs
tests/purs/passing/EffFn.purs
tests/purs/passing/EmptyDataDecls.purs
+ tests/purs/passing/EmptyDicts.purs
tests/purs/passing/EmptyRow.purs
tests/purs/passing/EmptyTypeClass.purs
tests/purs/passing/EntailsKindedType.purs
@@ -755,6 +761,10 @@ extra-source-files:
tests/purs/docs/output/Desugar/externs.json
tests/purs/docs/output/DocComments/docs.json
tests/purs/docs/output/DocComments/externs.json
+ tests/purs/docs/output/DocCommentsClassMethod/docs.json
+ tests/purs/docs/output/DocCommentsClassMethod/externs.json
+ tests/purs/docs/output/DocCommentsDataConstructor/docs.json
+ tests/purs/docs/output/DocCommentsDataConstructor/externs.json
tests/purs/docs/output/DuplicateNames/docs.json
tests/purs/docs/output/DuplicateNames/externs.json
tests/purs/docs/output/Example/docs.json
@@ -821,178 +831,40 @@ extra-source-files:
tests/purs/docs/output/Virtual/externs.json
tests/purs/docs/resolutions.json
tests/purs/publish/basic-example/bower.json
- tests/purs/publish/basic-example/output/Control.Alt/docs.json
- tests/purs/publish/basic-example/output/Control.Alt/externs.json
- tests/purs/publish/basic-example/output/Control.Alternative/docs.json
- tests/purs/publish/basic-example/output/Control.Alternative/externs.json
tests/purs/publish/basic-example/output/Control.Applicative/docs.json
tests/purs/publish/basic-example/output/Control.Applicative/externs.json
tests/purs/publish/basic-example/output/Control.Apply/docs.json
tests/purs/publish/basic-example/output/Control.Apply/externs.json
- tests/purs/publish/basic-example/output/Control.Biapplicative/docs.json
- tests/purs/publish/basic-example/output/Control.Biapplicative/externs.json
- tests/purs/publish/basic-example/output/Control.Biapply/docs.json
- tests/purs/publish/basic-example/output/Control.Biapply/externs.json
tests/purs/publish/basic-example/output/Control.Bind/docs.json
tests/purs/publish/basic-example/output/Control.Bind/externs.json
tests/purs/publish/basic-example/output/Control.Category/docs.json
tests/purs/publish/basic-example/output/Control.Category/externs.json
- tests/purs/publish/basic-example/output/Control.Comonad/docs.json
- tests/purs/publish/basic-example/output/Control.Comonad/externs.json
- tests/purs/publish/basic-example/output/Control.Extend/docs.json
- tests/purs/publish/basic-example/output/Control.Extend/externs.json
- tests/purs/publish/basic-example/output/Control.Lazy/docs.json
- tests/purs/publish/basic-example/output/Control.Lazy/externs.json
- tests/purs/publish/basic-example/output/Control.Monad.Gen.Class/docs.json
- tests/purs/publish/basic-example/output/Control.Monad.Gen.Class/externs.json
- tests/purs/publish/basic-example/output/Control.Monad.Gen.Common/docs.json
- tests/purs/publish/basic-example/output/Control.Monad.Gen.Common/externs.json
- tests/purs/publish/basic-example/output/Control.Monad.Gen/docs.json
- tests/purs/publish/basic-example/output/Control.Monad.Gen/externs.json
- tests/purs/publish/basic-example/output/Control.Monad.Rec.Class/docs.json
- tests/purs/publish/basic-example/output/Control.Monad.Rec.Class/externs.json
- tests/purs/publish/basic-example/output/Control.Monad.ST.Internal/docs.json
- tests/purs/publish/basic-example/output/Control.Monad.ST.Internal/externs.json
- tests/purs/publish/basic-example/output/Control.Monad.ST.Ref/docs.json
- tests/purs/publish/basic-example/output/Control.Monad.ST.Ref/externs.json
- tests/purs/publish/basic-example/output/Control.Monad.ST/docs.json
- tests/purs/publish/basic-example/output/Control.Monad.ST/externs.json
tests/purs/publish/basic-example/output/Control.Monad/docs.json
tests/purs/publish/basic-example/output/Control.Monad/externs.json
- tests/purs/publish/basic-example/output/Control.MonadPlus/docs.json
- tests/purs/publish/basic-example/output/Control.MonadPlus/externs.json
- tests/purs/publish/basic-example/output/Control.MonadZero/docs.json
- tests/purs/publish/basic-example/output/Control.MonadZero/externs.json
- tests/purs/publish/basic-example/output/Control.Plus/docs.json
- tests/purs/publish/basic-example/output/Control.Plus/externs.json
tests/purs/publish/basic-example/output/Control.Semigroupoid/docs.json
tests/purs/publish/basic-example/output/Control.Semigroupoid/externs.json
- tests/purs/publish/basic-example/output/Data.Array.NonEmpty.Internal/docs.json
- tests/purs/publish/basic-example/output/Data.Array.NonEmpty.Internal/externs.json
- tests/purs/publish/basic-example/output/Data.Array.NonEmpty/docs.json
- tests/purs/publish/basic-example/output/Data.Array.NonEmpty/externs.json
- tests/purs/publish/basic-example/output/Data.Array.Partial/docs.json
- tests/purs/publish/basic-example/output/Data.Array.Partial/externs.json
- tests/purs/publish/basic-example/output/Data.Array.ST.Iterator/docs.json
- tests/purs/publish/basic-example/output/Data.Array.ST.Iterator/externs.json
- tests/purs/publish/basic-example/output/Data.Array.ST.Partial/docs.json
- tests/purs/publish/basic-example/output/Data.Array.ST.Partial/externs.json
- tests/purs/publish/basic-example/output/Data.Array.ST/docs.json
- tests/purs/publish/basic-example/output/Data.Array.ST/externs.json
- tests/purs/publish/basic-example/output/Data.Array/docs.json
- tests/purs/publish/basic-example/output/Data.Array/externs.json
- tests/purs/publish/basic-example/output/Data.Bifoldable/docs.json
- tests/purs/publish/basic-example/output/Data.Bifoldable/externs.json
- tests/purs/publish/basic-example/output/Data.Bifunctor.Clown/docs.json
- tests/purs/publish/basic-example/output/Data.Bifunctor.Clown/externs.json
- tests/purs/publish/basic-example/output/Data.Bifunctor.Flip/docs.json
- tests/purs/publish/basic-example/output/Data.Bifunctor.Flip/externs.json
- tests/purs/publish/basic-example/output/Data.Bifunctor.Join/docs.json
- tests/purs/publish/basic-example/output/Data.Bifunctor.Join/externs.json
- tests/purs/publish/basic-example/output/Data.Bifunctor.Joker/docs.json
- tests/purs/publish/basic-example/output/Data.Bifunctor.Joker/externs.json
- tests/purs/publish/basic-example/output/Data.Bifunctor.Product/docs.json
- tests/purs/publish/basic-example/output/Data.Bifunctor.Product/externs.json
- tests/purs/publish/basic-example/output/Data.Bifunctor.Wrap/docs.json
- tests/purs/publish/basic-example/output/Data.Bifunctor.Wrap/externs.json
- tests/purs/publish/basic-example/output/Data.Bifunctor/docs.json
- tests/purs/publish/basic-example/output/Data.Bifunctor/externs.json
- tests/purs/publish/basic-example/output/Data.Bitraversable/docs.json
- tests/purs/publish/basic-example/output/Data.Bitraversable/externs.json
tests/purs/publish/basic-example/output/Data.Boolean/docs.json
tests/purs/publish/basic-example/output/Data.Boolean/externs.json
tests/purs/publish/basic-example/output/Data.BooleanAlgebra/docs.json
tests/purs/publish/basic-example/output/Data.BooleanAlgebra/externs.json
tests/purs/publish/basic-example/output/Data.Bounded/docs.json
tests/purs/publish/basic-example/output/Data.Bounded/externs.json
- tests/purs/publish/basic-example/output/Data.Char.Gen/docs.json
- tests/purs/publish/basic-example/output/Data.Char.Gen/externs.json
- tests/purs/publish/basic-example/output/Data.Char/docs.json
- tests/purs/publish/basic-example/output/Data.Char/externs.json
tests/purs/publish/basic-example/output/Data.CommutativeRing/docs.json
tests/purs/publish/basic-example/output/Data.CommutativeRing/externs.json
- tests/purs/publish/basic-example/output/Data.Distributive/docs.json
- tests/purs/publish/basic-example/output/Data.Distributive/externs.json
tests/purs/publish/basic-example/output/Data.DivisionRing/docs.json
tests/purs/publish/basic-example/output/Data.DivisionRing/externs.json
- tests/purs/publish/basic-example/output/Data.Either.Inject/docs.json
- tests/purs/publish/basic-example/output/Data.Either.Inject/externs.json
- tests/purs/publish/basic-example/output/Data.Either.Nested/docs.json
- tests/purs/publish/basic-example/output/Data.Either.Nested/externs.json
- tests/purs/publish/basic-example/output/Data.Either/docs.json
- tests/purs/publish/basic-example/output/Data.Either/externs.json
- tests/purs/publish/basic-example/output/Data.Enum.Gen/docs.json
- tests/purs/publish/basic-example/output/Data.Enum.Gen/externs.json
- tests/purs/publish/basic-example/output/Data.Enum/docs.json
- tests/purs/publish/basic-example/output/Data.Enum/externs.json
tests/purs/publish/basic-example/output/Data.Eq/docs.json
tests/purs/publish/basic-example/output/Data.Eq/externs.json
tests/purs/publish/basic-example/output/Data.EuclideanRing/docs.json
tests/purs/publish/basic-example/output/Data.EuclideanRing/externs.json
tests/purs/publish/basic-example/output/Data.Field/docs.json
tests/purs/publish/basic-example/output/Data.Field/externs.json
- tests/purs/publish/basic-example/output/Data.Foldable/docs.json
- tests/purs/publish/basic-example/output/Data.Foldable/externs.json
- tests/purs/publish/basic-example/output/Data.FoldableWithIndex/docs.json
- tests/purs/publish/basic-example/output/Data.FoldableWithIndex/externs.json
- tests/purs/publish/basic-example/output/Data.Function.Uncurried/docs.json
- tests/purs/publish/basic-example/output/Data.Function.Uncurried/externs.json
tests/purs/publish/basic-example/output/Data.Function/docs.json
tests/purs/publish/basic-example/output/Data.Function/externs.json
- tests/purs/publish/basic-example/output/Data.Functor.Invariant/docs.json
- tests/purs/publish/basic-example/output/Data.Functor.Invariant/externs.json
tests/purs/publish/basic-example/output/Data.Functor/docs.json
tests/purs/publish/basic-example/output/Data.Functor/externs.json
- tests/purs/publish/basic-example/output/Data.FunctorWithIndex/docs.json
- tests/purs/publish/basic-example/output/Data.FunctorWithIndex/externs.json
- tests/purs/publish/basic-example/output/Data.Generic.Rep.Bounded/docs.json
- tests/purs/publish/basic-example/output/Data.Generic.Rep.Bounded/externs.json
- tests/purs/publish/basic-example/output/Data.Generic.Rep.Enum/docs.json
- tests/purs/publish/basic-example/output/Data.Generic.Rep.Enum/externs.json
- tests/purs/publish/basic-example/output/Data.Generic.Rep.Eq/docs.json
- tests/purs/publish/basic-example/output/Data.Generic.Rep.Eq/externs.json
- tests/purs/publish/basic-example/output/Data.Generic.Rep.Monoid/docs.json
- tests/purs/publish/basic-example/output/Data.Generic.Rep.Monoid/externs.json
- tests/purs/publish/basic-example/output/Data.Generic.Rep.Ord/docs.json
- tests/purs/publish/basic-example/output/Data.Generic.Rep.Ord/externs.json
- tests/purs/publish/basic-example/output/Data.Generic.Rep.Semigroup/docs.json
- tests/purs/publish/basic-example/output/Data.Generic.Rep.Semigroup/externs.json
- tests/purs/publish/basic-example/output/Data.Generic.Rep.Show/docs.json
- tests/purs/publish/basic-example/output/Data.Generic.Rep.Show/externs.json
- tests/purs/publish/basic-example/output/Data.Generic.Rep/docs.json
- tests/purs/publish/basic-example/output/Data.Generic.Rep/externs.json
tests/purs/publish/basic-example/output/Data.HeytingAlgebra/docs.json
tests/purs/publish/basic-example/output/Data.HeytingAlgebra/externs.json
- tests/purs/publish/basic-example/output/Data.Identity/docs.json
- tests/purs/publish/basic-example/output/Data.Identity/externs.json
- tests/purs/publish/basic-example/output/Data.Int.Bits/docs.json
- tests/purs/publish/basic-example/output/Data.Int.Bits/externs.json
- tests/purs/publish/basic-example/output/Data.Int/docs.json
- tests/purs/publish/basic-example/output/Data.Int/externs.json
- tests/purs/publish/basic-example/output/Data.Lazy/docs.json
- tests/purs/publish/basic-example/output/Data.Lazy/externs.json
- tests/purs/publish/basic-example/output/Data.List.Lazy.NonEmpty/docs.json
- tests/purs/publish/basic-example/output/Data.List.Lazy.NonEmpty/externs.json
- tests/purs/publish/basic-example/output/Data.List.Lazy.Types/docs.json
- tests/purs/publish/basic-example/output/Data.List.Lazy.Types/externs.json
- tests/purs/publish/basic-example/output/Data.List.Lazy/docs.json
- tests/purs/publish/basic-example/output/Data.List.Lazy/externs.json
- tests/purs/publish/basic-example/output/Data.List.NonEmpty/docs.json
- tests/purs/publish/basic-example/output/Data.List.NonEmpty/externs.json
- tests/purs/publish/basic-example/output/Data.List.Partial/docs.json
- tests/purs/publish/basic-example/output/Data.List.Partial/externs.json
- tests/purs/publish/basic-example/output/Data.List.Types/docs.json
- tests/purs/publish/basic-example/output/Data.List.Types/externs.json
- tests/purs/publish/basic-example/output/Data.List.ZipList/docs.json
- tests/purs/publish/basic-example/output/Data.List.ZipList/externs.json
- tests/purs/publish/basic-example/output/Data.List/docs.json
- tests/purs/publish/basic-example/output/Data.List/externs.json
- tests/purs/publish/basic-example/output/Data.Maybe.First/docs.json
- tests/purs/publish/basic-example/output/Data.Maybe.First/externs.json
- tests/purs/publish/basic-example/output/Data.Maybe.Last/docs.json
- tests/purs/publish/basic-example/output/Data.Maybe.Last/externs.json
- tests/purs/publish/basic-example/output/Data.Maybe/docs.json
- tests/purs/publish/basic-example/output/Data.Maybe/externs.json
tests/purs/publish/basic-example/output/Data.Monoid.Additive/docs.json
tests/purs/publish/basic-example/output/Data.Monoid.Additive/externs.json
tests/purs/publish/basic-example/output/Data.Monoid.Conj/docs.json
@@ -1011,14 +883,6 @@ extra-source-files:
tests/purs/publish/basic-example/output/Data.NaturalTransformation/externs.json
tests/purs/publish/basic-example/output/Data.Newtype/docs.json
tests/purs/publish/basic-example/output/Data.Newtype/externs.json
- tests/purs/publish/basic-example/output/Data.NonEmpty/docs.json
- tests/purs/publish/basic-example/output/Data.NonEmpty/externs.json
- tests/purs/publish/basic-example/output/Data.Ord.Down/docs.json
- tests/purs/publish/basic-example/output/Data.Ord.Down/externs.json
- tests/purs/publish/basic-example/output/Data.Ord.Max/docs.json
- tests/purs/publish/basic-example/output/Data.Ord.Max/externs.json
- tests/purs/publish/basic-example/output/Data.Ord.Min/docs.json
- tests/purs/publish/basic-example/output/Data.Ord.Min/externs.json
tests/purs/publish/basic-example/output/Data.Ord.Unsafe/docs.json
tests/purs/publish/basic-example/output/Data.Ord.Unsafe/externs.json
tests/purs/publish/basic-example/output/Data.Ord/docs.json
@@ -1029,68 +893,16 @@ extra-source-files:
tests/purs/publish/basic-example/output/Data.Ring/externs.json
tests/purs/publish/basic-example/output/Data.Semigroup.First/docs.json
tests/purs/publish/basic-example/output/Data.Semigroup.First/externs.json
- tests/purs/publish/basic-example/output/Data.Semigroup.Foldable/docs.json
- tests/purs/publish/basic-example/output/Data.Semigroup.Foldable/externs.json
tests/purs/publish/basic-example/output/Data.Semigroup.Last/docs.json
tests/purs/publish/basic-example/output/Data.Semigroup.Last/externs.json
- tests/purs/publish/basic-example/output/Data.Semigroup.Traversable/docs.json
- tests/purs/publish/basic-example/output/Data.Semigroup.Traversable/externs.json
tests/purs/publish/basic-example/output/Data.Semigroup/docs.json
tests/purs/publish/basic-example/output/Data.Semigroup/externs.json
tests/purs/publish/basic-example/output/Data.Semiring/docs.json
tests/purs/publish/basic-example/output/Data.Semiring/externs.json
tests/purs/publish/basic-example/output/Data.Show/docs.json
tests/purs/publish/basic-example/output/Data.Show/externs.json
- tests/purs/publish/basic-example/output/Data.String.CaseInsensitive/docs.json
- tests/purs/publish/basic-example/output/Data.String.CaseInsensitive/externs.json
- tests/purs/publish/basic-example/output/Data.String.CodePoints/docs.json
- tests/purs/publish/basic-example/output/Data.String.CodePoints/externs.json
- tests/purs/publish/basic-example/output/Data.String.CodeUnits/docs.json
- tests/purs/publish/basic-example/output/Data.String.CodeUnits/externs.json
- tests/purs/publish/basic-example/output/Data.String.Common/docs.json
- tests/purs/publish/basic-example/output/Data.String.Common/externs.json
- tests/purs/publish/basic-example/output/Data.String.Gen/docs.json
- tests/purs/publish/basic-example/output/Data.String.Gen/externs.json
- tests/purs/publish/basic-example/output/Data.String.NonEmpty.CaseInsensitive/docs.json
- tests/purs/publish/basic-example/output/Data.String.NonEmpty.CaseInsensitive/externs.json
- tests/purs/publish/basic-example/output/Data.String.NonEmpty.CodePoints/docs.json
- tests/purs/publish/basic-example/output/Data.String.NonEmpty.CodePoints/externs.json
- tests/purs/publish/basic-example/output/Data.String.NonEmpty.CodeUnits/docs.json
- tests/purs/publish/basic-example/output/Data.String.NonEmpty.CodeUnits/externs.json
- tests/purs/publish/basic-example/output/Data.String.NonEmpty.Internal/docs.json
- tests/purs/publish/basic-example/output/Data.String.NonEmpty.Internal/externs.json
- tests/purs/publish/basic-example/output/Data.String.NonEmpty/docs.json
- tests/purs/publish/basic-example/output/Data.String.NonEmpty/externs.json
- tests/purs/publish/basic-example/output/Data.String.Pattern/docs.json
- tests/purs/publish/basic-example/output/Data.String.Pattern/externs.json
- tests/purs/publish/basic-example/output/Data.String.Regex.Flags/docs.json
- tests/purs/publish/basic-example/output/Data.String.Regex.Flags/externs.json
- tests/purs/publish/basic-example/output/Data.String.Regex.Unsafe/docs.json
- tests/purs/publish/basic-example/output/Data.String.Regex.Unsafe/externs.json
- tests/purs/publish/basic-example/output/Data.String.Regex/docs.json
- tests/purs/publish/basic-example/output/Data.String.Regex/externs.json
- tests/purs/publish/basic-example/output/Data.String.Unsafe/docs.json
- tests/purs/publish/basic-example/output/Data.String.Unsafe/externs.json
- tests/purs/publish/basic-example/output/Data.String/docs.json
- tests/purs/publish/basic-example/output/Data.String/externs.json
tests/purs/publish/basic-example/output/Data.Symbol/docs.json
tests/purs/publish/basic-example/output/Data.Symbol/externs.json
- tests/purs/publish/basic-example/output/Data.Traversable.Accum.Internal/docs.json
- tests/purs/publish/basic-example/output/Data.Traversable.Accum.Internal/externs.json
- tests/purs/publish/basic-example/output/Data.Traversable.Accum/docs.json
- tests/purs/publish/basic-example/output/Data.Traversable.Accum/externs.json
- tests/purs/publish/basic-example/output/Data.Traversable/docs.json
- tests/purs/publish/basic-example/output/Data.Traversable/externs.json
- tests/purs/publish/basic-example/output/Data.TraversableWithIndex/docs.json
- tests/purs/publish/basic-example/output/Data.TraversableWithIndex/externs.json
- tests/purs/publish/basic-example/output/Data.Tuple.Nested/docs.json
- tests/purs/publish/basic-example/output/Data.Tuple.Nested/externs.json
- tests/purs/publish/basic-example/output/Data.Tuple/docs.json
- tests/purs/publish/basic-example/output/Data.Tuple/externs.json
- tests/purs/publish/basic-example/output/Data.Unfoldable/docs.json
- tests/purs/publish/basic-example/output/Data.Unfoldable/externs.json
- tests/purs/publish/basic-example/output/Data.Unfoldable1/docs.json
- tests/purs/publish/basic-example/output/Data.Unfoldable1/externs.json
tests/purs/publish/basic-example/output/Data.Unit/docs.json
tests/purs/publish/basic-example/output/Data.Unit/externs.json
tests/purs/publish/basic-example/output/Data.Void/docs.json
@@ -1101,56 +913,24 @@ extra-source-files:
tests/purs/publish/basic-example/output/Effect.Class/externs.json
tests/purs/publish/basic-example/output/Effect.Console/docs.json
tests/purs/publish/basic-example/output/Effect.Console/externs.json
- tests/purs/publish/basic-example/output/Effect.Ref/docs.json
- tests/purs/publish/basic-example/output/Effect.Ref/externs.json
tests/purs/publish/basic-example/output/Effect.Uncurried/docs.json
tests/purs/publish/basic-example/output/Effect.Uncurried/externs.json
tests/purs/publish/basic-example/output/Effect.Unsafe/docs.json
tests/purs/publish/basic-example/output/Effect.Unsafe/externs.json
tests/purs/publish/basic-example/output/Effect/docs.json
tests/purs/publish/basic-example/output/Effect/externs.json
- tests/purs/publish/basic-example/output/Global.Unsafe/docs.json
- tests/purs/publish/basic-example/output/Global.Unsafe/externs.json
- tests/purs/publish/basic-example/output/Global/docs.json
- tests/purs/publish/basic-example/output/Global/externs.json
tests/purs/publish/basic-example/output/Main/docs.json
tests/purs/publish/basic-example/output/Main/externs.json
- tests/purs/publish/basic-example/output/Math/docs.json
- tests/purs/publish/basic-example/output/Math/externs.json
- tests/purs/publish/basic-example/output/Partial.Unsafe/docs.json
- tests/purs/publish/basic-example/output/Partial.Unsafe/externs.json
- tests/purs/publish/basic-example/output/Partial/docs.json
- tests/purs/publish/basic-example/output/Partial/externs.json
tests/purs/publish/basic-example/output/Prelude/docs.json
tests/purs/publish/basic-example/output/Prelude/externs.json
tests/purs/publish/basic-example/output/PSCI.Support/docs.json
tests/purs/publish/basic-example/output/PSCI.Support/externs.json
tests/purs/publish/basic-example/output/Record.Unsafe/docs.json
tests/purs/publish/basic-example/output/Record.Unsafe/externs.json
- tests/purs/publish/basic-example/output/Test.Assert/docs.json
- tests/purs/publish/basic-example/output/Test.Assert/externs.json
- tests/purs/publish/basic-example/output/Type.Data.Boolean/docs.json
- tests/purs/publish/basic-example/output/Type.Data.Boolean/externs.json
- tests/purs/publish/basic-example/output/Type.Data.Ordering/docs.json
- tests/purs/publish/basic-example/output/Type.Data.Ordering/externs.json
tests/purs/publish/basic-example/output/Type.Data.Row/docs.json
tests/purs/publish/basic-example/output/Type.Data.Row/externs.json
tests/purs/publish/basic-example/output/Type.Data.RowList/docs.json
tests/purs/publish/basic-example/output/Type.Data.RowList/externs.json
- tests/purs/publish/basic-example/output/Type.Data.Symbol/docs.json
- tests/purs/publish/basic-example/output/Type.Data.Symbol/externs.json
- tests/purs/publish/basic-example/output/Type.Equality/docs.json
- tests/purs/publish/basic-example/output/Type.Equality/externs.json
- tests/purs/publish/basic-example/output/Type.Prelude/docs.json
- tests/purs/publish/basic-example/output/Type.Prelude/externs.json
- tests/purs/publish/basic-example/output/Type.Proxy/docs.json
- tests/purs/publish/basic-example/output/Type.Proxy/externs.json
- tests/purs/publish/basic-example/output/Type.Row.Homogeneous/docs.json
- tests/purs/publish/basic-example/output/Type.Row.Homogeneous/externs.json
- tests/purs/publish/basic-example/output/Type.Row/docs.json
- tests/purs/publish/basic-example/output/Type.Row/externs.json
- tests/purs/publish/basic-example/output/Unsafe.Coerce/docs.json
- tests/purs/publish/basic-example/output/Unsafe.Coerce/externs.json
tests/purs/publish/basic-example/resolutions-legacy.json
tests/purs/publish/basic-example/resolutions.json
tests/json-compat/v0.11.3/generics-4.0.0.json
diff --git a/src/Language/PureScript/AST/Declarations.hs b/src/Language/PureScript/AST/Declarations.hs
index 4de31e2..93f8d87 100644
--- a/src/Language/PureScript/AST/Declarations.hs
+++ b/src/Language/PureScript/AST/Declarations.hs
@@ -481,6 +481,15 @@ pattern ValueDecl :: SourceAnn -> Ident -> NameKind -> [Binder] -> [GuardedExpr]
pattern ValueDecl sann ident name binders expr
= ValueDeclaration (ValueDeclarationData sann ident name binders expr)
+data DataConstructorDeclaration = DataConstructorDeclaration
+ { dataCtorAnn :: !SourceAnn
+ , dataCtorName :: !(ProperName 'ConstructorName)
+ , dataCtorFields :: ![(Ident, SourceType)]
+ } deriving (Show, Eq)
+
+traverseDataCtorFields :: Monad m => ([(Ident, SourceType)] -> m [(Ident, SourceType)]) -> DataConstructorDeclaration -> m DataConstructorDeclaration
+traverseDataCtorFields f DataConstructorDeclaration{..} = DataConstructorDeclaration dataCtorAnn dataCtorName <$> f dataCtorFields
+
-- |
-- The data type of declarations
--
@@ -488,7 +497,7 @@ data Declaration
-- |
-- A data type declaration (data or newtype, name, arguments, data constructors)
--
- = DataDeclaration SourceAnn DataDeclType (ProperName 'TypeName) [(Text, Maybe SourceKind)] [(ProperName 'ConstructorName, [(Ident, SourceType)])]
+ = DataDeclaration SourceAnn DataDeclType (ProperName 'TypeName) [(Text, Maybe SourceKind)] [DataConstructorDeclaration]
-- |
-- A minimal mutually recursive set of data type declarations
--
@@ -753,6 +762,12 @@ data Expr
--
| App Expr Expr
-- |
+ -- Hint that an expression is unused.
+ -- This is used to ignore type class dictionaries that are necessarily empty.
+ -- The inner expression lets us solve subgoals before eliminating the whole expression.
+ -- The code gen will render this as `undefined`, regardless of what the inner expression is.
+ | Unused Expr
+ -- |
-- Variable
--
| Var SourceSpan (Qualified Ident)
diff --git a/src/Language/PureScript/AST/Exported.hs b/src/Language/PureScript/AST/Exported.hs
index f24b1dc..9cf015e 100644
--- a/src/Language/PureScript/AST/Exported.hs
+++ b/src/Language/PureScript/AST/Exported.hs
@@ -47,7 +47,7 @@ exportedDeclarations (Module _ _ mn decls exps) = go decls
filterDataConstructors :: Maybe [DeclarationRef] -> Declaration -> Declaration
filterDataConstructors exps (DataDeclaration sa dType tyName tyArgs dctors) =
DataDeclaration sa dType tyName tyArgs $
- filter (isDctorExported tyName exps . fst) dctors
+ filter (isDctorExported tyName exps . dataCtorName) dctors
filterDataConstructors _ other = other
-- |
diff --git a/src/Language/PureScript/AST/Traversals.hs b/src/Language/PureScript/AST/Traversals.hs
index 5367925..70543f8 100644
--- a/src/Language/PureScript/AST/Traversals.hs
+++ b/src/Language/PureScript/AST/Traversals.hs
@@ -72,6 +72,7 @@ everywhereOnValues f g h = (f', g', h')
g' (ObjectUpdateNested obj vs) = g (ObjectUpdateNested (g' obj) (fmap g' vs))
g' (Abs binder v) = g (Abs (h' binder) (g' v))
g' (App v1 v2) = g (App (g' v1) (g' v2))
+ g' (Unused v) = g (Unused (g' v))
g' (IfThenElse v1 v2 v3) = g (IfThenElse (g' v1) (g' v2) (g' v3))
g' (Case vs alts) = g (Case (fmap g' vs) (fmap handleCaseAlternative alts))
g' (TypedValue check v ty) = g (TypedValue check (g' v) ty)
@@ -146,6 +147,7 @@ everywhereOnValuesTopDownM f g h = (f' <=< f, g' <=< g, h' <=< h)
g' (ObjectUpdateNested obj vs) = ObjectUpdateNested <$> (g obj >>= g') <*> traverse (g' <=< g) vs
g' (Abs binder v) = Abs <$> (h binder >>= h') <*> (g v >>= g')
g' (App v1 v2) = App <$> (g v1 >>= g') <*> (g v2 >>= g')
+ g' (Unused v) = Unused <$> (g v >>= g')
g' (IfThenElse v1 v2 v3) = IfThenElse <$> (g v1 >>= g') <*> (g v2 >>= g') <*> (g v3 >>= g')
g' (Case vs alts) = Case <$> traverse (g' <=< g) vs <*> traverse handleCaseAlternative alts
g' (TypedValue check v ty) = TypedValue check <$> (g v >>= g') <*> pure ty
@@ -215,6 +217,7 @@ everywhereOnValuesM f g h = (f', g', h')
g' (ObjectUpdateNested obj vs) = (ObjectUpdateNested <$> g' obj <*> traverse g' vs) >>= g
g' (Abs binder v) = (Abs <$> h' binder <*> g' v) >>= g
g' (App v1 v2) = (App <$> g' v1 <*> g' v2) >>= g
+ g' (Unused v) = (Unused <$> g' v) >>= g
g' (IfThenElse v1 v2 v3) = (IfThenElse <$> g' v1 <*> g' v2 <*> g' v3) >>= g
g' (Case vs alts) = (Case <$> traverse g' vs <*> traverse handleCaseAlternative alts) >>= g
g' (TypedValue check v ty) = (TypedValue check <$> g' v <*> pure ty) >>= g
@@ -287,6 +290,7 @@ everythingOnValues (<>.) f g h i j = (f', g', h', i', j')
g' v@(ObjectUpdateNested obj vs) = foldl (<>.) (g v <>. g' obj) (fmap g' vs)
g' v@(Abs b v1) = g v <>. h' b <>. g' v1
g' v@(App v1 v2) = g v <>. g' v1 <>. g' v2
+ g' v@(Unused v1) = g v <>. g' v1
g' v@(IfThenElse v1 v2 v3) = g v <>. g' v1 <>. g' v2 <>. g' v3
g' v@(Case vs alts) = foldl (<>.) (foldl (<>.) (g v) (fmap g' vs)) (fmap i' alts)
g' v@(TypedValue _ v1 _) = g v <>. g' v1
@@ -368,6 +372,7 @@ everythingWithContextOnValues s0 r0 (<>.) f g h i j = (f'' s0, g'' s0, h'' s0, i
g' s (ObjectUpdateNested obj vs) = foldl (<>.) (g'' s obj) (fmap (g'' s) vs)
g' s (Abs binder v1) = h'' s binder <>. g'' s v1
g' s (App v1 v2) = g'' s v1 <>. g'' s v2
+ g' s (Unused v) = g'' s v
g' s (IfThenElse v1 v2 v3) = g'' s v1 <>. g'' s v2 <>. g'' s v3
g' s (Case vs alts) = foldl (<>.) (foldl (<>.) r0 (fmap (g'' s) vs)) (fmap (i'' s) alts)
g' s (TypedValue _ v1 _) = g'' s v1
@@ -453,6 +458,7 @@ everywhereWithContextOnValuesM s0 f g h i j = (f'' s0, g'' s0, h'' s0, i'' s0, j
g' s (ObjectUpdateNested obj vs) = ObjectUpdateNested <$> g'' s obj <*> traverse (g'' s) vs
g' s (Abs binder v) = Abs <$> h' s binder <*> g'' s v
g' s (App v1 v2) = App <$> g'' s v1 <*> g'' s v2
+ g' s (Unused v) = Unused <$> g'' s v
g' s (IfThenElse v1 v2 v3) = IfThenElse <$> g'' s v1 <*> g'' s v2 <*> g'' s v3
g' s (Case vs alts) = Case <$> traverse (g'' s) vs <*> traverse (i'' s) alts
g' s (TypedValue check v ty) = TypedValue check <$> g'' s v <*> pure ty
@@ -548,6 +554,7 @@ everythingWithScope f g h i j = (f'', g'', h'', i'', \s -> snd . j'' s)
let s' = S.union (S.fromList (localBinderNames b)) s
in h'' s b <> g'' s' v1
g' s (App v1 v2) = g'' s v1 <> g'' s v2
+ g' s (Unused v) = g'' s v
g' s (IfThenElse v1 v2 v3) = g'' s v1 <> g'' s v2 <> g'' s v3
g' s (Case vs alts) = foldMap (g'' s) vs <> foldMap (i'' s) alts
g' s (TypedValue _ v1 _) = g'' s v1
@@ -629,7 +636,7 @@ accumTypes
)
accumTypes f = everythingOnValues mappend forDecls forValues (const mempty) (const mempty) (const mempty)
where
- forDecls (DataDeclaration _ _ _ _ dctors) = mconcat (concatMap (fmap (f . snd) . snd) dctors)
+ forDecls (DataDeclaration _ _ _ _ dctors) = mconcat (concatMap (fmap (f . snd) . dataCtorFields) dctors)
forDecls (ExternDeclaration _ _ ty) = f ty
forDecls (TypeClassDeclaration _ _ _ implies _ _) = mconcat (concatMap (fmap f . constraintArgs) implies)
forDecls (TypeInstanceDeclaration _ _ _ _ cs _ tys _) = mconcat (concatMap (fmap f . constraintArgs) cs) <> mconcat (fmap f tys)
@@ -655,7 +662,7 @@ accumKinds f = everythingOnValues mappend forDecls forValues (const mempty) (con
where
forDecls (DataDeclaration _ _ _ args dctors) =
foldMap (foldMap f . snd) args <>
- foldMap (foldMap (forTypes . snd) . snd) dctors
+ foldMap (foldMap (forTypes . snd) . dataCtorFields) dctors
forDecls (TypeClassDeclaration _ _ args implies _ _) =
foldMap (foldMap f . snd) args <>
foldMap (foldMap forTypes . constraintArgs) implies
diff --git a/src/Language/PureScript/Bundle.hs b/src/Language/PureScript/Bundle.hs
index 24abfb9..2fd4165 100644
--- a/src/Language/PureScript/Bundle.hs
+++ b/src/Language/PureScript/Bundle.hs
@@ -28,9 +28,9 @@ import Data.Aeson ((.=))
import Data.Array ((!))
import Data.Char (chr, digitToInt)
import Data.Foldable (fold)
-import Data.Generics (GenericM, everything, everywhere, gmapMo, mkMp, mkQ, mkT)
+import Data.Generics (GenericM, everything, everythingWithContext, everywhere, gmapMo, mkMp, mkQ, mkT)
import Data.Graph
-import Data.List (stripPrefix)
+import Data.List (stripPrefix, (\\))
import Data.Maybe (catMaybes, fromMaybe, mapMaybe)
import Data.Version (showVersion)
import qualified Data.Aeson as A
@@ -91,9 +91,14 @@ guessModuleIdentifier filename = ModuleIdentifier (takeFileName (takeDirectory f
guessModuleType "foreign.js" = pure Foreign
guessModuleType name = throwError $ UnsupportedModulePath name
--- | A piece of code is identified by its module and its name. These keys are used to label vertices
--- in the dependency graph.
-type Key = (ModuleIdentifier, String)
+data Visibility
+ = Public
+ | Internal
+ deriving (Show, Eq, Ord)
+
+-- | A piece of code is identified by its module, its name, and whether it is an internal variable
+-- or a public member. These keys are used to label vertices in the dependency graph.
+type Key = (ModuleIdentifier, String, Visibility)
-- | An export is either a "regular export", which exports a name from the regular module we are in,
-- or a reexport of a declaration in the corresponding foreign module.
@@ -115,7 +120,7 @@ data ExportType
-- into the output during codegen.
data ModuleElement
= Require JSStatement String (Either String ModuleIdentifier)
- | Member JSStatement Bool String JSExpression [Key]
+ | Member JSStatement Visibility String JSExpression [Key]
| ExportsList [(ExportType, String, JSExpression, [Key])]
| Other JSStatement
| Skip JSStatement
@@ -133,10 +138,10 @@ instance A.ToJSON ModuleElement where
, "name" .= name
, "targetPath" .= targetPath
]
- (Member _ public name _ dependsOn) ->
+ (Member _ visibility name _ dependsOn) ->
A.object [ "type" .= A.String "Member"
, "name" .= name
- , "visibility" .= A.String (if public then "Public" else "Internal")
+ , "visibility" .= show visibility
, "dependsOn" .= map keyToJSON dependsOn
]
(ExportsList exports) ->
@@ -154,9 +159,10 @@ instance A.ToJSON ModuleElement where
where
- keyToJSON (mid, member) =
- A.object [ "module" .= mid
- , "member" .= member
+ keyToJSON (mid, member, visibility) =
+ A.object [ "module" .= mid
+ , "member" .= member
+ , "visibility" .= show visibility
]
exportToJSON (RegularExport sourceName, name, _, dependsOn) =
@@ -275,24 +281,33 @@ withDeps (Module modulePath fn es) = Module modulePath fn (map expandDeps es)
expand (ty, nm, n1, _) = (ty, nm, n1, ordNub (dependencies modulePath n1))
expandDeps other = other
- dependencies :: ModuleIdentifier -> JSExpression -> [(ModuleIdentifier, String)]
- dependencies m = everything (++) (mkQ [] toReference)
+ dependencies :: ModuleIdentifier -> JSExpression -> [Key]
+ dependencies m = everythingWithContext boundNames (++) (mkQ (const [] &&& id) toReference)
where
- toReference :: JSExpression -> [(ModuleIdentifier, String)]
- toReference (JSMemberDot mn _ nm)
+ toReference :: JSExpression -> [String] -> ([Key], [String])
+ toReference (JSMemberDot mn _ nm) bn
| JSIdentifier _ mn' <- mn
, JSIdentifier _ nm' <- nm
, Just mid <- lookup mn' imports
- = [(mid, nm')]
- toReference (JSMemberSquare mn _ nm _)
+ = ([(mid, nm', Public)], bn)
+ toReference (JSMemberSquare mn _ nm _) bn
| JSIdentifier _ mn' <- mn
, Just nm' <- fromStringLiteral nm
, Just mid <- lookup mn' imports
- = [(mid, nm')]
- toReference (JSIdentifier _ nm)
- | nm `elem` boundNames
- = [(m, nm)]
- toReference _ = []
+ = ([(mid, nm', Public)], bn)
+ toReference (JSIdentifier _ nm) bn
+ | nm `elem` bn
+ -- ^ only add a dependency if this name is still in the list of names
+ -- bound to the module level (i.e., hasn't been shadowed by a function
+ -- parameter)
+ = ([(m, nm, Internal)], bn)
+ toReference (JSFunctionExpression _ _ _ params _ _) bn
+ = ([], bn \\ (mapMaybe unIdent $ commaList params))
+ toReference _ bn = ([], bn)
+
+ unIdent :: JSIdent -> Maybe String
+ unIdent (JSIdentName _ name) = Just name
+ unIdent _ = Nothing
-- String literals include the quote chars
fromStringLiteral :: JSExpression -> Maybe String
@@ -350,8 +365,8 @@ toModule mids mid filename top
| Just (importName, importPath) <- matchRequire mids mid stmt
= pure (Require stmt importName importPath)
toModuleElement stmt
- | Just (exported, name, decl) <- matchMember stmt
- = pure (Member stmt exported name decl [])
+ | Just (visibility, name, decl) <- matchMember stmt
+ = pure (Member stmt visibility name decl [])
toModuleElement stmt
| Just props <- matchExportsAssignment stmt
= ExportsList <$> traverse toExport (trailingCommaList props)
@@ -393,7 +408,7 @@ getExportedIdentifiers mname top
go stmt
| Just props <- matchExportsAssignment stmt
= traverse toIdent (trailingCommaList props)
- | Just (True, name, _) <- matchMember stmt
+ | Just (Public, name, _) <- matchMember stmt
= pure [name]
| otherwise
= pure []
@@ -425,18 +440,18 @@ matchRequire mids mid stmt
= Nothing
-- Matches JS member declarations.
-matchMember :: JSStatement -> Maybe (Bool, String, JSExpression)
+matchMember :: JSStatement -> Maybe (Visibility, String, JSExpression)
matchMember stmt
-- var foo = expr;
| JSVariable _ jsInit _ <- stmt
, [JSVarInitExpression var varInit] <- commaList jsInit
, JSIdentifier _ name <- var
, JSVarInit _ decl <- varInit
- = Just (False, name, decl)
+ = Just (Internal, name, decl)
-- exports.foo = expr; exports["foo"] = expr;
| JSAssignStatement e (JSAssign _) decl _ <- stmt
, Just name <- accessor e
- = Just (True, name, decl)
+ = Just (Public, name, decl)
| otherwise
= Nothing
where
@@ -484,26 +499,20 @@ compile modules entryPoints = filteredModules
where
-- | Create a set of vertices for a module element.
--
- -- Some special cases worth commenting on:
- --
- -- 1) Regular exports which simply export their own name do not count as dependencies.
- -- Regular exports which rename and reexport an operator do count, however.
- --
- -- 2) Require statements don't contribute towards dependencies, since they effectively get
- -- inlined wherever they are used inside other module elements.
+ -- Require statements don't contribute towards dependencies, since they effectively get
+ -- inlined wherever they are used inside other module elements.
toVertices :: ModuleIdentifier -> ModuleElement -> [(ModuleElement, Key, [Key])]
- toVertices p m@(Member _ _ nm _ deps) = [(m, (p, nm), deps)]
- toVertices p m@(ExportsList exps) = mapMaybe toVertex exps
+ toVertices p m@(Member _ visibility nm _ deps) = [(m, (p, nm, visibility), deps)]
+ toVertices p m@(ExportsList exps) = map toVertex exps
where
- toVertex (ForeignReexport, nm, _, ks) = Just (m, (p, nm), ks)
- toVertex (RegularExport nm, nm1, _, ks) | nm /= nm1 = Just (m, (p, nm1), ks)
- toVertex _ = Nothing
+ toVertex (ForeignReexport, nm, _, ks) = (m, (p, nm, Public), ks)
+ toVertex (RegularExport _, nm, _, ks) = (m, (p, nm, Public), ks)
toVertices _ _ = []
-- | The set of vertices whose connected components we are interested in keeping.
entryPointVertices :: [Vertex]
entryPointVertices = catMaybes $ do
- (_, k@(mid, _), _) <- verts
+ (_, k@(mid, _, Public), _) <- verts
guard $ mid `elem` entryPoints
return (vertexFor k)
@@ -516,7 +525,7 @@ compile modules entryPoints = filteredModules
moduleReferenceMap = M.fromAscListWith mappend $ map (vertToModule &&& vertToModuleRefs) $ S.toList reachableSet
where
vertToModuleRefs v = foldMap (S.singleton . vertToModule) $ graph ! v
- vertToModule v = m where (_, (m, _), _) = vertexToNode v
+ vertToModule v = m where (_, (m, _, _), _) = vertexToNode v
filteredModules :: [Module]
filteredModules = map filterUsed modules
@@ -539,11 +548,11 @@ compile modules entryPoints = filteredModules
-- | Filter out the exports for members which aren't used.
filterExports :: ModuleElement -> ModuleElement
- filterExports (ExportsList exps) = ExportsList (filter (\(_, nm, _, _) -> isKeyUsed (mid, nm)) exps)
+ filterExports (ExportsList exps) = ExportsList (filter (\(_, nm, _, _) -> isKeyUsed (mid, nm, Public)) exps)
filterExports me = me
isDeclUsed :: ModuleElement -> Bool
- isDeclUsed (Member _ _ nm _ _) = isKeyUsed (mid, nm)
+ isDeclUsed (Member _ visibility nm _ _) = isKeyUsed (mid, nm, visibility)
isDeclUsed (Require _ _ (Right midRef)) = midRef `S.member` modulesReferenced
isDeclUsed _ = True
diff --git a/src/Language/PureScript/CST/Convert.hs b/src/Language/PureScript/CST/Convert.hs
index 80e8cc4..6f25050 100644
--- a/src/Language/PureScript/CST/Convert.hs
+++ b/src/Language/PureScript/CST/Convert.hs
@@ -446,18 +446,21 @@ convertDeclaration :: String -> Declaration a -> [AST.Declaration]
convertDeclaration fileName decl = case decl of
DeclData _ (DataHead _ a vars) bd -> do
let
- ctr (DataCtor _ x ys) = (nameValue x, zip ctrFields $ convertType fileName <$> ys)
- ctrs = case bd of
- Nothing -> []
- Just (_, cs) -> ctr <$> toList cs
- pure $ AST.DataDeclaration ann Env.Data (nameValue a) (goTypeVar <$> vars) ctrs
+ ctrs :: SourceToken -> DataCtor a -> [(SourceToken, DataCtor a)] -> [AST.DataConstructorDeclaration]
+ ctrs st (DataCtor _ name fields) tl
+ = AST.DataConstructorDeclaration (sourceAnnCommented fileName st (nameTok name)) (nameValue name) (zip ctrFields $ convertType fileName <$> fields)
+ : (case tl of
+ [] -> []
+ (st', ctor) : tl' -> ctrs st' ctor tl'
+ )
+ pure $ AST.DataDeclaration ann Env.Data (nameValue a) (goTypeVar <$> vars) (maybe [] (\(st, Separated hd tl) -> ctrs st hd tl) bd)
DeclType _ (DataHead _ a vars) _ bd ->
pure $ AST.TypeSynonymDeclaration ann
(nameValue a)
(goTypeVar <$> vars)
(convertType fileName bd)
- DeclNewtype _ (DataHead _ a vars) _ x ys -> do
- let ctrs = [(nameValue x, [(head ctrFields, convertType fileName ys)])]
+ DeclNewtype _ (DataHead _ a vars) st x ys -> do
+ let ctrs = [AST.DataConstructorDeclaration (sourceAnnCommented fileName st (snd $ declRange decl)) (nameValue x) [(head ctrFields, convertType fileName ys)]]
pure $ AST.DataDeclaration ann Env.Newtype (nameValue a) (goTypeVar <$> vars) ctrs
DeclClass _ (ClassHead _ sup name vars fdeps) bd -> do
let
diff --git a/src/Language/PureScript/CST/Layout.hs b/src/Language/PureScript/CST/Layout.hs
index 2785e06..39b38fb 100644
--- a/src/Language/PureScript/CST/Layout.hs
+++ b/src/Language/PureScript/CST/Layout.hs
@@ -238,9 +238,10 @@ insertLayout src@(SourceToken tokAnn tok) nextPos stack =
_ ->
state & insertDefault
where
- equalsP _ LytWhere = True
- equalsP _ LytLet = True
- equalsP _ _ = False
+ equalsP _ LytWhere = True
+ equalsP _ LytLet = True
+ equalsP _ LytLetStmt = True
+ equalsP _ _ = False
-- Guards need masking because of commas.
TokPipe ->
@@ -249,6 +250,8 @@ insertLayout src@(SourceToken tokAnn tok) nextPos stack =
state' & pushStack tokPos LytCaseGuard & insertToken src
state'@((_, LytLet) : _, _) ->
state' & pushStack tokPos LytDeclGuard & insertToken src
+ state'@((_, LytLetStmt) : _, _) ->
+ state' & pushStack tokPos LytDeclGuard & insertToken src
state'@((_, LytWhere) : _, _) ->
state' & pushStack tokPos LytDeclGuard & insertToken src
_ ->
diff --git a/src/Language/PureScript/CoreFn/Desugar.hs b/src/Language/PureScript/CoreFn/Desugar.hs
index b404558..3ab44b0 100644
--- a/src/Language/PureScript/CoreFn/Desugar.hs
+++ b/src/Language/PureScript/CoreFn/Desugar.hs
@@ -28,6 +28,7 @@ import Language.PureScript.Sugar.TypeClasses (typeClassMemberName, superClassDic
import Language.PureScript.Types
import Language.PureScript.PSString (mkString)
import qualified Language.PureScript.AST as A
+import qualified Language.PureScript.Constants as C
-- | Desugars a module from AST to CoreFn representation.
moduleToCoreFn :: Environment -> A.Module -> Module Ann
@@ -52,14 +53,16 @@ moduleToCoreFn env (A.Module modSS coms mn decls (Just exps)) =
-- | Desugars member declarations from AST to CoreFn representation.
declToCoreFn :: A.Declaration -> [Bind Ann]
- declToCoreFn (A.DataDeclaration (ss, com) Newtype _ _ [(ctor, _)]) =
- [NonRec (ssA ss) (properToIdent ctor) $
+ declToCoreFn (A.DataDeclaration (ss, com) Newtype _ _ [ctor]) =
+ [NonRec (ssA ss) (properToIdent $ A.dataCtorName ctor) $
Abs (ss, com, Nothing, Just IsNewtype) (Ident "x") (Var (ssAnn ss) $ Qualified Nothing (Ident "x"))]
declToCoreFn d@(A.DataDeclaration _ Newtype _ _ _) =
error $ "Found newtype with multiple constructors: " ++ show d
declToCoreFn (A.DataDeclaration (ss, com) Data tyName _ ctors) =
- flip fmap ctors $ \(ctor, _) ->
- let (_, _, _, fields) = lookupConstructor env (Qualified (Just mn) ctor)
+ flip fmap ctors $ \ctorDecl ->
+ let
+ ctor = A.dataCtorName ctorDecl
+ (_, _, _, fields) = lookupConstructor env (Qualified (Just mn) ctor)
in NonRec (ssA ss) (properToIdent ctor) $ Constructor (ss, com, Nothing, Nothing) tyName ctor fields
declToCoreFn (A.DataBindingGroupDeclaration ds) =
concatMap declToCoreFn ds
@@ -85,6 +88,8 @@ moduleToCoreFn env (A.Module modSS coms mn decls (Just exps)) =
internalError "Abs with Binder argument was not desugared before exprToCoreFn mn"
exprToCoreFn ss com ty (A.App v1 v2) =
App (ss, com, ty, Nothing) (exprToCoreFn ss [] Nothing v1) (exprToCoreFn ss [] Nothing v2)
+ exprToCoreFn ss com ty (A.Unused _) =
+ Var (ss, com, ty, Nothing) (Qualified (Just (ModuleName [ProperName C.prim])) (Ident C.undefined))
exprToCoreFn _ com ty (A.Var ss ident) =
Var (ss, com, ty, getValueMeta ident) ident
exprToCoreFn ss com ty (A.IfThenElse v1 v2 v3) =
diff --git a/src/Language/PureScript/CoreImp/Optimizer/TCO.hs b/src/Language/PureScript/CoreImp/Optimizer/TCO.hs
index fcf49fc..2b0f077 100644
--- a/src/Language/PureScript/CoreImp/Optimizer/TCO.hs
+++ b/src/Language/PureScript/CoreImp/Optimizer/TCO.hs
@@ -4,6 +4,7 @@ module Language.PureScript.CoreImp.Optimizer.TCO (tco) where
import Prelude.Compat
import Data.Text (Text)
+import qualified Language.PureScript.Constants as C
import Language.PureScript.CoreImp.AST
import Language.PureScript.AST.SourcePos (SourceSpan)
import Safe (headDef, tailSafe)
@@ -120,6 +121,9 @@ tco = everywhere convert where
markDone ss = Assignment ss (Var ss tcoDone) (BooleanLiteral ss True)
collectArgs :: [[AST]] -> AST -> [[AST]]
+ collectArgs acc (App _ fn []) =
+ -- count 0-argument applications as single-argument so we get the correct number of args
+ collectArgs ([Var Nothing C.undefined] : acc) fn
collectArgs acc (App _ fn args') = collectArgs (args' : acc) fn
collectArgs acc _ = acc
diff --git a/src/Language/PureScript/Docs/Convert/Single.hs b/src/Language/PureScript/Docs/Convert/Single.hs
index 1ab7188..60e2ddb 100644
--- a/src/Language/PureScript/Docs/Convert/Single.hs
+++ b/src/Language/PureScript/Docs/Convert/Single.hs
@@ -128,9 +128,9 @@ convertDeclaration (P.DataDeclaration sa dtype _ args ctors) title =
where
info = DataDeclaration dtype (fmap (fmap (fmap ($> ()))) args)
children = map convertCtor ctors
- convertCtor :: (P.ProperName 'P.ConstructorName, [(P.Ident, P.SourceType)]) -> ChildDeclaration
- convertCtor (ctor', tys) =
- ChildDeclaration (P.runProperName ctor') Nothing Nothing (ChildDataConstructor (fmap (($> ()) . snd) tys))
+ convertCtor :: P.DataConstructorDeclaration -> ChildDeclaration
+ convertCtor P.DataConstructorDeclaration{..} =
+ ChildDeclaration (P.runProperName dataCtorName) (convertComments $ snd dataCtorAnn) Nothing (ChildDataConstructor (fmap (($> ()) . snd) dataCtorFields))
convertDeclaration (P.ExternDataDeclaration sa _ kind') title =
basicDeclaration sa title (ExternDataDeclaration (kind' $> ()))
convertDeclaration (P.ExternKindDeclaration sa _) title =
diff --git a/src/Language/PureScript/Docs/Prim.hs b/src/Language/PureScript/Docs/Prim.hs
index 6fc9253..3fabafa 100644
--- a/src/Language/PureScript/Docs/Prim.hs
+++ b/src/Language/PureScript/Docs/Prim.hs
@@ -348,7 +348,7 @@ partial = primClass "Partial" $ T.unlines
, "a partial function with a bad input will usually cause an error to be"
, "thrown, although it is not safe to assume that this will happen in all"
, "cases. For more information, see"
- , "[the Partial type class guide](https://github.com/purescript/documentation/blob/master/guides/The-Partial-type-class.md)."
+ , "[purescript-partial](https://pursuit.purescript.org/packages/purescript-partial/)."
]
kindBoolean :: Declaration
diff --git a/src/Language/PureScript/Environment.hs b/src/Language/PureScript/Environment.hs
index 3e9505a..f6bea0e 100644
--- a/src/Language/PureScript/Environment.hs
+++ b/src/Language/PureScript/Environment.hs
@@ -69,6 +69,8 @@ data TypeClassData = TypeClassData
-- typeClassArguments and typeClassDependencies.
, typeClassCoveringSets :: S.Set (S.Set Int)
-- ^ A sets of arguments that can be used to infer all other arguments.
+ , typeClassIsEmpty :: Bool
+ -- ^ Whether or not dictionaries for this type class are necessarily empty.
} deriving (Show, Generic)
instance NFData TypeClassData
@@ -125,8 +127,9 @@ makeTypeClassData
-> [(Ident, SourceType)]
-> [SourceConstraint]
-> [FunctionalDependency]
+ -> Bool
-> TypeClassData
-makeTypeClassData args m s deps = TypeClassData args m s deps determinedArgs coveringSets
+makeTypeClassData args m s deps tcIsEmpty = TypeClassData args m s deps determinedArgs coveringSets tcIsEmpty
where
argumentIndicies = [0 .. length args - 1]
@@ -486,7 +489,7 @@ primTypeErrorTypes =
primClasses :: M.Map (Qualified (ProperName 'ClassName)) TypeClassData
primClasses =
M.fromList
- [ (primName "Partial", (makeTypeClassData [] [] [] []))
+ [ (primName "Partial", (makeTypeClassData [] [] [] [] True))
]
-- | This contains all of the type classes from all Prim modules.
@@ -511,7 +514,7 @@ primRowClasses =
[ FunctionalDependency [0, 1] [2]
, FunctionalDependency [1, 2] [0]
, FunctionalDependency [2, 0] [1]
- ])
+ ] True)
-- class Nub (original :: # Type) (nubbed :: # Type) | i -> o
, (primSubName C.moduleRow "Nub", makeTypeClassData
@@ -519,13 +522,13 @@ primRowClasses =
, ("nubbed", Just (kindRow kindType))
] [] []
[ FunctionalDependency [0] [1]
- ])
+ ] True)
-- class Lacks (label :: Symbol) (row :: # Type)
, (primSubName C.moduleRow "Lacks", makeTypeClassData
[ ("label", Just kindSymbol)
, ("row", Just (kindRow kindType))
- ] [] [] [])
+ ] [] [] [] True)
-- class RowCons (label :: Symbol) (a :: Type) (tail :: # Type) (row :: # Type) | label tail a -> row, label row -> tail a
, (primSubName C.moduleRow "Cons", makeTypeClassData
@@ -536,7 +539,7 @@ primRowClasses =
] [] []
[ FunctionalDependency [0, 1, 2] [3]
, FunctionalDependency [0, 3] [1, 2]
- ])
+ ] True)
]
primRowListClasses :: M.Map (Qualified (ProperName 'ClassName)) TypeClassData
@@ -548,7 +551,7 @@ primRowListClasses =
, ("list", Just kindRowList)
] [] []
[ FunctionalDependency [0] [1]
- ])
+ ] True)
]
primSymbolClasses :: M.Map (Qualified (ProperName 'ClassName)) TypeClassData
@@ -563,7 +566,7 @@ primSymbolClasses =
[ FunctionalDependency [0, 1] [2]
, FunctionalDependency [1, 2] [0]
, FunctionalDependency [2, 0] [1]
- ])
+ ] True)
-- class Compare (left :: Symbol) (right :: Symbol) (ordering :: Ordering) | left right -> ordering
, (primSubName C.moduleSymbol "Compare", makeTypeClassData
@@ -572,7 +575,7 @@ primSymbolClasses =
, ("ordering", Just kindOrdering)
] [] []
[ FunctionalDependency [0, 1] [2]
- ])
+ ] True)
-- class Cons (head :: Symbol) (tail :: Symbol) (symbol :: Symbol) | head tail -> symbol, symbol -> head tail
, (primSubName C.moduleSymbol "Cons", makeTypeClassData
@@ -582,7 +585,7 @@ primSymbolClasses =
] [] []
[ FunctionalDependency [0, 1] [2]
, FunctionalDependency [2] [0, 1]
- ])
+ ] True)
]
primTypeErrorClasses :: M.Map (Qualified (ProperName 'ClassName)) TypeClassData
@@ -590,11 +593,11 @@ primTypeErrorClasses =
M.fromList
-- class Fail (message :: Symbol)
[ (primSubName C.typeError "Fail", makeTypeClassData
- [("message", Just kindDoc)] [] [] [])
+ [("message", Just kindDoc)] [] [] [] True)
-- class Warn (message :: Symbol)
, (primSubName C.typeError "Warn", makeTypeClassData
- [("message", Just kindDoc)] [] [] [])
+ [("message", Just kindDoc)] [] [] [] True)
]
-- | Finds information about data constructors from the current environment.
diff --git a/src/Language/PureScript/Errors.hs b/src/Language/PureScript/Errors.hs
index 08bee19..cb4f460 100644
--- a/src/Language/PureScript/Errors.hs
+++ b/src/Language/PureScript/Errors.hs
@@ -616,26 +616,12 @@ prettyPrintSingleError (PPEOptions codeColor full level showDocs relPath) e = fl
, markCodeBox $ indent $ typeAsBox prettyDepth ty
]
renderSimpleErrorMessage (TypesDoNotUnify u1 u2)
- = let (sorted1, sorted2) = sortRows u1 u2
-
- sortRows :: Ord a => Type a -> Type a -> (Type a, Type a)
- sortRows r1@RCons{} r2@RCons{} = sortRows' (rowToList r1) (rowToList r2)
- sortRows t1 t2 = (t1, t2)
-
- -- Put the common labels last
- sortRows' :: Ord a => ([RowListItem a], Type a) -> ([RowListItem a], Type a) -> (Type a, Type a)
- sortRows' (s1, r1) (s2, r2) =
- let elem' s (RowListItem _ name ty) = any (\(RowListItem _ name' ty') -> name == name' && eqType ty ty') s
- sort' = sortBy (comparing $ \(RowListItem _ name ty) -> (name, ty))
- (common1, unique1) = partition (elem' s2) s1
- (common2, unique2) = partition (elem' s1) s2
- in ( rowFromList (sort' unique1 ++ sort' common1, r1)
- , rowFromList (sort' unique2 ++ sort' common2, r2)
- )
+ = let (row1Box, row2Box) = printRows u1 u2
+
in paras [ line "Could not match type"
- , markCodeBox $ indent $ typeAsBox prettyDepth sorted1
+ , row1Box
, line "with type"
- , markCodeBox $ indent $ typeAsBox prettyDepth sorted2
+ , row2Box
]
renderSimpleErrorMessage (KindsDoNotUnify k1 k2) =
@@ -1062,6 +1048,16 @@ prettyPrintSingleError (PPEOptions codeColor full level showDocs relPath) e = fl
]
renderHint :: ErrorMessageHint -> Box.Box -> Box.Box
+ renderHint (ErrorUnifyingTypes t1@RCons{} t2@RCons{}) detail =
+ let (row1Box, row2Box) = printRows t1 t2
+ in paras [ detail
+ , Box.hsep 1 Box.top [ line "while trying to match type"
+ , row1Box
+ ]
+ , Box.moveRight 2 $ Box.hsep 1 Box.top [ line "with type"
+ , row2Box
+ ]
+ ]
renderHint (ErrorUnifyingTypes t1 t2) detail =
paras [ detail
, Box.hsep 1 Box.top [ line "while trying to match type"
@@ -1190,6 +1186,27 @@ prettyPrintSingleError (PPEOptions codeColor full level showDocs relPath) e = fl
, detail
]
+ printRow :: (Int -> Type a -> Box.Box) -> Type a -> Box.Box
+ printRow f t = markCodeBox $ indent $ f prettyDepth t
+
+ -- If both rows are not empty, print them as diffs
+ printRows :: Type a -> Type a -> (Box.Box, Box.Box)
+ printRows r1@RCons{} r2@RCons{} = let
+ (sorted1, sorted2) = filterRows (rowToList r1) (rowToList r2)
+ in (printRow typeDiffAsBox sorted1, printRow typeDiffAsBox sorted2)
+ printRows r1 r2 = (printRow typeAsBox r1, printRow typeAsBox r2)
+
+ -- Keep the unique labels only
+ filterRows :: ([RowListItem a], Type a) -> ([RowListItem a], Type a) -> (Type a, Type a)
+ filterRows (s1, r1) (s2, r2) =
+ let sort' = sortBy (comparing $ \(RowListItem _ name ty) -> (name, ty))
+ notElem' s (RowListItem _ name ty) = all (\(RowListItem _ name' ty') -> name /= name' || not (eqType ty ty')) s
+ unique1 = filter (notElem' s2) s1
+ unique2 = filter (notElem' s1) s2
+ in ( rowFromList (sort' unique1, r1)
+ , rowFromList (sort' unique2, r2)
+ )
+
renderContext :: Context -> [Box.Box]
renderContext [] = []
renderContext ctx =
diff --git a/src/Language/PureScript/Externs.hs b/src/Language/PureScript/Externs.hs
index 0953ea2..31d24b2 100644
--- a/src/Language/PureScript/Externs.hs
+++ b/src/Language/PureScript/Externs.hs
@@ -132,6 +132,7 @@ data ExternsDeclaration =
, edClassMembers :: [(Ident, SourceType)]
, edClassConstraints :: [SourceConstraint]
, edFunctionalDependencies :: [FunctionalDependency]
+ , edIsEmpty :: Bool
}
-- | An instance declaration
| EDInstance
@@ -157,7 +158,7 @@ applyExternsFileToEnvironment ExternsFile{..} = flip (foldl' applyDecl) efDeclar
applyDecl env (EDTypeSynonym pn args ty) = env { typeSynonyms = M.insert (qual pn) (args, ty) (typeSynonyms env) }
applyDecl env (EDDataConstructor pn dTy tNm ty nms) = env { dataConstructors = M.insert (qual pn) (dTy, tNm, ty, nms) (dataConstructors env) }
applyDecl env (EDValue ident ty) = env { names = M.insert (Qualified (Just efModuleName) ident) (ty, External, Defined) (names env) }
- applyDecl env (EDClass pn args members cs deps) = env { typeClasses = M.insert (qual pn) (makeTypeClassData args members cs deps) (typeClasses env) }
+ applyDecl env (EDClass pn args members cs deps tcIsEmpty) = env { typeClasses = M.insert (qual pn) (makeTypeClassData args members cs deps tcIsEmpty) (typeClasses env) }
applyDecl env (EDKind pn) = env { kinds = S.insert (qual pn) (kinds env) }
applyDecl env (EDInstance className ident tys cs ch idx) =
env { typeClassDictionaries =
@@ -227,7 +228,7 @@ moduleToExternsFile (Module ss _ mn ds (Just exps)) env = ExternsFile{..}
, Just (_, synTy) <- Qualified (Just mn) (coerceProperName className) `M.lookup` typeSynonyms env
= [ EDType (coerceProperName className) kind TypeSynonym
, EDTypeSynonym (coerceProperName className) typeClassArguments synTy
- , EDClass className typeClassArguments typeClassMembers typeClassSuperclasses typeClassDependencies
+ , EDClass className typeClassArguments typeClassMembers typeClassSuperclasses typeClassDependencies typeClassIsEmpty
]
toExternsDeclaration (TypeInstanceRef _ ident)
= [ EDInstance tcdClassName ident tcdInstanceTypes tcdDependencies tcdChain tcdIndex
diff --git a/src/Language/PureScript/Ide/SourceFile.hs b/src/Language/PureScript/Ide/SourceFile.hs
index bda3212..726478a 100644
--- a/src/Language/PureScript/Ide/SourceFile.hs
+++ b/src/Language/PureScript/Ide/SourceFile.hs
@@ -87,8 +87,7 @@ extractSpans d = case d of
P.TypeClassDeclaration (ss, _) name _ _ _ members ->
(IdeNamespaced IdeNSType (P.runProperName name), ss) : concatMap extractSpans' members
P.DataDeclaration (ss, _) _ name _ ctors ->
- (IdeNamespaced IdeNSType (P.runProperName name), ss)
- : map (\(cname, _) -> (IdeNamespaced IdeNSValue (P.runProperName cname), ss)) ctors
+ (IdeNamespaced IdeNSType (P.runProperName name), ss) : map dtorSpan ctors
P.FixityDeclaration (ss, _) (Left (P.ValueFixity _ _ opName)) ->
[(IdeNamespaced IdeNSValue (P.runOpName opName), ss)]
P.FixityDeclaration (ss, _) (Right (P.TypeFixity _ _ opName)) ->
@@ -101,6 +100,9 @@ extractSpans d = case d of
[(IdeNamespaced IdeNSKind (P.runProperName name), ss)]
_ -> []
where
+ dtorSpan :: P.DataConstructorDeclaration -> (IdeNamespaced, P.SourceSpan)
+ dtorSpan P.DataConstructorDeclaration{ P.dataCtorName = name, P.dataCtorAnn = (ss, _) } =
+ (IdeNamespaced IdeNSValue (P.runProperName name), ss)
-- We need this special case to be able to also get the position info for
-- typeclass member functions. Typedeclarations would clash with value
-- declarations for non-typeclass members, which is why we can't handle them
diff --git a/src/Language/PureScript/Ide/State.hs b/src/Language/PureScript/Ide/State.hs
index d29f446..419b529 100644
--- a/src/Language/PureScript/Ide/State.hs
+++ b/src/Language/PureScript/Ide/State.hs
@@ -227,6 +227,7 @@ resolveLocationsForModule (defs, types) decls =
convertDeclaration (IdeDeclarationAnn ann d) = convertDeclaration'
annotateFunction
annotateValue
+ annotateDataConstructor
annotateType
annotateKind
annotateModule
@@ -236,6 +237,7 @@ resolveLocationsForModule (defs, types) decls =
, _annTypeAnnotation = Map.lookup x types
})
annotateValue x = IdeDeclarationAnn (ann {_annLocation = Map.lookup (IdeNamespaced IdeNSValue x) defs})
+ annotateDataConstructor x = IdeDeclarationAnn (ann {_annLocation = Map.lookup (IdeNamespaced IdeNSValue x) defs})
annotateType x = IdeDeclarationAnn (ann {_annLocation = Map.lookup (IdeNamespaced IdeNSType x) defs})
annotateKind x = IdeDeclarationAnn (ann {_annLocation = Map.lookup (IdeNamespaced IdeNSKind x) defs})
annotateModule x = IdeDeclarationAnn (ann {_annLocation = Map.lookup (IdeNamespaced IdeNSModule x) defs})
@@ -246,9 +248,10 @@ convertDeclaration'
-> (Text -> IdeDeclaration -> IdeDeclarationAnn)
-> (Text -> IdeDeclaration -> IdeDeclarationAnn)
-> (Text -> IdeDeclaration -> IdeDeclarationAnn)
+ -> (Text -> IdeDeclaration -> IdeDeclarationAnn)
-> IdeDeclaration
-> IdeDeclarationAnn
-convertDeclaration' annotateFunction annotateValue annotateType annotateKind annotateModule d =
+convertDeclaration' annotateFunction annotateValue annotateDataConstructor annotateType annotateKind annotateModule d =
case d of
IdeDeclValue v ->
annotateFunction (v ^. ideValueIdent) d
@@ -257,7 +260,7 @@ convertDeclaration' annotateFunction annotateValue annotateType annotateKind ann
IdeDeclTypeSynonym s ->
annotateType (s ^. ideSynonymName . properNameT) d
IdeDeclDataConstructor dtor ->
- annotateValue (dtor ^. ideDtorName . properNameT) d
+ annotateDataConstructor (dtor ^. ideDtorName . properNameT) d
IdeDeclTypeClass tc ->
annotateType (tc ^. ideTCName . properNameT) d
IdeDeclValueOperator operator ->
@@ -284,12 +287,16 @@ resolveDocumentationForModule
resolveDocumentationForModule (P.Module _ moduleComments moduleName sdecls _) decls = map convertDecl decls
where
comments :: Map P.Name [P.Comment]
- comments = Map.insert (P.ModName moduleName) moduleComments $ Map.fromListWith (flip (<>)) $ mapMaybe (\d ->
- case name d of
- Just name' -> Just (name', snd $ P.declSourceAnn d)
- _ -> Nothing)
+ comments = Map.insert (P.ModName moduleName) moduleComments $ Map.fromListWith (flip (<>)) $ concatMap (\case
+ P.DataDeclaration (_, cs) _ ctorName _ ctors ->
+ (P.TyName ctorName, cs) : map dtorComments ctors
+ decl ->
+ maybe [] (\name' -> [(name', snd (P.declSourceAnn decl))]) (name decl))
sdecls
+ dtorComments :: P.DataConstructorDeclaration -> (P.Name, [P.Comment])
+ dtorComments dcd = (P.DctorName (P.dataCtorName dcd), snd (P.dataCtorAnn dcd))
+
name :: P.Declaration -> Maybe P.Name
name (P.TypeDeclaration d) = Just $ P.IdentName $ P.tydeclIdent d
name decl = P.declName decl
@@ -299,6 +306,7 @@ resolveDocumentationForModule (P.Module _ moduleComments moduleName sdecls _) de
convertDeclaration'
(annotateValue . P.IdentName)
(annotateValue . P.IdentName . P.Ident)
+ (annotateValue . P.DctorName . P.ProperName)
(annotateValue . P.TyName . P.ProperName)
(annotateValue . P.KiName . P.ProperName)
(annotateValue . P.ModName . P.moduleNameFromString)
diff --git a/src/Language/PureScript/Make.hs b/src/Language/PureScript/Make.hs
index f60f565..f983266 100644
--- a/src/Language/PureScript/Make.hs
+++ b/src/Language/PureScript/Make.hs
@@ -22,7 +22,7 @@ import Data.Function (on)
import Data.Foldable (for_)
import Data.List (foldl', sortBy)
import qualified Data.List.NonEmpty as NEL
-import Data.Maybe (fromMaybe)
+import Data.Maybe (fromMaybe, mapMaybe)
import qualified Data.Map as M
import qualified Data.Set as S
import qualified Data.Text as T
@@ -121,19 +121,22 @@ make ma@MakeActions{..} ms = do
(importPrim <$> CST.resFull m)
(deps `inOrderOf` map (getModuleName . CST.resPartial) sorted)
- -- Wait for all threads to complete, and collect errors.
- errors <- BuildPlan.collectErrors buildPlan
+ -- Wait for all threads to complete, and collect results (and errors).
+ results <- BuildPlan.collectResults buildPlan
-- All threads have completed, rethrow any caught errors.
+ let errors = mapMaybe buildJobFailure $ M.elems results
unless (null errors) $ throwError (mconcat errors)
- -- Collect all ExternsFiles
- results <- BuildPlan.collectResults buildPlan
-
-- Here we return all the ExternsFile in the ordering of the topological sort,
-- so they can be folded into an Environment. This result is used in the tests
-- and in PSCI.
- let lookupResult mn = fromMaybe (internalError "make: module not found in results") (M.lookup mn results)
+ let lookupResult mn =
+ snd
+ . fromMaybe (internalError "make: module's build job did not succeed")
+ . buildJobSuccess
+ . fromMaybe (internalError "make: module not found in results")
+ $ M.lookup mn results
return (map (lookupResult . getModuleName . CST.resPartial) sorted)
where
@@ -168,21 +171,21 @@ make ma@MakeActions{..} ms = do
inOrderOf xs ys = let s = S.fromList xs in filter (`S.member` s) ys
buildModule :: BuildPlan -> ModuleName -> FilePath -> Either (NEL.NonEmpty CST.ParserError) Module -> [ModuleName] -> m ()
- buildModule buildPlan moduleName fp mres deps = flip catchError (complete Nothing . Just) $ do
- m <- CST.unwrapParserError fp mres
- -- We need to wait for dependencies to be built, before checking if the current
- -- module should be rebuilt, so the first thing to do is to wait on the
- -- MVars for the module's dependencies.
- mexterns <- fmap unzip . sequence <$> traverse (getResult buildPlan) deps
-
- case mexterns of
- Just (_, externs) -> do
- (exts, warnings) <- listen $ rebuildModule ma externs m
- complete (Just (warnings, exts)) Nothing
- Nothing -> complete Nothing Nothing
- where
- complete :: Maybe (MultipleErrors, ExternsFile) -> Maybe MultipleErrors -> m ()
- complete = BuildPlan.markComplete buildPlan moduleName
+ buildModule buildPlan moduleName fp mres deps = do
+ result <- flip catchError (return . BuildJobFailed) $ do
+ m <- CST.unwrapParserError fp mres
+ -- We need to wait for dependencies to be built, before checking if the current
+ -- module should be rebuilt, so the first thing to do is to wait on the
+ -- MVars for the module's dependencies.
+ mexterns <- fmap unzip . sequence <$> traverse (getResult buildPlan) deps
+
+ case mexterns of
+ Just (_, externs) -> do
+ (exts, warnings) <- listen $ rebuildModule ma externs m
+ return $ BuildJobSucceeded warnings exts
+ Nothing -> return BuildJobSkipped
+
+ BuildPlan.markComplete buildPlan moduleName result
-- | Infer the module name for a module by looking for the same filename with
-- a .js extension.
diff --git a/src/Language/PureScript/Make/BuildPlan.hs b/src/Language/PureScript/Make/BuildPlan.hs
index 7f728f2..7e4d81e 100644
--- a/src/Language/PureScript/Make/BuildPlan.hs
+++ b/src/Language/PureScript/Make/BuildPlan.hs
@@ -1,8 +1,10 @@
module Language.PureScript.Make.BuildPlan
( BuildPlan()
+ , BuildJobResult(..)
+ , buildJobSuccess
+ , buildJobFailure
, construct
, getResult
- , collectErrors
, collectResults
, markComplete
, needsRebuild
@@ -40,50 +42,56 @@ data Prebuilt = Prebuilt
, pbExternsFile :: ExternsFile
}
-data BuildJob = BuildJob
- { bjResult :: C.MVar (Maybe (MultipleErrors, ExternsFile))
- , bjErrors :: C.MVar (Maybe MultipleErrors)
+newtype BuildJob = BuildJob
+ { bjResult :: C.MVar BuildJobResult
+ -- ^ Note: an empty MVar indicates that the build job has not yet finished.
}
+data BuildJobResult
+ = BuildJobSucceeded !MultipleErrors !ExternsFile
+ -- ^ Succeeded, with warnings and externs
+ --
+ | BuildJobFailed !MultipleErrors
+ -- ^ Failed, with errors
+
+ | BuildJobSkipped
+ -- ^ The build job was not run, because an upstream build job failed
+
+buildJobSuccess :: BuildJobResult -> Maybe (MultipleErrors, ExternsFile)
+buildJobSuccess (BuildJobSucceeded warnings externs) = Just (warnings, externs)
+buildJobSuccess _ = Nothing
+
+buildJobFailure :: BuildJobResult -> Maybe MultipleErrors
+buildJobFailure (BuildJobFailed errors) = Just errors
+buildJobFailure _ = Nothing
+
-- | Called when we finished compiling a module and want to report back the
-- compilation result, as well as any potential errors that were thrown.
markComplete
:: (MonadBaseControl IO m)
=> BuildPlan
-> ModuleName
- -> Maybe (MultipleErrors, ExternsFile)
- -> Maybe MultipleErrors
+ -> BuildJobResult
-> m ()
-markComplete buildPlan moduleName result errors = do
- let BuildJob rVar eVar = fromMaybe (internalError "make: markComplete no barrier") $ M.lookup moduleName (bpBuildJobs buildPlan)
+markComplete buildPlan moduleName result = do
+ let BuildJob rVar = fromMaybe (internalError "make: markComplete no barrier") $ M.lookup moduleName (bpBuildJobs buildPlan)
putMVar rVar result
- putMVar eVar errors
-- | Whether or not the module with the given ModuleName needs to be rebuilt
needsRebuild :: BuildPlan -> ModuleName -> Bool
needsRebuild bp moduleName = M.member moduleName (bpBuildJobs bp)
--- | Collects errors for all modules that have been rebuilt. This will block
--- until all outstanding build jobs are finished.
-collectErrors
- :: (MonadBaseControl IO m)
- => BuildPlan
- -> m [MultipleErrors]
-collectErrors buildPlan = do
- errors <- traverse readMVar $ map bjErrors $ M.elems (bpBuildJobs buildPlan)
- pure (catMaybes errors)
-
--- | Collects ExternsFiles for all prebuilt as well as rebuilt modules. Panics
--- if any build job returned an error.
+-- | Collects results for all prebuilt as well as rebuilt modules. This will
+-- block until all build jobs are finished. Prebuilt modules always return no
+-- warnings.
collectResults
:: (MonadBaseControl IO m)
=> BuildPlan
- -> m (M.Map ModuleName ExternsFile)
+ -> m (M.Map ModuleName BuildJobResult)
collectResults buildPlan = do
- let externs = M.map pbExternsFile (bpPrebuilt buildPlan)
- barrierResults <- traverse (takeMVar . bjResult) $ bpBuildJobs buildPlan
- let barrierExterns = M.map (snd . fromMaybe (internalError "make: externs were missing but no errors reported.")) barrierResults
- pure (M.union externs barrierExterns)
+ let prebuiltResults = M.map (BuildJobSucceeded (MultipleErrors []) . pbExternsFile) (bpPrebuilt buildPlan)
+ barrierResults <- traverse (readMVar . bjResult) $ bpBuildJobs buildPlan
+ pure (M.union prebuiltResults barrierResults)
-- | Gets the the build result for a given module name independent of whether it
-- was rebuilt or prebuilt. Prebuilt modules always return no warnings.
@@ -96,8 +104,9 @@ getResult buildPlan moduleName =
case M.lookup moduleName (bpPrebuilt buildPlan) of
Just es ->
pure (Just (MultipleErrors [], pbExternsFile es))
- Nothing ->
- readMVar $ bjResult $ fromMaybe (internalError "make: no barrier") $ M.lookup moduleName (bpBuildJobs buildPlan)
+ Nothing -> do
+ r <- readMVar $ bjResult $ fromMaybe (internalError "make: no barrier") $ M.lookup moduleName (bpBuildJobs buildPlan)
+ pure $ buildJobSuccess r
-- | Constructs a BuildPlan for the given module graph.
--
@@ -115,7 +124,7 @@ construct MakeActions{..} (sorted, graph) = do
pure $ BuildPlan prebuilt buildJobs
where
makeBuildJob prev moduleName = do
- buildJob <- BuildJob <$> C.newEmptyMVar <*> C.newEmptyMVar
+ buildJob <- BuildJob <$> C.newEmptyMVar
pure (M.insert moduleName buildJob prev)
findExistingExtern :: CST.PartialResult Module -> m (Maybe (ModuleName, Bool, Prebuilt))
diff --git a/src/Language/PureScript/Pretty/Types.hs b/src/Language/PureScript/Pretty/Types.hs
index aabd707..0047b23 100644
--- a/src/Language/PureScript/Pretty/Types.hs
+++ b/src/Language/PureScript/Pretty/Types.hs
@@ -6,6 +6,7 @@ module Language.PureScript.Pretty.Types
, PrettyPrintConstraint
, convertPrettyPrintType
, typeAsBox
+ , typeDiffAsBox
, suggestedTypeAsBox
, prettyPrintType
, prettyPrintTypeWithUnicode
@@ -22,7 +23,7 @@ import Control.Arrow ((<+>))
import Control.PatternArrows as PA
import Data.Functor (($>))
-import Data.Maybe (fromMaybe)
+import Data.Maybe (fromMaybe, catMaybes)
import Data.Text (Text)
import qualified Data.Text as T
@@ -118,13 +119,13 @@ prettyPrintRowWith :: TypeRenderOptions -> Char -> Char -> [(Label, PrettyPrintT
prettyPrintRowWith tro open close labels rest =
case (labels, rest) of
([], Nothing) ->
- text [open, close]
+ if troRowAsDiff tro then text [ open, ' ' ] <> text "..." <> text [ ' ', close ] else text [ open, close ]
([], Just _) ->
text [ open, ' ' ] <> tailToPs rest <> text [ ' ', close ]
_ ->
vcat left $
zipWith (\(nm, ty) i -> nameAndTypeToPs (if i == 0 then open else ',') nm ty) labels [0 :: Int ..] ++
- [ tailToPs rest, text [close] ]
+ catMaybes [ rowDiff, pure $ tailToPs rest, pure $ text [close] ]
where
nameAndTypeToPs :: Char -> Label -> PrettyPrintType -> Box
@@ -132,6 +133,8 @@ prettyPrintRowWith tro open close labels rest =
doubleColon = if troUnicode tro then "∷" else "::"
+ rowDiff = if troRowAsDiff tro then Just (text "...") else Nothing
+
tailToPs :: Maybe PrettyPrintType -> Box
tailToPs Nothing = nullBox
tailToPs (Just other) = text "| " <> typeAsBox' other
@@ -238,22 +241,32 @@ typeAsBox' = typeAsBoxImpl defaultOptions
typeAsBox :: Int -> Type a -> Box
typeAsBox maxDepth = typeAsBox' . convertPrettyPrintType maxDepth
+typeDiffAsBox' :: PrettyPrintType -> Box
+typeDiffAsBox' = typeAsBoxImpl diffOptions
+
+typeDiffAsBox :: Int -> Type a -> Box
+typeDiffAsBox maxDepth = typeDiffAsBox' . convertPrettyPrintType maxDepth
+
suggestedTypeAsBox :: PrettyPrintType -> Box
suggestedTypeAsBox = typeAsBoxImpl suggestingOptions
data TypeRenderOptions = TypeRenderOptions
{ troSuggesting :: Bool
, troUnicode :: Bool
+ , troRowAsDiff :: Bool
}
suggestingOptions :: TypeRenderOptions
-suggestingOptions = TypeRenderOptions True False
+suggestingOptions = TypeRenderOptions True False False
defaultOptions :: TypeRenderOptions
-defaultOptions = TypeRenderOptions False False
+defaultOptions = TypeRenderOptions False False False
+
+diffOptions :: TypeRenderOptions
+diffOptions = TypeRenderOptions False False True
unicodeOptions :: TypeRenderOptions
-unicodeOptions = TypeRenderOptions False True
+unicodeOptions = TypeRenderOptions False True False
typeAsBoxImpl :: TypeRenderOptions -> PrettyPrintType -> Box
typeAsBoxImpl tro
diff --git a/src/Language/PureScript/Pretty/Values.hs b/src/Language/PureScript/Pretty/Values.hs
index fe9592d..99ddaf0 100644
--- a/src/Language/PureScript/Pretty/Values.hs
+++ b/src/Language/PureScript/Pretty/Values.hs
@@ -67,6 +67,7 @@ prettyPrintValue d (ObjectUpdateNested o ps) = prettyPrintValueAtom (d - 1) o `b
printNode (key, Leaf val) = prettyPrintUpdateEntry d key val
printNode (key, Branch val) = textT (prettyPrintObjectKey key) `beforeWithSpace` prettyPrintUpdate val
prettyPrintValue d (App val arg) = prettyPrintValueAtom (d - 1) val `beforeWithSpace` prettyPrintValueAtom (d - 1) arg
+prettyPrintValue d (Unused val) = prettyPrintValue d val
prettyPrintValue d (Abs arg val) = text ('\\' : T.unpack (prettyPrintBinder arg) ++ " -> ") // moveRight 2 (prettyPrintValue (d - 1) val)
prettyPrintValue d (TypeClassDictionaryConstructorApp className ps) =
text (T.unpack (runProperName (disqualify className)) ++ " ") <> prettyPrintValueAtom (d - 1) ps
diff --git a/src/Language/PureScript/Sugar/Names.hs b/src/Language/PureScript/Sugar/Names.hs
index 063979a..fcf7f46 100644
--- a/src/Language/PureScript/Sugar/Names.hs
+++ b/src/Language/PureScript/Sugar/Names.hs
@@ -205,7 +205,7 @@ renameInModule imports (Module modSS coms mn decls exps) =
fmap (bound,) $
DataDeclaration sa dtype name
<$> updateTypeArguments args
- <*> traverse (sndM (traverse (sndM updateTypesEverywhere))) dctors
+ <*> traverse (traverseDataCtorFields (traverse (sndM updateTypesEverywhere))) dctors
updateDecl bound (TypeSynonymDeclaration sa name ps ty) =
fmap (bound,) $
TypeSynonymDeclaration sa name
diff --git a/src/Language/PureScript/Sugar/Names/Exports.hs b/src/Language/PureScript/Sugar/Names/Exports.hs
index 7480ecc..57fdb72 100644
--- a/src/Language/PureScript/Sugar/Names/Exports.hs
+++ b/src/Language/PureScript/Sugar/Names/Exports.hs
@@ -46,7 +46,7 @@ findExportable (Module _ _ mn ds _) =
go exps'' (TypeDeclaration (TypeDeclarationData (ss', _) name _)) = exportValue ss' exps'' name source
go _ _ = internalError "Invalid declaration in TypeClassDeclaration"
updateExports exps (DataDeclaration (ss, _) _ tn _ dcs) =
- exportType ss Internal exps tn (map fst dcs) source
+ exportType ss Internal exps tn (map dataCtorName dcs) source
updateExports exps (TypeSynonymDeclaration (ss, _) tn _ _) =
exportType ss Internal exps tn [] source
updateExports exps (ExternDataDeclaration (ss, _) tn _) =
diff --git a/src/Language/PureScript/Sugar/Operators.hs b/src/Language/PureScript/Sugar/Operators.hs
index 20a2e04..1d0bb8a 100644
--- a/src/Language/PureScript/Sugar/Operators.hs
+++ b/src/Language/PureScript/Sugar/Operators.hs
@@ -315,7 +315,8 @@ updateTypes goType = (goDecl, goExpr, goBinder)
goDecl :: Declaration -> m Declaration
goDecl (DataDeclaration sa@(ss, _) ddt name args dctors) =
- DataDeclaration sa ddt name args <$> traverse (sndM (traverse (sndM (goType' ss)))) dctors
+ DataDeclaration sa ddt name args
+ <$> traverse (traverseDataCtorFields (traverse (sndM (goType' ss)))) dctors
goDecl (ExternDeclaration sa@(ss, _) name ty) =
ExternDeclaration sa name <$> goType' ss ty
goDecl (TypeClassDeclaration sa@(ss, _) name args implies deps decls) = do
diff --git a/src/Language/PureScript/Sugar/TypeClasses.hs b/src/Language/PureScript/Sugar/TypeClasses.hs
index 7686e71..761de6f 100644
--- a/src/Language/PureScript/Sugar/TypeClasses.hs
+++ b/src/Language/PureScript/Sugar/TypeClasses.hs
@@ -64,8 +64,8 @@ desugarTypeClasses externs = flip evalStateT initialState . traverse desugarModu
:: ModuleName
-> ExternsDeclaration
-> Maybe ((ModuleName, ProperName 'ClassName), TypeClassData)
- fromExternsDecl mn (EDClass name args members implies deps) = Just ((mn, name), typeClass) where
- typeClass = makeTypeClassData args members implies deps
+ fromExternsDecl mn (EDClass name args members implies deps tcIsEmpty) = Just ((mn, name), typeClass) where
+ typeClass = makeTypeClassData args members implies deps tcIsEmpty
fromExternsDecl _ _ = Nothing
desugarModule
@@ -203,7 +203,7 @@ desugarDecl
desugarDecl mn exps = go
where
go d@(TypeClassDeclaration sa name args implies deps members) = do
- modify (M.insert (mn, name) (makeTypeClassData args (map memberToNameAndType members) implies deps))
+ modify (M.insert (mn, name) (makeTypeClassData args (map memberToNameAndType members) implies deps False))
return (Nothing, d : typeClassDictionaryDeclaration sa name args implies members : map (typeClassMemberToDictionaryAccessor mn name args) members)
go (TypeInstanceDeclaration _ _ _ _ _ _ _ DerivedInstance) = internalError "Derived instanced should have been desugared"
go d@(TypeInstanceDeclaration sa _ _ name deps className tys (ExplicitInstance members)) = do
diff --git a/src/Language/PureScript/Sugar/TypeClasses/Deriving.hs b/src/Language/PureScript/Sugar/TypeClasses/Deriving.hs
index fa10eb6..82e11a7 100755
--- a/src/Language/PureScript/Sugar/TypeClasses/Deriving.hs
+++ b/src/Language/PureScript/Sugar/TypeClasses/Deriving.hs
@@ -205,7 +205,7 @@ deriveNewtypeInstance ss mn syns ndis className ds tys tyConNm dargs = do
tyCon <- findTypeDecl ss tyConNm ds
go tyCon
where
- go (DataDeclaration _ Newtype _ tyArgNames [(_, [(_, wrapped)])]) = do
+ go (DataDeclaration _ Newtype _ tyArgNames [(DataConstructorDeclaration _ _ [(_, wrapped)])]) = do
-- The newtype might not be applied to all type arguments.
-- This is okay as long as the newtype wraps something which ends with
-- sufficiently many type applications to variables.
@@ -337,9 +337,9 @@ deriveGenericRep ss mn syns ds tyConNm tyConArgs repTy = do
compN n f = f . compN (n - 1) f
makeInst
- :: (ProperName 'ConstructorName, [(Ident, SourceType)])
+ :: DataConstructorDeclaration
-> m (SourceType, CaseAlternative, CaseAlternative)
- makeInst (ctorName, args) = do
+ makeInst (DataConstructorDeclaration _ ctorName args) = do
args' <- mapM (replaceAllTypeSynonymsM syns . snd) args
(ctorTy, matchProduct, ctorArgs, matchCtor, mkProduct) <- makeProduct args'
return ( srcTypeApp (srcTypeApp (srcTypeConstructor constructor)
@@ -468,8 +468,8 @@ deriveEq ss mn syns ds tyConNm = do
where
catchAll = CaseAlternative [NullBinder, NullBinder] (unguarded (Literal ss (BooleanLiteral False)))
- mkCtorClause :: (ProperName 'ConstructorName, [(Ident, SourceType)]) -> m CaseAlternative
- mkCtorClause (ctorName, tys) = do
+ mkCtorClause :: DataConstructorDeclaration -> m CaseAlternative
+ mkCtorClause (DataConstructorDeclaration _ ctorName tys) = do
identsL <- replicateM (length tys) (freshIdent "l")
identsR <- replicateM (length tys) (freshIdent "r")
tys' <- mapM (replaceAllTypeSynonymsM syns . snd) tys
@@ -547,8 +547,8 @@ deriveOrd ss mn syns ds tyConNm = do
ordCompare1 :: Expr -> Expr -> Expr
ordCompare1 = App . App (Var ss (Qualified (Just dataOrd) (Ident C.compare1)))
- mkCtorClauses :: ((ProperName 'ConstructorName, [(Ident, SourceType)]), Bool) -> m [CaseAlternative]
- mkCtorClauses ((ctorName, tys), isLast) = do
+ mkCtorClauses :: (DataConstructorDeclaration, Bool) -> m [CaseAlternative]
+ mkCtorClauses ((DataConstructorDeclaration _ ctorName tys), isLast) = do
identsL <- replicateM (length tys) (freshIdent "l")
identsR <- replicateM (length tys) (freshIdent "r")
tys' <- mapM (replaceAllTypeSynonymsM syns . snd) tys
@@ -622,7 +622,7 @@ deriveNewtype ss mn syns ds tyConNm tyConArgs unwrappedTy = do
checkNewtype name dctors
wrappedIdent <- freshIdent "n"
unwrappedIdent <- freshIdent "a"
- let (ctorName, [(_, ty)]) = head dctors
+ let (DataConstructorDeclaration _ ctorName [(_, ty)]) = head dctors
ty' <- replaceAllTypeSynonymsM syns ty
let inst =
[ ValueDecl (ss', []) (Ident "wrap") Public [] $ unguarded $
@@ -707,8 +707,8 @@ deriveFunctor ss mn syns ds tyConNm = do
lam ss' f . lamCase ss' m <$> mapM (mkCtorClause iTy f) ctors
mkMapFunction _ = internalError "mkMapFunction: expected DataDeclaration"
- mkCtorClause :: Text -> Ident -> (ProperName 'ConstructorName, [(Ident, SourceType)]) -> m CaseAlternative
- mkCtorClause iTyName f (ctorName, ctorTys) = do
+ mkCtorClause :: Text -> Ident -> DataConstructorDeclaration -> m CaseAlternative
+ mkCtorClause iTyName f (DataConstructorDeclaration _ ctorName ctorTys) = do
idents <- replicateM (length ctorTys) (freshIdent "v")
ctorTys' <- mapM (replaceAllTypeSynonymsM syns . snd) ctorTys
args <- zipWithM transformArg idents ctorTys'
diff --git a/src/Language/PureScript/TypeChecker.hs b/src/Language/PureScript/TypeChecker.hs
index ecfdeb9..b9ae232 100644
--- a/src/Language/PureScript/TypeChecker.hs
+++ b/src/Language/PureScript/TypeChecker.hs
@@ -12,7 +12,6 @@ module Language.PureScript.TypeChecker
import Prelude.Compat
import Protolude (ordNub)
-import Control.Arrow (second)
import Control.Monad (when, unless, void, forM)
import Control.Monad.Error.Class (MonadError(..))
import Control.Monad.State.Class (MonadState(..), modify, gets)
@@ -50,13 +49,14 @@ addDataType
-> DataDeclType
-> ProperName 'TypeName
-> [(Text, Maybe SourceKind)]
- -> [(ProperName 'ConstructorName, [(Ident, SourceType)])]
+ -> [DataConstructorDeclaration]
-> SourceKind
-> m ()
addDataType moduleName dtype name args dctors ctorKind = do
env <- getEnv
- putEnv $ env { types = M.insert (Qualified (Just moduleName) name) (ctorKind, DataType args (map (second (map snd)) dctors)) (types env) }
- for_ dctors $ \(dctor, fields) ->
+ let mapDataCtor (DataConstructorDeclaration _ ctorName vars) = (ctorName, snd <$> vars)
+ putEnv $ env { types = M.insert (Qualified (Just moduleName) name) (ctorKind, DataType args (map mapDataCtor dctors)) (types env) }
+ for_ dctors $ \(DataConstructorDeclaration _ dctor fields) ->
warnAndRethrow (addHint (ErrorInDataConstructor dctor)) $
addDataConstructor moduleName dtype name (map fst args) dctor fields
@@ -125,17 +125,23 @@ addTypeClass
-> m ()
addTypeClass qualifiedClassName args implies dependencies ds = do
env <- getEnv
- traverse_ (checkMemberIsUsable (typeSynonyms env)) classMembers
+ let newClass = mkNewClass env
+ traverse_ (checkMemberIsUsable newClass (typeSynonyms env)) classMembers
modify $ \st -> st { checkEnv = (checkEnv st) { typeClasses = M.insert qualifiedClassName newClass (typeClasses . checkEnv $ st) } }
where
classMembers :: [(Ident, SourceType)]
classMembers = map toPair ds
- newClass :: TypeClassData
- newClass = makeTypeClassData args classMembers implies dependencies
+ mkNewClass :: Environment -> TypeClassData
+ mkNewClass env = makeTypeClassData args classMembers implies dependencies ctIsEmpty
+ where
+ ctIsEmpty = null classMembers && all (typeClassIsEmpty . findSuperClass) implies
+ findSuperClass c = case M.lookup (constraintClass c) (typeClasses env) of
+ Just tcd -> tcd
+ Nothing -> internalError "Unknown super class in TypeClassDeclaration"
- coveringSets :: [S.Set Int]
- coveringSets = S.toList (typeClassCoveringSets newClass)
+ coveringSets :: TypeClassData -> [S.Set Int]
+ coveringSets = S.toList . typeClassCoveringSets
argToIndex :: Text -> Maybe Int
argToIndex = flip M.lookup $ M.fromList (zipWith ((,) . fst) args [0..])
@@ -146,11 +152,11 @@ addTypeClass qualifiedClassName args implies dependencies ds = do
-- Currently we are only checking usability based on the type class currently
-- being defined. If the mentioned arguments don't include a covering set,
-- then we won't be able to find a instance.
- checkMemberIsUsable :: T.SynonymMap -> (Ident, SourceType) -> m ()
- checkMemberIsUsable syns (ident, memberTy) = do
+ checkMemberIsUsable :: TypeClassData -> T.SynonymMap -> (Ident, SourceType) -> m ()
+ checkMemberIsUsable newClass syns (ident, memberTy) = do
memberTy' <- T.replaceAllTypeSynonymsM syns memberTy
let mentionedArgIndexes = S.fromList (mapMaybe argToIndex (freeTypeVariables memberTy'))
- let leftovers = map (`S.difference` mentionedArgIndexes) coveringSets
+ let leftovers = map (`S.difference` mentionedArgIndexes) (coveringSets newClass)
unless (any null leftovers) . throwError . errorMessage $
let
@@ -237,7 +243,7 @@ typeCheckAll moduleName _ = traverse go
warnAndRethrow (addHint (ErrorInTypeConstructor name) . addHint (positionedError ss)) $ do
when (dtype == Newtype) $ checkNewtype name dctors
checkDuplicateTypeArguments $ map fst args
- ctorKind <- kindsOf True moduleName name args (concatMap (fmap snd . snd) dctors)
+ ctorKind <- kindsOf True moduleName name args (concatMap (fmap snd . dataCtorFields) dctors)
let args' = args `withKinds` ctorKind
addDataType moduleName dtype name args' dctors ctorKind
return $ DataDeclaration sa dtype name args dctors
@@ -248,7 +254,7 @@ typeCheckAll moduleName _ = traverse go
bindingGroupNames = ordNub ((syns^..traverse._2) ++ (dataDecls^..traverse._3))
sss = fmap declSourceSpan tys
warnAndRethrow (addHint (ErrorInDataBindingGroup bindingGroupNames) . addHint (PositionedError sss)) $ do
- (syn_ks, data_ks) <- kindsOfAll moduleName syns (map (\(sa, _, name, args, dctors) -> (sa, name, args, concatMap (fmap snd . snd) dctors)) dataDecls)
+ (syn_ks, data_ks) <- kindsOfAll moduleName syns (map (\(sa, _, name, args, dctors) -> (sa, name, args, concatMap (fmap snd . dataCtorFields) dctors)) dataDecls)
for_ (zip dataDecls data_ks) $ \((_, dtype, name, args, dctors), ctorKind) -> do
when (dtype == Newtype) $ checkNewtype name dctors
checkDuplicateTypeArguments $ map fst args
@@ -497,9 +503,9 @@ checkNewtype
:: forall m
. MonadError MultipleErrors m
=> ProperName 'TypeName
- -> [(ProperName 'ConstructorName, [(Ident, SourceType)])]
+ -> [DataConstructorDeclaration]
-> m ()
-checkNewtype _ [(_, [_])] = return ()
+checkNewtype _ [(DataConstructorDeclaration _ _ [_])] = return ()
checkNewtype name _ = throwError . errorMessage $ InvalidNewtype name
-- |
diff --git a/src/Language/PureScript/TypeChecker/Entailment.hs b/src/Language/PureScript/TypeChecker/Entailment.hs
index 23f62f9..dee68a9 100644
--- a/src/Language/PureScript/TypeChecker/Entailment.hs
+++ b/src/Language/PureScript/TypeChecker/Entailment.hs
@@ -207,9 +207,14 @@ entails SolverOptions{..} constraint context hints =
-- We need information about functional dependencies, so we have to look up the class
-- name in the environment:
classesInScope <- lift . lift $ gets (typeClasses . checkEnv)
- TypeClassData{ typeClassDependencies } <- case M.lookup className' classesInScope of
- Nothing -> throwError . errorMessage $ UnknownClass className'
- Just tcd -> pure tcd
+
+ TypeClassData
+ { typeClassDependencies
+ , typeClassIsEmpty
+ } <- case M.lookup className' classesInScope of
+ Nothing -> throwError . errorMessage $ UnknownClass className'
+ Just tcd -> pure tcd
+
let instances = do
chain <- groupBy ((==) `on` tcdChain) $
sortBy (compare `on` (tcdChain &&& tcdIndex)) $
@@ -245,11 +250,14 @@ entails SolverOptions{..} constraint context hints =
let subst'' = fmap (substituteType currentSubst') subst'
-- Solve any necessary subgoals
args <- solveSubgoals subst'' (tcdDependencies tcd)
+
initDict <- lift . lift $ mkDictionary (tcdValue tcd) args
+
let match = foldr (\(className, index) dict -> subclassDictionaryValue dict className index)
initDict
(tcdPath tcd)
- return match
+
+ return (if typeClassIsEmpty then Unused match else match)
Unsolved unsolved -> do
-- Generate a fresh name for the unsolved constraint's new dictionary
ident <- freshIdent ("dict" <> runProperName (disqualify (constraintClass unsolved)))
@@ -339,7 +347,7 @@ entails SolverOptions{..} constraint context hints =
-- We need subgoal dictionaries to appear in the term somewhere
-- If there aren't any then the dictionary is just undefined
useEmptyDict :: Maybe [Expr] -> Expr
- useEmptyDict args = foldl (App . Abs (VarBinder nullSourceSpan UnusedIdent)) valUndefined (fold args)
+ useEmptyDict args = Unused (foldl (App . Abs (VarBinder nullSourceSpan UnusedIdent)) valUndefined (fold args))
-- Make a dictionary from subgoal dictionaries by applying the correct function
mkDictionary :: Evidence -> Maybe [Expr] -> m Expr
diff --git a/src/Language/PureScript/TypeChecker/Unify.hs b/src/Language/PureScript/TypeChecker/Unify.hs
index 65625f4..a9afdc6 100644
--- a/src/Language/PureScript/TypeChecker/Unify.hs
+++ b/src/Language/PureScript/TypeChecker/Unify.hs
@@ -173,7 +173,8 @@ unifyRows r1 r2 = sequence_ matches *> uncurry unifyTails rest where
solveType u1 (rowFromList (sd2, rest'))
solveType u2 (rowFromList (sd1, rest'))
unifyTails _ _ =
- throwError . errorMessage $ TypesDoNotUnify r1 r2
+ withErrorMessageHint (ErrorUnifyingTypes r1 r2) $
+ throwError . errorMessage $ TypesDoNotUnify r1 r2
-- |
-- Replace a single type variable with a new unification variable
diff --git a/tests/Language/PureScript/Ide/SourceFileSpec.hs b/tests/Language/PureScript/Ide/SourceFileSpec.hs
index 20a6258..e046e23 100644
--- a/tests/Language/PureScript/Ide/SourceFileSpec.hs
+++ b/tests/Language/PureScript/Ide/SourceFileSpec.hs
@@ -28,7 +28,7 @@ synonym1 = P.TypeSynonymDeclaration ann1 (P.ProperName "Synonym1") [] P.srcREmpt
class1 = P.TypeClassDeclaration ann1 (P.ProperName "Class1") [] [] [] []
class2 = P.TypeClassDeclaration ann1 (P.ProperName "Class2") [] [] [] [member1]
data1 = P.DataDeclaration ann1 P.Newtype (P.ProperName "Data1") [] []
-data2 = P.DataDeclaration ann1 P.Data (P.ProperName "Data2") [] [(P.ProperName "Cons1", [])]
+data2 = P.DataDeclaration ann1 P.Data (P.ProperName "Data2") [] [P.DataConstructorDeclaration ann2 (P.ProperName "Cons1") []]
valueFixity =
P.ValueFixityDeclaration
ann1
@@ -60,7 +60,7 @@ spec = do
it "extracts a span for a data declaration" $
extractSpans data1 `shouldBe` [(IdeNamespaced IdeNSType "Data1", span1)]
it "extracts spans for a data declaration and its constructors" $
- extractSpans data2 `shouldBe` [(IdeNamespaced IdeNSType "Data2", span1), (IdeNamespaced IdeNSValue "Cons1", span1)]
+ extractSpans data2 `shouldBe` [(IdeNamespaced IdeNSType "Data2", span1), (IdeNamespaced IdeNSValue "Cons1", span2)]
it "extracts a span for a value operator fixity declaration" $
extractSpans valueFixity `shouldBe` [(IdeNamespaced IdeNSValue "<$>", span1)]
it "extracts a span for a type operator fixity declaration" $
diff --git a/tests/TestDocs.hs b/tests/TestDocs.hs
index 07a0c52..2ccfea3 100644
--- a/tests/TestDocs.hs
+++ b/tests/TestDocs.hs
@@ -14,7 +14,7 @@ import Data.List (findIndex)
import Data.Foldable
import Safe (headMay)
import qualified Data.Map as Map
-import Data.Maybe (fromMaybe, mapMaybe)
+import Data.Maybe (fromMaybe, isNothing, mapMaybe)
import Data.Monoid
import Data.Text (Text)
import qualified Data.Text as T
@@ -129,6 +129,16 @@ data DocsAssertion
-- | Assert that a documented declaration includes a documentation comment
-- containing a particular string
| ShouldHaveDocComment P.ModuleName Text Text
+ -- | Assert that a documented data declaration includes a documentation comment
+ -- | containing a particular string
+ | ShouldHaveDataConstructorDocComment P.ModuleName Text Text Text
+ -- | Assert that a documented data declaration has no documentation comment
+ | ShouldHaveNoDataConstructorDocComment P.ModuleName Text Text
+ -- | Assert that a documented class method includes a documentation comment
+ -- | containing a particular string
+ | ShouldHaveClassMethodDocComment P.ModuleName Text Text Text
+ -- | Assert that a class method has no documentation comment
+ | ShouldNotHaveClassMethodDocComment P.ModuleName Text Text
-- | Assert that there should be some declarations re-exported from a
-- particular module in a particular package.
| ShouldHaveReExport (Docs.InPackage P.ModuleName)
@@ -173,6 +183,18 @@ displayAssertion = \case
ShouldHaveDocComment mn decl excerpt ->
"the string " <> T.pack (show excerpt) <> " should appear in the" <>
" doc-comments for " <> showQual mn decl
+ ShouldHaveDataConstructorDocComment mn decl constr excerpt ->
+ "the string " <> T.pack (show excerpt) <> " should appear in the" <>
+ " doc-comments for data constructor " <> T.pack (show constr) <> " for " <> showQual mn decl
+ ShouldHaveNoDataConstructorDocComment mn decl constr ->
+ "Doc-comments for data constructor " <> T.pack (show constr) <> " for " <> showQual mn decl <>
+ " should be empty"
+ ShouldHaveClassMethodDocComment mn decl method excerpt ->
+ "the string " <> T.pack (show excerpt) <> " should appear in the" <>
+ " doc-comment for class method " <> T.pack (show method) <> " for " <> showQual mn decl
+ ShouldNotHaveClassMethodDocComment mn decl method ->
+ "Doc-comments for class method " <> T.pack (show method) <> " for " <> showQual mn decl <>
+ " should be empty"
ShouldHaveReExport inPkg ->
"there should be some re-exports from " <>
showInPkg P.runModuleName inPkg
@@ -217,6 +239,9 @@ data DocsAssertionFailure
-- | A doc comment was not found or did not match what was expected
-- Fields: module name, declaration, actual comments
| DocCommentMissing P.ModuleName Text (Maybe Text)
+ -- | A doc comment was found where none was expected
+ -- Fields: module name, declaration, actual comments
+ | DocCommentPresent P.ModuleName Text (Maybe Text)
-- | A module was missing re-exports from a particular module.
-- Fields: module name, expected re-export, actual re-exports.
| ReExportMissing P.ModuleName (Docs.InPackage P.ModuleName) [Docs.InPackage P.ModuleName]
@@ -267,6 +292,8 @@ displayAssertionFailure = \case
DocCommentMissing _ decl actual ->
"the doc-comment for " <> decl <> " did not contain the expected substring;" <>
" got " <> T.pack (show actual)
+ DocCommentPresent _ decl actual ->
+ "the doc-comment for " <> decl <> " was not empty. Got " <> T.pack (show actual)
ReExportMissing _ expected actuals ->
"expected to see some re-exports from " <>
showInPkg P.runModuleName expected <>
@@ -402,6 +429,18 @@ runAssertion assertion linksCtx Docs.Module{..} =
then Pass
else Fail (DocCommentMissing mn decl declComments)
+ ShouldHaveDataConstructorDocComment mn decl constr expected ->
+ findDeclChildrenComment mn decl constr expected
+
+ ShouldHaveNoDataConstructorDocComment mn decl constr ->
+ findDeclChildrenNoComment mn decl constr
+
+ ShouldHaveClassMethodDocComment mn decl constr expected ->
+ findDeclChildrenComment mn decl constr expected
+
+ ShouldNotHaveClassMethodDocComment mn decl method ->
+ findDeclChildrenNoComment mn decl method
+
ShouldHaveReExport reExp ->
let
reExps = map fst modReExports
@@ -456,6 +495,26 @@ runAssertion assertion linksCtx Docs.Module{..} =
Just decl ->
f decl
+ findDeclChildren mn title child f =
+ findDecl mn title $ \Docs.Declaration{..} ->
+ case find ((==) child . Docs.cdeclTitle) declChildren of
+ Nothing ->
+ Fail (NotDocumented mn child)
+ Just decl ->
+ f decl
+
+ findDeclChildrenComment mn decl constr expected =
+ findDeclChildren mn decl constr $ \Docs.ChildDeclaration{..} ->
+ if maybe False (expected `T.isInfixOf`) cdeclComments
+ then Pass
+ else Fail (DocCommentMissing mn constr cdeclComments)
+
+ findDeclChildrenNoComment mn decl constr =
+ findDeclChildren mn decl constr $ \Docs.ChildDeclaration{..} ->
+ if isNothing cdeclComments
+ then Pass
+ else Fail (DocCommentPresent mn constr cdeclComments)
+
childrenTitles = map Docs.cdeclTitle . Docs.declChildren
extract :: Docs.RenderedCode -> Docs.Namespace -> Text -> Maybe Docs.DocLink
@@ -608,6 +667,19 @@ testCases =
[ ShouldHaveDocComment (n "DocComments") "example" " example == 0"
])
+ , ("DocCommentsDataConstructor",
+ [ ShouldHaveDataConstructorDocComment (n "DocCommentsDataConstructor") "Foo" "Bar" "data constructor comment"
+ , ShouldHaveNoDataConstructorDocComment (n "DocCommentsDataConstructor") "Foo" "Baz"
+ , ShouldHaveNoDataConstructorDocComment (n "DocCommentsDataConstructor") "ComplexFoo" "ComplexBar"
+ , ShouldHaveDataConstructorDocComment (n "DocCommentsDataConstructor") "ComplexFoo" "ComplexBaz" "another data constructor comment"
+ , ShouldHaveDataConstructorDocComment (n "DocCommentsDataConstructor") "NewtypeFoo" "NewtypeFoo" "newtype data constructor comment"
+ ])
+
+ , ("DocCommentsClassMethod",
+ [ ShouldHaveClassMethodDocComment (n "DocCommentsClassMethod") "Foo" "bar" "class method comment"
+ , ShouldNotHaveClassMethodDocComment (n "DocCommentsClassMethod") "Foo" "baz"
+ ])
+
, ("TypeLevelString",
[ ShouldBeDocumented (n "TypeLevelString") "Foo" ["fooBar"]
])
diff --git a/tests/purs/bundle/3551.purs b/tests/purs/bundle/3551.purs
new file mode 100644
index 0000000..4600967
--- /dev/null
+++ b/tests/purs/bundle/3551.purs
@@ -0,0 +1,21 @@
+module Main where
+
+import Prelude
+import Effect (Effect)
+import Effect.Console (error, log)
+
+import ModuleWithDeadCode (class FooBar, exportThatUsesBar, results)
+
+main :: Effect Unit
+main = do
+ when results.barIsExported $ error "bar is exported"
+ when results.fooIsNotEliminated $ error "foo is not eliminated"
+
+ -- These are brittleness canaries; if they fail, then the compiler output has
+ -- probably changed such that the above checks are not doing their job.
+ unless results.exportThatUsesBarIsExported $
+ error "likely test error: check that barIsExported is working"
+ unless results.barIsNotEliminated $
+ error "likely test error: check that fooIsNotEliminated is working"
+
+ when (exportThatUsesBar 0) $ log "Done"
diff --git a/tests/purs/bundle/3551/ModuleWithDeadCode.js b/tests/purs/bundle/3551/ModuleWithDeadCode.js
new file mode 100644
index 0000000..ab79652
--- /dev/null
+++ b/tests/purs/bundle/3551/ModuleWithDeadCode.js
@@ -0,0 +1,12 @@
+"use strict";
+
+var fs = require('fs');
+
+var source = fs.readFileSync(__filename, 'utf-8');
+
+exports.results = {
+ fooIsNotEliminated: /^ *var foo =/m.test(source),
+ barIsExported: /^ *exports\["bar"\] =/m.test(source),
+ barIsNotEliminated: /^ *var bar =/m.test(source),
+ exportThatUsesBarIsExported: /^ *exports\["exportThatUsesBar"\] =/m.test(source),
+};
diff --git a/tests/purs/bundle/3551/ModuleWithDeadCode.purs b/tests/purs/bundle/3551/ModuleWithDeadCode.purs
new file mode 100644
index 0000000..a67ff7b
--- /dev/null
+++ b/tests/purs/bundle/3551/ModuleWithDeadCode.purs
@@ -0,0 +1,16 @@
+module ModuleWithDeadCode (class FooBar, bar, exportThatUsesBar, foo, results) where
+
+import Prelude
+
+class FooBar a where
+ foo :: a
+ bar :: a -> Boolean
+
+instance intFooBar :: FooBar Int where
+ foo = 0
+ bar _ = true
+
+exportThatUsesBar :: forall a. (FooBar a) => a -> Boolean
+exportThatUsesBar = bar
+
+foreign import results :: { fooIsNotEliminated :: Boolean, barIsExported :: Boolean, barIsNotEliminated :: Boolean, exportThatUsesBarIsExported :: Boolean }
diff --git a/tests/purs/docs/output/Ado/docs.json b/tests/purs/docs/output/Ado/docs.json
index bb03fda..27c1216 100644
--- a/tests/purs/docs/output/Ado/docs.json
+++ b/tests/purs/docs/output/Ado/docs.json
@@ -1 +1 @@
-{"reExports":[],"name":"Ado","comments":null,"declarations":[{"children":[],"comments":null,"title":"test","info":{"declType":"value","type":{"annotation":[],"tag":"TypeConstructor","contents":[["Prim"],"Int"]}},"sourceSpan":{"start":[4,1],"name":"src/Ado.purs","end":[9,16]}}]} \ No newline at end of file
+{"reExports":[],"name":"Ado","comments":null,"declarations":[{"children":[],"comments":null,"title":"test","info":{"declType":"value","type":{"annotation":[],"tag":"TypeConstructor","contents":[["Prim"],"Int"]}},"sourceSpan":{"start":[4,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/Ado.purs","end":[9,16]}}]} \ No newline at end of file
diff --git a/tests/purs/docs/output/Ado/externs.json b/tests/purs/docs/output/Ado/externs.json
index 14e72ae..2f63b8d 100644
--- a/tests/purs/docs/output/Ado/externs.json
+++ b/tests/purs/docs/output/Ado/externs.json
@@ -1 +1 @@
-{"efVersion":"0.12.5","efModuleName":["Ado"],"efExports":[{"ValueRef":[{"start":[2,1],"name":"src/Ado.purs","end":[9,16]},{"Ident":"test"}]}],"efImports":[{"eiModule":["Prim"],"eiImportType":{"Implicit":[]},"eiImportedAs":["Prim"]},{"eiModule":["Prim"],"eiImportType":{"Implicit":[]},"eiImportedAs":null}],"efFixities":[],"efTypeFixities":[],"efDeclarations":[{"EDValue":{"edValueName":{"Ident":"test"},"edValueType":{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Int"]}}}],"efSourceSpan":{"start":[2,1],"name":"src/Ado.purs","end":[9,16]}} \ No newline at end of file
+{"efVersion":"0.13.2","efModuleName":["Ado"],"efExports":[{"ValueRef":[{"start":[2,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/Ado.purs","end":[9,16]},{"Ident":"test"}]}],"efImports":[{"eiModule":["Prim"],"eiImportType":{"Implicit":[]},"eiImportedAs":["Prim"]},{"eiModule":["Prim"],"eiImportType":{"Implicit":[]},"eiImportedAs":null}],"efFixities":[],"efTypeFixities":[],"efDeclarations":[{"EDValue":{"edValueName":{"Ident":"test"},"edValueType":{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Int"]}}}],"efSourceSpan":{"start":[2,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/Ado.purs","end":[9,16]}} \ No newline at end of file
diff --git a/tests/purs/docs/output/ChildDeclOrder/docs.json b/tests/purs/docs/output/ChildDeclOrder/docs.json
index c4f2da1..7b39544 100644
--- a/tests/purs/docs/output/ChildDeclOrder/docs.json
+++ b/tests/purs/docs/output/ChildDeclOrder/docs.json
@@ -1 +1 @@
-{"reExports":[],"name":"ChildDeclOrder","comments":null,"declarations":[{"children":[{"comments":null,"title":"First","info":{"arguments":[],"declType":"dataConstructor"},"sourceSpan":null},{"comments":null,"title":"Second","info":{"arguments":[],"declType":"dataConstructor"},"sourceSpan":null},{"comments":null,"title":"showTwo","info":{"declType":"instance","dependencies":[],"type":{"annotation":[],"tag":"TypeApp","contents":[{"annotation":[],"tag":"TypeConstructor","contents":[["ChildDeclOrder"],"Show"]},{"annotation":[],"tag":"TypeConstructor","contents":[["ChildDeclOrder"],"Two"]}]}},"sourceSpan":{"start":[18,1],"name":"src/ChildDeclOrder.purs","end":[19,15]}},{"comments":null,"title":"fooTwo","info":{"declType":"instance","dependencies":[],"type":{"annotation":[],"tag":"TypeApp","contents":[{"annotation":[],"tag":"TypeConstructor","contents":[["ChildDeclOrder"],"Foo"]},{"annotation":[],"tag":"TypeConstructor","contents":[["ChildDeclOrder"],"Two"]}]}},"sourceSpan":{"start":[21,1],"name":"src/ChildDeclOrder.purs","end":[23,16]}}],"comments":null,"title":"Two","info":{"declType":"data","dataDeclType":"data","typeArguments":[]},"sourceSpan":{"start":[7,1],"name":"src/ChildDeclOrder.purs","end":[9,11]}},{"children":[{"comments":null,"title":"show","info":{"declType":"typeClassMember","type":{"annotation":[],"tag":"TypeApp","contents":[{"annotation":[],"tag":"TypeApp","contents":[{"annotation":[],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[],"tag":"TypeVar","contents":"a"}]},{"annotation":[],"tag":"TypeConstructor","contents":[["Prim"],"String"]}]}},"sourceSpan":{"start":[12,3],"name":"src/ChildDeclOrder.purs","end":[12,22]}},{"comments":null,"title":"showTwo","info":{"declType":"instance","dependencies":[],"type":{"annotation":[],"tag":"TypeApp","contents":[{"annotation":[],"tag":"TypeConstructor","contents":[["ChildDeclOrder"],"Show"]},{"annotation":[],"tag":"TypeConstructor","contents":[["ChildDeclOrder"],"Two"]}]}},"sourceSpan":{"start":[18,1],"name":"src/ChildDeclOrder.purs","end":[19,15]}}],"comments":null,"title":"Show","info":{"fundeps":[],"arguments":[["a",null]],"declType":"typeClass","superclasses":[]},"sourceSpan":{"start":[11,1],"name":"src/ChildDeclOrder.purs","end":[12,22]}},{"children":[{"comments":null,"title":"foo1","info":{"declType":"typeClassMember","type":{"annotation":[],"tag":"TypeVar","contents":"a"}},"sourceSpan":{"start":[15,3],"name":"src/ChildDeclOrder.purs","end":[15,12]}},{"comments":null,"title":"foo2","info":{"declType":"typeClassMember","type":{"annotation":[],"tag":"TypeVar","contents":"a"}},"sourceSpan":{"start":[16,3],"name":"src/ChildDeclOrder.purs","end":[16,12]}},{"comments":null,"title":"fooTwo","info":{"declType":"instance","dependencies":[],"type":{"annotation":[],"tag":"TypeApp","contents":[{"annotation":[],"tag":"TypeConstructor","contents":[["ChildDeclOrder"],"Foo"]},{"annotation":[],"tag":"TypeConstructor","contents":[["ChildDeclOrder"],"Two"]}]}},"sourceSpan":{"start":[21,1],"name":"src/ChildDeclOrder.purs","end":[23,16]}},{"comments":null,"title":"fooInt","info":{"declType":"instance","dependencies":[],"type":{"annotation":[],"tag":"TypeApp","contents":[{"annotation":[],"tag":"TypeConstructor","contents":[["ChildDeclOrder"],"Foo"]},{"annotation":[],"tag":"TypeConstructor","contents":[["Prim"],"Int"]}]}},"sourceSpan":{"start":[25,1],"name":"src/ChildDeclOrder.purs","end":[27,11]}}],"comments":null,"title":"Foo","info":{"fundeps":[],"arguments":[["a",null]],"declType":"typeClass","superclasses":[]},"sourceSpan":{"start":[14,1],"name":"src/ChildDeclOrder.purs","end":[16,12]}}]} \ No newline at end of file
+{"reExports":[],"name":"ChildDeclOrder","comments":null,"declarations":[{"children":[{"comments":null,"title":"First","info":{"arguments":[],"declType":"dataConstructor"},"sourceSpan":null},{"comments":null,"title":"Second","info":{"arguments":[],"declType":"dataConstructor"},"sourceSpan":null},{"comments":null,"title":"showTwo","info":{"declType":"instance","dependencies":[],"type":{"annotation":[],"tag":"TypeApp","contents":[{"annotation":[],"tag":"TypeConstructor","contents":[["ChildDeclOrder"],"Show"]},{"annotation":[],"tag":"TypeConstructor","contents":[["ChildDeclOrder"],"Two"]}]}},"sourceSpan":{"start":[18,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/ChildDeclOrder.purs","end":[19,15]}},{"comments":null,"title":"fooTwo","info":{"declType":"instance","dependencies":[],"type":{"annotation":[],"tag":"TypeApp","contents":[{"annotation":[],"tag":"TypeConstructor","contents":[["ChildDeclOrder"],"Foo"]},{"annotation":[],"tag":"TypeConstructor","contents":[["ChildDeclOrder"],"Two"]}]}},"sourceSpan":{"start":[21,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/ChildDeclOrder.purs","end":[23,16]}}],"comments":null,"title":"Two","info":{"declType":"data","dataDeclType":"data","typeArguments":[]},"sourceSpan":{"start":[7,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/ChildDeclOrder.purs","end":[9,11]}},{"children":[{"comments":null,"title":"show","info":{"declType":"typeClassMember","type":{"annotation":[],"tag":"TypeApp","contents":[{"annotation":[],"tag":"TypeApp","contents":[{"annotation":[],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[],"tag":"TypeVar","contents":"a"}]},{"annotation":[],"tag":"TypeConstructor","contents":[["Prim"],"String"]}]}},"sourceSpan":{"start":[12,3],"name":"/home/harry/code/purescript/tests/purs/docs/src/ChildDeclOrder.purs","end":[12,22]}},{"comments":null,"title":"showTwo","info":{"declType":"instance","dependencies":[],"type":{"annotation":[],"tag":"TypeApp","contents":[{"annotation":[],"tag":"TypeConstructor","contents":[["ChildDeclOrder"],"Show"]},{"annotation":[],"tag":"TypeConstructor","contents":[["ChildDeclOrder"],"Two"]}]}},"sourceSpan":{"start":[18,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/ChildDeclOrder.purs","end":[19,15]}}],"comments":null,"title":"Show","info":{"fundeps":[],"arguments":[["a",null]],"declType":"typeClass","superclasses":[]},"sourceSpan":{"start":[11,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/ChildDeclOrder.purs","end":[12,22]}},{"children":[{"comments":null,"title":"foo1","info":{"declType":"typeClassMember","type":{"annotation":[],"tag":"TypeVar","contents":"a"}},"sourceSpan":{"start":[15,3],"name":"/home/harry/code/purescript/tests/purs/docs/src/ChildDeclOrder.purs","end":[15,12]}},{"comments":null,"title":"foo2","info":{"declType":"typeClassMember","type":{"annotation":[],"tag":"TypeVar","contents":"a"}},"sourceSpan":{"start":[16,3],"name":"/home/harry/code/purescript/tests/purs/docs/src/ChildDeclOrder.purs","end":[16,12]}},{"comments":null,"title":"fooTwo","info":{"declType":"instance","dependencies":[],"type":{"annotation":[],"tag":"TypeApp","contents":[{"annotation":[],"tag":"TypeConstructor","contents":[["ChildDeclOrder"],"Foo"]},{"annotation":[],"tag":"TypeConstructor","contents":[["ChildDeclOrder"],"Two"]}]}},"sourceSpan":{"start":[21,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/ChildDeclOrder.purs","end":[23,16]}},{"comments":null,"title":"fooInt","info":{"declType":"instance","dependencies":[],"type":{"annotation":[],"tag":"TypeApp","contents":[{"annotation":[],"tag":"TypeConstructor","contents":[["ChildDeclOrder"],"Foo"]},{"annotation":[],"tag":"TypeConstructor","contents":[["Prim"],"Int"]}]}},"sourceSpan":{"start":[25,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/ChildDeclOrder.purs","end":[27,11]}}],"comments":null,"title":"Foo","info":{"fundeps":[],"arguments":[["a",null]],"declType":"typeClass","superclasses":[]},"sourceSpan":{"start":[14,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/ChildDeclOrder.purs","end":[16,12]}}]} \ No newline at end of file
diff --git a/tests/purs/docs/output/ChildDeclOrder/externs.json b/tests/purs/docs/output/ChildDeclOrder/externs.json
index 3b74888..3808dec 100644
--- a/tests/purs/docs/output/ChildDeclOrder/externs.json
+++ b/tests/purs/docs/output/ChildDeclOrder/externs.json
@@ -1 +1 @@
-{"efVersion":"0.12.5","efModuleName":["ChildDeclOrder"],"efExports":[{"ValueRef":[{"start":[5,1],"name":"src/ChildDeclOrder.purs","end":[27,11]},{"Ident":"foo1"}]},{"ValueRef":[{"start":[5,1],"name":"src/ChildDeclOrder.purs","end":[27,11]},{"Ident":"foo2"}]},{"ValueRef":[{"start":[5,1],"name":"src/ChildDeclOrder.purs","end":[27,11]},{"Ident":"show"}]},{"TypeRef":[{"start":[5,1],"name":"src/ChildDeclOrder.purs","end":[27,11]},"Two",["First","Second"]]},{"TypeClassRef":[{"start":[5,1],"name":"src/ChildDeclOrder.purs","end":[27,11]},"Show"]},{"TypeClassRef":[{"start":[5,1],"name":"src/ChildDeclOrder.purs","end":[27,11]},"Foo"]},{"TypeInstanceRef":[{"start":[0,0],"name":"<generated>","end":[0,0]},{"Ident":"showTwo"}]},{"TypeInstanceRef":[{"start":[0,0],"name":"<generated>","end":[0,0]},{"Ident":"fooTwo"}]},{"TypeInstanceRef":[{"start":[0,0],"name":"<generated>","end":[0,0]},{"Ident":"fooInt"}]}],"efImports":[{"eiModule":["Prim"],"eiImportType":{"Implicit":[]},"eiImportedAs":["Prim"]},{"eiModule":["Prim"],"eiImportType":{"Implicit":[]},"eiImportedAs":null}],"efFixities":[],"efTypeFixities":[],"efDeclarations":[{"EDValue":{"edValueName":{"Ident":"foo1"},"edValueType":{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"ForAll","contents":["a",{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"ConstrainedType","contents":[{"constraintAnn":[{"start":[0,0],"name":"","end":[0,0]},[]],"constraintClass":[["ChildDeclOrder"],"Foo"],"constraintArgs":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeVar","contents":"a"}],"constraintData":null},{"annotation":[{"start":[15,11],"name":"src/ChildDeclOrder.purs","end":[15,12]},[]],"tag":"TypeVar","contents":"a"}]},2]}}},{"EDValue":{"edValueName":{"Ident":"foo2"},"edValueType":{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"ForAll","contents":["a",{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"ConstrainedType","contents":[{"constraintAnn":[{"start":[0,0],"name":"","end":[0,0]},[]],"constraintClass":[["ChildDeclOrder"],"Foo"],"constraintArgs":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeVar","contents":"a"}],"constraintData":null},{"annotation":[{"start":[16,11],"name":"src/ChildDeclOrder.purs","end":[16,12]},[]],"tag":"TypeVar","contents":"a"}]},1]}}},{"EDValue":{"edValueName":{"Ident":"show"},"edValueType":{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"ForAll","contents":["a",{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"ConstrainedType","contents":[{"constraintAnn":[{"start":[0,0],"name":"","end":[0,0]},[]],"constraintClass":[["ChildDeclOrder"],"Show"],"constraintArgs":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeVar","contents":"a"}],"constraintData":null},{"annotation":[{"start":[12,11],"name":"src/ChildDeclOrder.purs","end":[12,22]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[12,11],"name":"src/ChildDeclOrder.purs","end":[12,22]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[12,13],"name":"src/ChildDeclOrder.purs","end":[12,15]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[12,11],"name":"src/ChildDeclOrder.purs","end":[12,12]},[]],"tag":"TypeVar","contents":"a"}]},{"annotation":[{"start":[12,16],"name":"src/ChildDeclOrder.purs","end":[12,22]},[]],"tag":"TypeConstructor","contents":[["Prim"],"String"]}]}]},0]}}},{"EDType":{"edTypeName":"Two","edTypeKind":{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"NamedKind","contents":[["Prim"],"Type"]},"edTypeDeclarationKind":{"DataType":{"args":[],"ctors":[["First",[]],["Second",[]]]}}}},{"EDDataConstructor":{"edDataCtorName":"First","edDataCtorOrigin":"data","edDataCtorTypeCtor":"Two","edDataCtorType":{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeConstructor","contents":[["ChildDeclOrder"],"Two"]},"edDataCtorFields":[]}},{"EDDataConstructor":{"edDataCtorName":"Second","edDataCtorOrigin":"data","edDataCtorTypeCtor":"Two","edDataCtorType":{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeConstructor","contents":[["ChildDeclOrder"],"Two"]},"edDataCtorFields":[]}},{"EDType":{"edTypeName":"Show","edTypeKind":{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"FunKind","contents":[{"annotation":[{"start":[12,13],"name":"src/ChildDeclOrder.purs","end":[12,15]},[]],"tag":"NamedKind","contents":[["Prim"],"Type"]},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"NamedKind","contents":[["Prim"],"Type"]}]},"edTypeDeclarationKind":"TypeSynonym"}},{"EDTypeSynonym":{"edTypeSynonymName":"Show","edTypeSynonymArguments":[["a",null]],"edTypeSynonymType":{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Record"]},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"RCons","contents":["show",{"annotation":[{"start":[12,11],"name":"src/ChildDeclOrder.purs","end":[12,22]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[12,11],"name":"src/ChildDeclOrder.purs","end":[12,22]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[12,13],"name":"src/ChildDeclOrder.purs","end":[12,15]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[12,11],"name":"src/ChildDeclOrder.purs","end":[12,12]},[]],"tag":"TypeVar","contents":"a"}]},{"annotation":[{"start":[12,16],"name":"src/ChildDeclOrder.purs","end":[12,22]},[]],"tag":"TypeConstructor","contents":[["Prim"],"String"]}]},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"REmpty"}]}]}}},{"EDClass":{"edClassName":"Show","edClassTypeArguments":[["a",null]],"edClassMembers":[[{"Ident":"show"},{"annotation":[{"start":[12,11],"name":"src/ChildDeclOrder.purs","end":[12,22]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[12,11],"name":"src/ChildDeclOrder.purs","end":[12,22]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[12,13],"name":"src/ChildDeclOrder.purs","end":[12,15]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[12,11],"name":"src/ChildDeclOrder.purs","end":[12,12]},[]],"tag":"TypeVar","contents":"a"}]},{"annotation":[{"start":[12,16],"name":"src/ChildDeclOrder.purs","end":[12,22]},[]],"tag":"TypeConstructor","contents":[["Prim"],"String"]}]}]],"edClassConstraints":[],"edFunctionalDependencies":[]}},{"EDType":{"edTypeName":"Foo","edTypeKind":{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"FunKind","contents":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"NamedKind","contents":[["Prim"],"Type"]},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"NamedKind","contents":[["Prim"],"Type"]}]},"edTypeDeclarationKind":"TypeSynonym"}},{"EDTypeSynonym":{"edTypeSynonymName":"Foo","edTypeSynonymArguments":[["a",null]],"edTypeSynonymType":{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Record"]},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"RCons","contents":["foo1",{"annotation":[{"start":[15,11],"name":"src/ChildDeclOrder.purs","end":[15,12]},[]],"tag":"TypeVar","contents":"a"},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"RCons","contents":["foo2",{"annotation":[{"start":[16,11],"name":"src/ChildDeclOrder.purs","end":[16,12]},[]],"tag":"TypeVar","contents":"a"},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"REmpty"}]}]}]}}},{"EDClass":{"edClassName":"Foo","edClassTypeArguments":[["a",null]],"edClassMembers":[[{"Ident":"foo1"},{"annotation":[{"start":[15,11],"name":"src/ChildDeclOrder.purs","end":[15,12]},[]],"tag":"TypeVar","contents":"a"}],[{"Ident":"foo2"},{"annotation":[{"start":[16,11],"name":"src/ChildDeclOrder.purs","end":[16,12]},[]],"tag":"TypeVar","contents":"a"}]],"edClassConstraints":[],"edFunctionalDependencies":[]}},{"EDInstance":{"edInstanceClassName":[["ChildDeclOrder"],"Show"],"edInstanceName":{"Ident":"showTwo"},"edInstanceTypes":[{"annotation":[{"start":[18,26],"name":"src/ChildDeclOrder.purs","end":[18,29]},[]],"tag":"TypeConstructor","contents":[["ChildDeclOrder"],"Two"]}],"edInstanceConstraints":[],"edInstanceChain":[[["ChildDeclOrder"],{"Ident":"showTwo"}]],"edInstanceChainIndex":0}},{"EDInstance":{"edInstanceClassName":[["ChildDeclOrder"],"Foo"],"edInstanceName":{"Ident":"fooTwo"},"edInstanceTypes":[{"annotation":[{"start":[21,24],"name":"src/ChildDeclOrder.purs","end":[21,27]},[]],"tag":"TypeConstructor","contents":[["ChildDeclOrder"],"Two"]}],"edInstanceConstraints":[],"edInstanceChain":[[["ChildDeclOrder"],{"Ident":"fooTwo"}]],"edInstanceChainIndex":0}},{"EDInstance":{"edInstanceClassName":[["ChildDeclOrder"],"Foo"],"edInstanceName":{"Ident":"fooInt"},"edInstanceTypes":[{"annotation":[{"start":[25,24],"name":"src/ChildDeclOrder.purs","end":[25,27]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Int"]}],"edInstanceConstraints":[],"edInstanceChain":[[["ChildDeclOrder"],{"Ident":"fooInt"}]],"edInstanceChainIndex":0}}],"efSourceSpan":{"start":[5,1],"name":"src/ChildDeclOrder.purs","end":[27,11]}} \ No newline at end of file
+{"efVersion":"0.13.2","efModuleName":["ChildDeclOrder"],"efExports":[{"ValueRef":[{"start":[5,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/ChildDeclOrder.purs","end":[27,11]},{"Ident":"foo1"}]},{"ValueRef":[{"start":[5,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/ChildDeclOrder.purs","end":[27,11]},{"Ident":"foo2"}]},{"ValueRef":[{"start":[5,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/ChildDeclOrder.purs","end":[27,11]},{"Ident":"show"}]},{"TypeRef":[{"start":[5,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/ChildDeclOrder.purs","end":[27,11]},"Two",["First","Second"]]},{"TypeClassRef":[{"start":[5,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/ChildDeclOrder.purs","end":[27,11]},"Show"]},{"TypeClassRef":[{"start":[5,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/ChildDeclOrder.purs","end":[27,11]},"Foo"]},{"TypeInstanceRef":[{"start":[0,0],"name":"<generated>","end":[0,0]},{"Ident":"showTwo"}]},{"TypeInstanceRef":[{"start":[0,0],"name":"<generated>","end":[0,0]},{"Ident":"fooTwo"}]},{"TypeInstanceRef":[{"start":[0,0],"name":"<generated>","end":[0,0]},{"Ident":"fooInt"}]}],"efImports":[{"eiModule":["Prim"],"eiImportType":{"Implicit":[]},"eiImportedAs":["Prim"]},{"eiModule":["Prim"],"eiImportType":{"Implicit":[]},"eiImportedAs":null}],"efFixities":[],"efTypeFixities":[],"efDeclarations":[{"EDValue":{"edValueName":{"Ident":"foo1"},"edValueType":{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"ForAll","contents":["a",{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"ConstrainedType","contents":[{"constraintAnn":[{"start":[0,0],"name":"","end":[0,0]},[]],"constraintClass":[["ChildDeclOrder"],"Foo"],"constraintArgs":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeVar","contents":"a"}],"constraintData":null},{"annotation":[{"start":[15,11],"name":"/home/harry/code/purescript/tests/purs/docs/src/ChildDeclOrder.purs","end":[15,12]},[]],"tag":"TypeVar","contents":"a"}]},2]}}},{"EDValue":{"edValueName":{"Ident":"foo2"},"edValueType":{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"ForAll","contents":["a",{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"ConstrainedType","contents":[{"constraintAnn":[{"start":[0,0],"name":"","end":[0,0]},[]],"constraintClass":[["ChildDeclOrder"],"Foo"],"constraintArgs":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeVar","contents":"a"}],"constraintData":null},{"annotation":[{"start":[16,11],"name":"/home/harry/code/purescript/tests/purs/docs/src/ChildDeclOrder.purs","end":[16,12]},[]],"tag":"TypeVar","contents":"a"}]},1]}}},{"EDValue":{"edValueName":{"Ident":"show"},"edValueType":{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"ForAll","contents":["a",{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"ConstrainedType","contents":[{"constraintAnn":[{"start":[0,0],"name":"","end":[0,0]},[]],"constraintClass":[["ChildDeclOrder"],"Show"],"constraintArgs":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeVar","contents":"a"}],"constraintData":null},{"annotation":[{"start":[12,11],"name":"/home/harry/code/purescript/tests/purs/docs/src/ChildDeclOrder.purs","end":[12,22]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[12,11],"name":"/home/harry/code/purescript/tests/purs/docs/src/ChildDeclOrder.purs","end":[12,22]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[12,13],"name":"/home/harry/code/purescript/tests/purs/docs/src/ChildDeclOrder.purs","end":[12,15]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[12,11],"name":"/home/harry/code/purescript/tests/purs/docs/src/ChildDeclOrder.purs","end":[12,12]},[]],"tag":"TypeVar","contents":"a"}]},{"annotation":[{"start":[12,16],"name":"/home/harry/code/purescript/tests/purs/docs/src/ChildDeclOrder.purs","end":[12,22]},[]],"tag":"TypeConstructor","contents":[["Prim"],"String"]}]}]},0]}}},{"EDType":{"edTypeName":"Two","edTypeKind":{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"NamedKind","contents":[["Prim"],"Type"]},"edTypeDeclarationKind":{"DataType":{"args":[],"ctors":[["First",[]],["Second",[]]]}}}},{"EDDataConstructor":{"edDataCtorName":"First","edDataCtorOrigin":"data","edDataCtorTypeCtor":"Two","edDataCtorType":{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeConstructor","contents":[["ChildDeclOrder"],"Two"]},"edDataCtorFields":[]}},{"EDDataConstructor":{"edDataCtorName":"Second","edDataCtorOrigin":"data","edDataCtorTypeCtor":"Two","edDataCtorType":{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeConstructor","contents":[["ChildDeclOrder"],"Two"]},"edDataCtorFields":[]}},{"EDType":{"edTypeName":"Show","edTypeKind":{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"FunKind","contents":[{"annotation":[{"start":[12,13],"name":"/home/harry/code/purescript/tests/purs/docs/src/ChildDeclOrder.purs","end":[12,15]},[]],"tag":"NamedKind","contents":[["Prim"],"Type"]},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"NamedKind","contents":[["Prim"],"Type"]}]},"edTypeDeclarationKind":"TypeSynonym"}},{"EDTypeSynonym":{"edTypeSynonymName":"Show","edTypeSynonymArguments":[["a",null]],"edTypeSynonymType":{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Record"]},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"RCons","contents":["show",{"annotation":[{"start":[12,11],"name":"/home/harry/code/purescript/tests/purs/docs/src/ChildDeclOrder.purs","end":[12,22]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[12,11],"name":"/home/harry/code/purescript/tests/purs/docs/src/ChildDeclOrder.purs","end":[12,22]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[12,13],"name":"/home/harry/code/purescript/tests/purs/docs/src/ChildDeclOrder.purs","end":[12,15]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[12,11],"name":"/home/harry/code/purescript/tests/purs/docs/src/ChildDeclOrder.purs","end":[12,12]},[]],"tag":"TypeVar","contents":"a"}]},{"annotation":[{"start":[12,16],"name":"/home/harry/code/purescript/tests/purs/docs/src/ChildDeclOrder.purs","end":[12,22]},[]],"tag":"TypeConstructor","contents":[["Prim"],"String"]}]},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"REmpty"}]}]}}},{"EDClass":{"edClassName":"Show","edClassTypeArguments":[["a",null]],"edClassMembers":[[{"Ident":"show"},{"annotation":[{"start":[12,11],"name":"/home/harry/code/purescript/tests/purs/docs/src/ChildDeclOrder.purs","end":[12,22]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[12,11],"name":"/home/harry/code/purescript/tests/purs/docs/src/ChildDeclOrder.purs","end":[12,22]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[12,13],"name":"/home/harry/code/purescript/tests/purs/docs/src/ChildDeclOrder.purs","end":[12,15]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[12,11],"name":"/home/harry/code/purescript/tests/purs/docs/src/ChildDeclOrder.purs","end":[12,12]},[]],"tag":"TypeVar","contents":"a"}]},{"annotation":[{"start":[12,16],"name":"/home/harry/code/purescript/tests/purs/docs/src/ChildDeclOrder.purs","end":[12,22]},[]],"tag":"TypeConstructor","contents":[["Prim"],"String"]}]}]],"edClassConstraints":[],"edFunctionalDependencies":[],"edIsEmpty":false}},{"EDType":{"edTypeName":"Foo","edTypeKind":{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"FunKind","contents":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"NamedKind","contents":[["Prim"],"Type"]},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"NamedKind","contents":[["Prim"],"Type"]}]},"edTypeDeclarationKind":"TypeSynonym"}},{"EDTypeSynonym":{"edTypeSynonymName":"Foo","edTypeSynonymArguments":[["a",null]],"edTypeSynonymType":{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Record"]},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"RCons","contents":["foo1",{"annotation":[{"start":[15,11],"name":"/home/harry/code/purescript/tests/purs/docs/src/ChildDeclOrder.purs","end":[15,12]},[]],"tag":"TypeVar","contents":"a"},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"RCons","contents":["foo2",{"annotation":[{"start":[16,11],"name":"/home/harry/code/purescript/tests/purs/docs/src/ChildDeclOrder.purs","end":[16,12]},[]],"tag":"TypeVar","contents":"a"},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"REmpty"}]}]}]}}},{"EDClass":{"edClassName":"Foo","edClassTypeArguments":[["a",null]],"edClassMembers":[[{"Ident":"foo1"},{"annotation":[{"start":[15,11],"name":"/home/harry/code/purescript/tests/purs/docs/src/ChildDeclOrder.purs","end":[15,12]},[]],"tag":"TypeVar","contents":"a"}],[{"Ident":"foo2"},{"annotation":[{"start":[16,11],"name":"/home/harry/code/purescript/tests/purs/docs/src/ChildDeclOrder.purs","end":[16,12]},[]],"tag":"TypeVar","contents":"a"}]],"edClassConstraints":[],"edFunctionalDependencies":[],"edIsEmpty":false}},{"EDInstance":{"edInstanceClassName":[["ChildDeclOrder"],"Show"],"edInstanceName":{"Ident":"showTwo"},"edInstanceTypes":[{"annotation":[{"start":[18,26],"name":"/home/harry/code/purescript/tests/purs/docs/src/ChildDeclOrder.purs","end":[18,29]},[]],"tag":"TypeConstructor","contents":[["ChildDeclOrder"],"Two"]}],"edInstanceConstraints":[],"edInstanceChain":[[["ChildDeclOrder"],{"Ident":"showTwo"}]],"edInstanceChainIndex":0}},{"EDInstance":{"edInstanceClassName":[["ChildDeclOrder"],"Foo"],"edInstanceName":{"Ident":"fooTwo"},"edInstanceTypes":[{"annotation":[{"start":[21,24],"name":"/home/harry/code/purescript/tests/purs/docs/src/ChildDeclOrder.purs","end":[21,27]},[]],"tag":"TypeConstructor","contents":[["ChildDeclOrder"],"Two"]}],"edInstanceConstraints":[],"edInstanceChain":[[["ChildDeclOrder"],{"Ident":"fooTwo"}]],"edInstanceChainIndex":0}},{"EDInstance":{"edInstanceClassName":[["ChildDeclOrder"],"Foo"],"edInstanceName":{"Ident":"fooInt"},"edInstanceTypes":[{"annotation":[{"start":[25,24],"name":"/home/harry/code/purescript/tests/purs/docs/src/ChildDeclOrder.purs","end":[25,27]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Int"]}],"edInstanceConstraints":[],"edInstanceChain":[[["ChildDeclOrder"],{"Ident":"fooInt"}]],"edInstanceChainIndex":0}}],"efSourceSpan":{"start":[5,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/ChildDeclOrder.purs","end":[27,11]}} \ No newline at end of file
diff --git a/tests/purs/docs/output/Clash/externs.json b/tests/purs/docs/output/Clash/externs.json
index 66bfd57..281d038 100644
--- a/tests/purs/docs/output/Clash/externs.json
+++ b/tests/purs/docs/output/Clash/externs.json
@@ -1 +1 @@
-{"efVersion":"0.12.5","efModuleName":["Clash"],"efExports":[{"ReExportRef":[{"start":[1,1],"name":"src/Clash.purs","end":[4,24]},{"exportSourceImportedFrom":["Clash1"],"exportSourceDefinedIn":["Clash1a"]},{"TypeRef":[{"start":[1,1],"name":"src/Clash.purs","end":[4,24]},"Type",[]]}]},{"ReExportRef":[{"start":[1,1],"name":"src/Clash.purs","end":[4,24]},{"exportSourceImportedFrom":["Clash1"],"exportSourceDefinedIn":["Clash1a"]},{"TypeClassRef":[{"start":[1,1],"name":"src/Clash.purs","end":[4,24]},"TypeClass"]}]},{"ReExportRef":[{"start":[1,1],"name":"src/Clash.purs","end":[4,24]},{"exportSourceImportedFrom":["Clash1"],"exportSourceDefinedIn":["Clash1a"]},{"ValueRef":[{"start":[1,1],"name":"src/Clash.purs","end":[4,24]},{"Ident":"typeClassMember"}]}]},{"ReExportRef":[{"start":[1,1],"name":"src/Clash.purs","end":[4,24]},{"exportSourceImportedFrom":["Clash1"],"exportSourceDefinedIn":["Clash1a"]},{"ValueRef":[{"start":[1,1],"name":"src/Clash.purs","end":[4,24]},{"Ident":"value"}]}]},{"ModuleRef":[{"start":[1,15],"name":"src/Clash.purs","end":[1,28]},["Clash1"]]}],"efImports":[{"eiModule":["Prim"],"eiImportType":{"Implicit":[]},"eiImportedAs":["Prim"]},{"eiModule":["Prim"],"eiImportType":{"Implicit":[]},"eiImportedAs":null},{"eiModule":["Clash1"],"eiImportType":{"Implicit":[]},"eiImportedAs":["Clash1"]},{"eiModule":["Clash2"],"eiImportType":{"Implicit":[]},"eiImportedAs":["Clash2"]}],"efFixities":[],"efTypeFixities":[],"efDeclarations":[],"efSourceSpan":{"start":[1,1],"name":"src/Clash.purs","end":[4,24]}} \ No newline at end of file
+{"efVersion":"0.13.2","efModuleName":["Clash"],"efExports":[{"ReExportRef":[{"start":[1,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/Clash.purs","end":[4,24]},{"exportSourceImportedFrom":["Clash1"],"exportSourceDefinedIn":["Clash1a"]},{"TypeRef":[{"start":[1,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/Clash.purs","end":[4,24]},"Type",[]]}]},{"ReExportRef":[{"start":[1,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/Clash.purs","end":[4,24]},{"exportSourceImportedFrom":["Clash1"],"exportSourceDefinedIn":["Clash1a"]},{"TypeClassRef":[{"start":[1,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/Clash.purs","end":[4,24]},"TypeClass"]}]},{"ReExportRef":[{"start":[1,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/Clash.purs","end":[4,24]},{"exportSourceImportedFrom":["Clash1"],"exportSourceDefinedIn":["Clash1a"]},{"ValueRef":[{"start":[1,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/Clash.purs","end":[4,24]},{"Ident":"typeClassMember"}]}]},{"ReExportRef":[{"start":[1,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/Clash.purs","end":[4,24]},{"exportSourceImportedFrom":["Clash1"],"exportSourceDefinedIn":["Clash1a"]},{"ValueRef":[{"start":[1,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/Clash.purs","end":[4,24]},{"Ident":"value"}]}]},{"ModuleRef":[{"start":[1,15],"name":"/home/harry/code/purescript/tests/purs/docs/src/Clash.purs","end":[1,28]},["Clash1"]]}],"efImports":[{"eiModule":["Prim"],"eiImportType":{"Implicit":[]},"eiImportedAs":["Prim"]},{"eiModule":["Prim"],"eiImportType":{"Implicit":[]},"eiImportedAs":null},{"eiModule":["Clash1"],"eiImportType":{"Implicit":[]},"eiImportedAs":["Clash1"]},{"eiModule":["Clash2"],"eiImportType":{"Implicit":[]},"eiImportedAs":["Clash2"]}],"efFixities":[],"efTypeFixities":[],"efDeclarations":[],"efSourceSpan":{"start":[1,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/Clash.purs","end":[4,24]}} \ No newline at end of file
diff --git a/tests/purs/docs/output/Clash1/externs.json b/tests/purs/docs/output/Clash1/externs.json
index 84690d3..2002388 100644
--- a/tests/purs/docs/output/Clash1/externs.json
+++ b/tests/purs/docs/output/Clash1/externs.json
@@ -1 +1 @@
-{"efVersion":"0.12.5","efModuleName":["Clash1"],"efExports":[{"ReExportRef":[{"start":[1,1],"name":"src/Clash1.purs","end":[3,15]},{"exportSourceImportedFrom":["Clash1a"],"exportSourceDefinedIn":["Clash1a"]},{"TypeRef":[{"start":[1,1],"name":"src/Clash1.purs","end":[3,15]},"Type",[]]}]},{"ReExportRef":[{"start":[1,1],"name":"src/Clash1.purs","end":[3,15]},{"exportSourceImportedFrom":["Clash1a"],"exportSourceDefinedIn":["Clash1a"]},{"TypeClassRef":[{"start":[1,1],"name":"src/Clash1.purs","end":[3,15]},"TypeClass"]}]},{"ReExportRef":[{"start":[1,1],"name":"src/Clash1.purs","end":[3,15]},{"exportSourceImportedFrom":["Clash1a"],"exportSourceDefinedIn":["Clash1a"]},{"ValueRef":[{"start":[1,1],"name":"src/Clash1.purs","end":[3,15]},{"Ident":"typeClassMember"}]}]},{"ReExportRef":[{"start":[1,1],"name":"src/Clash1.purs","end":[3,15]},{"exportSourceImportedFrom":["Clash1a"],"exportSourceDefinedIn":["Clash1a"]},{"ValueRef":[{"start":[1,1],"name":"src/Clash1.purs","end":[3,15]},{"Ident":"value"}]}]},{"ModuleRef":[{"start":[1,16],"name":"src/Clash1.purs","end":[1,30]},["Clash1a"]]}],"efImports":[{"eiModule":["Prim"],"eiImportType":{"Implicit":[]},"eiImportedAs":["Prim"]},{"eiModule":["Prim"],"eiImportType":{"Implicit":[]},"eiImportedAs":null},{"eiModule":["Clash1a"],"eiImportType":{"Implicit":[]},"eiImportedAs":null}],"efFixities":[],"efTypeFixities":[],"efDeclarations":[],"efSourceSpan":{"start":[1,1],"name":"src/Clash1.purs","end":[3,15]}} \ No newline at end of file
+{"efVersion":"0.13.2","efModuleName":["Clash1"],"efExports":[{"ReExportRef":[{"start":[1,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/Clash1.purs","end":[3,15]},{"exportSourceImportedFrom":["Clash1a"],"exportSourceDefinedIn":["Clash1a"]},{"TypeRef":[{"start":[1,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/Clash1.purs","end":[3,15]},"Type",[]]}]},{"ReExportRef":[{"start":[1,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/Clash1.purs","end":[3,15]},{"exportSourceImportedFrom":["Clash1a"],"exportSourceDefinedIn":["Clash1a"]},{"TypeClassRef":[{"start":[1,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/Clash1.purs","end":[3,15]},"TypeClass"]}]},{"ReExportRef":[{"start":[1,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/Clash1.purs","end":[3,15]},{"exportSourceImportedFrom":["Clash1a"],"exportSourceDefinedIn":["Clash1a"]},{"ValueRef":[{"start":[1,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/Clash1.purs","end":[3,15]},{"Ident":"typeClassMember"}]}]},{"ReExportRef":[{"start":[1,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/Clash1.purs","end":[3,15]},{"exportSourceImportedFrom":["Clash1a"],"exportSourceDefinedIn":["Clash1a"]},{"ValueRef":[{"start":[1,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/Clash1.purs","end":[3,15]},{"Ident":"value"}]}]},{"ModuleRef":[{"start":[1,16],"name":"/home/harry/code/purescript/tests/purs/docs/src/Clash1.purs","end":[1,30]},["Clash1a"]]}],"efImports":[{"eiModule":["Prim"],"eiImportType":{"Implicit":[]},"eiImportedAs":["Prim"]},{"eiModule":["Prim"],"eiImportType":{"Implicit":[]},"eiImportedAs":null},{"eiModule":["Clash1a"],"eiImportType":{"Implicit":[]},"eiImportedAs":null}],"efFixities":[],"efTypeFixities":[],"efDeclarations":[],"efSourceSpan":{"start":[1,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/Clash1.purs","end":[3,15]}} \ No newline at end of file
diff --git a/tests/purs/docs/output/Clash1a/docs.json b/tests/purs/docs/output/Clash1a/docs.json
index 0a89d36..2f7f914 100644
--- a/tests/purs/docs/output/Clash1a/docs.json
+++ b/tests/purs/docs/output/Clash1a/docs.json
@@ -1 +1 @@
-{"reExports":[],"name":"Clash1a","comments":null,"declarations":[{"children":[],"comments":null,"title":"value","info":{"declType":"value","type":{"annotation":[],"tag":"TypeConstructor","contents":[["Prim"],"Int"]}},"sourceSpan":{"start":[3,1],"name":"src/Clash1a.purs","end":[3,13]}},{"children":[],"comments":null,"title":"Type","info":{"arguments":[],"declType":"typeSynonym","type":{"annotation":[],"tag":"TypeConstructor","contents":[["Prim"],"Int"]}},"sourceSpan":{"start":[6,1],"name":"src/Clash1a.purs","end":[6,16]}},{"children":[{"comments":null,"title":"typeClassMember","info":{"declType":"typeClassMember","type":{"annotation":[],"tag":"TypeVar","contents":"a"}},"sourceSpan":{"start":[9,3],"name":"src/Clash1a.purs","end":[9,23]}}],"comments":null,"title":"TypeClass","info":{"fundeps":[],"arguments":[["a",null]],"declType":"typeClass","superclasses":[]},"sourceSpan":{"start":[8,1],"name":"src/Clash1a.purs","end":[9,23]}}]} \ No newline at end of file
+{"reExports":[],"name":"Clash1a","comments":null,"declarations":[{"children":[],"comments":null,"title":"value","info":{"declType":"value","type":{"annotation":[],"tag":"TypeConstructor","contents":[["Prim"],"Int"]}},"sourceSpan":{"start":[3,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/Clash1a.purs","end":[3,13]}},{"children":[],"comments":null,"title":"Type","info":{"arguments":[],"declType":"typeSynonym","type":{"annotation":[],"tag":"TypeConstructor","contents":[["Prim"],"Int"]}},"sourceSpan":{"start":[6,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/Clash1a.purs","end":[6,16]}},{"children":[{"comments":null,"title":"typeClassMember","info":{"declType":"typeClassMember","type":{"annotation":[],"tag":"TypeVar","contents":"a"}},"sourceSpan":{"start":[9,3],"name":"/home/harry/code/purescript/tests/purs/docs/src/Clash1a.purs","end":[9,23]}}],"comments":null,"title":"TypeClass","info":{"fundeps":[],"arguments":[["a",null]],"declType":"typeClass","superclasses":[]},"sourceSpan":{"start":[8,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/Clash1a.purs","end":[9,23]}}]} \ No newline at end of file
diff --git a/tests/purs/docs/output/Clash1a/externs.json b/tests/purs/docs/output/Clash1a/externs.json
index 5eeb377..af196ce 100644
--- a/tests/purs/docs/output/Clash1a/externs.json
+++ b/tests/purs/docs/output/Clash1a/externs.json
@@ -1 +1 @@
-{"efVersion":"0.12.5","efModuleName":["Clash1a"],"efExports":[{"ValueRef":[{"start":[1,1],"name":"src/Clash1a.purs","end":[9,23]},{"Ident":"typeClassMember"}]},{"ValueRef":[{"start":[1,1],"name":"src/Clash1a.purs","end":[9,23]},{"Ident":"value"}]},{"TypeRef":[{"start":[1,1],"name":"src/Clash1a.purs","end":[9,23]},"Type",[]]},{"TypeClassRef":[{"start":[1,1],"name":"src/Clash1a.purs","end":[9,23]},"TypeClass"]}],"efImports":[{"eiModule":["Prim"],"eiImportType":{"Implicit":[]},"eiImportedAs":["Prim"]},{"eiModule":["Prim"],"eiImportType":{"Implicit":[]},"eiImportedAs":null}],"efFixities":[],"efTypeFixities":[],"efDeclarations":[{"EDValue":{"edValueName":{"Ident":"typeClassMember"},"edValueType":{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"ForAll","contents":["a",{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"ConstrainedType","contents":[{"constraintAnn":[{"start":[0,0],"name":"","end":[0,0]},[]],"constraintClass":[["Clash1a"],"TypeClass"],"constraintArgs":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeVar","contents":"a"}],"constraintData":null},{"annotation":[{"start":[9,22],"name":"src/Clash1a.purs","end":[9,23]},[]],"tag":"TypeVar","contents":"a"}]},0]}}},{"EDValue":{"edValueName":{"Ident":"value"},"edValueType":{"annotation":[{"start":[3,10],"name":"src/Clash1a.purs","end":[3,13]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Int"]}}},{"EDType":{"edTypeName":"Type","edTypeKind":{"annotation":[{"start":[6,13],"name":"src/Clash1a.purs","end":[6,16]},[]],"tag":"NamedKind","contents":[["Prim"],"Type"]},"edTypeDeclarationKind":"TypeSynonym"}},{"EDTypeSynonym":{"edTypeSynonymName":"Type","edTypeSynonymArguments":[],"edTypeSynonymType":{"annotation":[{"start":[6,13],"name":"src/Clash1a.purs","end":[6,16]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Int"]}}},{"EDType":{"edTypeName":"TypeClass","edTypeKind":{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"FunKind","contents":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"NamedKind","contents":[["Prim"],"Type"]},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"NamedKind","contents":[["Prim"],"Type"]}]},"edTypeDeclarationKind":"TypeSynonym"}},{"EDTypeSynonym":{"edTypeSynonymName":"TypeClass","edTypeSynonymArguments":[["a",null]],"edTypeSynonymType":{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Record"]},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"RCons","contents":["typeClassMember",{"annotation":[{"start":[9,22],"name":"src/Clash1a.purs","end":[9,23]},[]],"tag":"TypeVar","contents":"a"},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"REmpty"}]}]}}},{"EDClass":{"edClassName":"TypeClass","edClassTypeArguments":[["a",null]],"edClassMembers":[[{"Ident":"typeClassMember"},{"annotation":[{"start":[9,22],"name":"src/Clash1a.purs","end":[9,23]},[]],"tag":"TypeVar","contents":"a"}]],"edClassConstraints":[],"edFunctionalDependencies":[]}}],"efSourceSpan":{"start":[1,1],"name":"src/Clash1a.purs","end":[9,23]}} \ No newline at end of file
+{"efVersion":"0.13.2","efModuleName":["Clash1a"],"efExports":[{"ValueRef":[{"start":[1,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/Clash1a.purs","end":[9,23]},{"Ident":"typeClassMember"}]},{"ValueRef":[{"start":[1,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/Clash1a.purs","end":[9,23]},{"Ident":"value"}]},{"TypeRef":[{"start":[1,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/Clash1a.purs","end":[9,23]},"Type",[]]},{"TypeClassRef":[{"start":[1,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/Clash1a.purs","end":[9,23]},"TypeClass"]}],"efImports":[{"eiModule":["Prim"],"eiImportType":{"Implicit":[]},"eiImportedAs":["Prim"]},{"eiModule":["Prim"],"eiImportType":{"Implicit":[]},"eiImportedAs":null}],"efFixities":[],"efTypeFixities":[],"efDeclarations":[{"EDValue":{"edValueName":{"Ident":"typeClassMember"},"edValueType":{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"ForAll","contents":["a",{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"ConstrainedType","contents":[{"constraintAnn":[{"start":[0,0],"name":"","end":[0,0]},[]],"constraintClass":[["Clash1a"],"TypeClass"],"constraintArgs":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeVar","contents":"a"}],"constraintData":null},{"annotation":[{"start":[9,22],"name":"/home/harry/code/purescript/tests/purs/docs/src/Clash1a.purs","end":[9,23]},[]],"tag":"TypeVar","contents":"a"}]},0]}}},{"EDValue":{"edValueName":{"Ident":"value"},"edValueType":{"annotation":[{"start":[3,10],"name":"/home/harry/code/purescript/tests/purs/docs/src/Clash1a.purs","end":[3,13]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Int"]}}},{"EDType":{"edTypeName":"Type","edTypeKind":{"annotation":[{"start":[6,13],"name":"/home/harry/code/purescript/tests/purs/docs/src/Clash1a.purs","end":[6,16]},[]],"tag":"NamedKind","contents":[["Prim"],"Type"]},"edTypeDeclarationKind":"TypeSynonym"}},{"EDTypeSynonym":{"edTypeSynonymName":"Type","edTypeSynonymArguments":[],"edTypeSynonymType":{"annotation":[{"start":[6,13],"name":"/home/harry/code/purescript/tests/purs/docs/src/Clash1a.purs","end":[6,16]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Int"]}}},{"EDType":{"edTypeName":"TypeClass","edTypeKind":{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"FunKind","contents":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"NamedKind","contents":[["Prim"],"Type"]},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"NamedKind","contents":[["Prim"],"Type"]}]},"edTypeDeclarationKind":"TypeSynonym"}},{"EDTypeSynonym":{"edTypeSynonymName":"TypeClass","edTypeSynonymArguments":[["a",null]],"edTypeSynonymType":{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Record"]},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"RCons","contents":["typeClassMember",{"annotation":[{"start":[9,22],"name":"/home/harry/code/purescript/tests/purs/docs/src/Clash1a.purs","end":[9,23]},[]],"tag":"TypeVar","contents":"a"},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"REmpty"}]}]}}},{"EDClass":{"edClassName":"TypeClass","edClassTypeArguments":[["a",null]],"edClassMembers":[[{"Ident":"typeClassMember"},{"annotation":[{"start":[9,22],"name":"/home/harry/code/purescript/tests/purs/docs/src/Clash1a.purs","end":[9,23]},[]],"tag":"TypeVar","contents":"a"}]],"edClassConstraints":[],"edFunctionalDependencies":[],"edIsEmpty":false}}],"efSourceSpan":{"start":[1,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/Clash1a.purs","end":[9,23]}} \ No newline at end of file
diff --git a/tests/purs/docs/output/Clash2/externs.json b/tests/purs/docs/output/Clash2/externs.json
index 7ca5e24..1f08994 100644
--- a/tests/purs/docs/output/Clash2/externs.json
+++ b/tests/purs/docs/output/Clash2/externs.json
@@ -1 +1 @@
-{"efVersion":"0.12.5","efModuleName":["Clash2"],"efExports":[{"ReExportRef":[{"start":[1,1],"name":"src/Clash2.purs","end":[3,15]},{"exportSourceImportedFrom":["Clash2a"],"exportSourceDefinedIn":["Clash2a"]},{"TypeRef":[{"start":[1,1],"name":"src/Clash2.purs","end":[3,15]},"Type",[]]}]},{"ReExportRef":[{"start":[1,1],"name":"src/Clash2.purs","end":[3,15]},{"exportSourceImportedFrom":["Clash2a"],"exportSourceDefinedIn":["Clash2a"]},{"TypeClassRef":[{"start":[1,1],"name":"src/Clash2.purs","end":[3,15]},"TypeClass"]}]},{"ReExportRef":[{"start":[1,1],"name":"src/Clash2.purs","end":[3,15]},{"exportSourceImportedFrom":["Clash2a"],"exportSourceDefinedIn":["Clash2a"]},{"ValueRef":[{"start":[1,1],"name":"src/Clash2.purs","end":[3,15]},{"Ident":"typeClassMember"}]}]},{"ReExportRef":[{"start":[1,1],"name":"src/Clash2.purs","end":[3,15]},{"exportSourceImportedFrom":["Clash2a"],"exportSourceDefinedIn":["Clash2a"]},{"ValueRef":[{"start":[1,1],"name":"src/Clash2.purs","end":[3,15]},{"Ident":"value"}]}]},{"ModuleRef":[{"start":[1,16],"name":"src/Clash2.purs","end":[1,30]},["Clash2a"]]}],"efImports":[{"eiModule":["Prim"],"eiImportType":{"Implicit":[]},"eiImportedAs":["Prim"]},{"eiModule":["Prim"],"eiImportType":{"Implicit":[]},"eiImportedAs":null},{"eiModule":["Clash2a"],"eiImportType":{"Implicit":[]},"eiImportedAs":null}],"efFixities":[],"efTypeFixities":[],"efDeclarations":[],"efSourceSpan":{"start":[1,1],"name":"src/Clash2.purs","end":[3,15]}} \ No newline at end of file
+{"efVersion":"0.13.2","efModuleName":["Clash2"],"efExports":[{"ReExportRef":[{"start":[1,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/Clash2.purs","end":[3,15]},{"exportSourceImportedFrom":["Clash2a"],"exportSourceDefinedIn":["Clash2a"]},{"TypeRef":[{"start":[1,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/Clash2.purs","end":[3,15]},"Type",[]]}]},{"ReExportRef":[{"start":[1,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/Clash2.purs","end":[3,15]},{"exportSourceImportedFrom":["Clash2a"],"exportSourceDefinedIn":["Clash2a"]},{"TypeClassRef":[{"start":[1,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/Clash2.purs","end":[3,15]},"TypeClass"]}]},{"ReExportRef":[{"start":[1,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/Clash2.purs","end":[3,15]},{"exportSourceImportedFrom":["Clash2a"],"exportSourceDefinedIn":["Clash2a"]},{"ValueRef":[{"start":[1,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/Clash2.purs","end":[3,15]},{"Ident":"typeClassMember"}]}]},{"ReExportRef":[{"start":[1,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/Clash2.purs","end":[3,15]},{"exportSourceImportedFrom":["Clash2a"],"exportSourceDefinedIn":["Clash2a"]},{"ValueRef":[{"start":[1,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/Clash2.purs","end":[3,15]},{"Ident":"value"}]}]},{"ModuleRef":[{"start":[1,16],"name":"/home/harry/code/purescript/tests/purs/docs/src/Clash2.purs","end":[1,30]},["Clash2a"]]}],"efImports":[{"eiModule":["Prim"],"eiImportType":{"Implicit":[]},"eiImportedAs":["Prim"]},{"eiModule":["Prim"],"eiImportType":{"Implicit":[]},"eiImportedAs":null},{"eiModule":["Clash2a"],"eiImportType":{"Implicit":[]},"eiImportedAs":null}],"efFixities":[],"efTypeFixities":[],"efDeclarations":[],"efSourceSpan":{"start":[1,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/Clash2.purs","end":[3,15]}} \ No newline at end of file
diff --git a/tests/purs/docs/output/Clash2a/docs.json b/tests/purs/docs/output/Clash2a/docs.json
index 151944e..d2242b9 100644
--- a/tests/purs/docs/output/Clash2a/docs.json
+++ b/tests/purs/docs/output/Clash2a/docs.json
@@ -1 +1 @@
-{"reExports":[],"name":"Clash2a","comments":null,"declarations":[{"children":[],"comments":null,"title":"value","info":{"declType":"value","type":{"annotation":[],"tag":"TypeConstructor","contents":[["Prim"],"String"]}},"sourceSpan":{"start":[3,1],"name":"src/Clash2a.purs","end":[3,16]}},{"children":[],"comments":null,"title":"Type","info":{"arguments":[],"declType":"typeSynonym","type":{"annotation":[],"tag":"TypeConstructor","contents":[["Prim"],"String"]}},"sourceSpan":{"start":[6,1],"name":"src/Clash2a.purs","end":[6,19]}},{"children":[{"comments":null,"title":"typeClassMember","info":{"declType":"typeClassMember","type":{"annotation":[],"tag":"TypeApp","contents":[{"annotation":[],"tag":"TypeApp","contents":[{"annotation":[],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[],"tag":"TypeVar","contents":"a"}]},{"annotation":[],"tag":"TypeVar","contents":"b"}]}},"sourceSpan":{"start":[9,3],"name":"src/Clash2a.purs","end":[9,28]}}],"comments":null,"title":"TypeClass","info":{"fundeps":[],"arguments":[["a",null],["b",null]],"declType":"typeClass","superclasses":[]},"sourceSpan":{"start":[8,1],"name":"src/Clash2a.purs","end":[9,28]}}]} \ No newline at end of file
+{"reExports":[],"name":"Clash2a","comments":null,"declarations":[{"children":[],"comments":null,"title":"value","info":{"declType":"value","type":{"annotation":[],"tag":"TypeConstructor","contents":[["Prim"],"String"]}},"sourceSpan":{"start":[3,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/Clash2a.purs","end":[3,16]}},{"children":[],"comments":null,"title":"Type","info":{"arguments":[],"declType":"typeSynonym","type":{"annotation":[],"tag":"TypeConstructor","contents":[["Prim"],"String"]}},"sourceSpan":{"start":[6,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/Clash2a.purs","end":[6,19]}},{"children":[{"comments":null,"title":"typeClassMember","info":{"declType":"typeClassMember","type":{"annotation":[],"tag":"TypeApp","contents":[{"annotation":[],"tag":"TypeApp","contents":[{"annotation":[],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[],"tag":"TypeVar","contents":"a"}]},{"annotation":[],"tag":"TypeVar","contents":"b"}]}},"sourceSpan":{"start":[9,3],"name":"/home/harry/code/purescript/tests/purs/docs/src/Clash2a.purs","end":[9,28]}}],"comments":null,"title":"TypeClass","info":{"fundeps":[],"arguments":[["a",null],["b",null]],"declType":"typeClass","superclasses":[]},"sourceSpan":{"start":[8,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/Clash2a.purs","end":[9,28]}}]} \ No newline at end of file
diff --git a/tests/purs/docs/output/Clash2a/externs.json b/tests/purs/docs/output/Clash2a/externs.json
index 6e3febd..2af705f 100644
--- a/tests/purs/docs/output/Clash2a/externs.json
+++ b/tests/purs/docs/output/Clash2a/externs.json
@@ -1 +1 @@
-{"efVersion":"0.12.5","efModuleName":["Clash2a"],"efExports":[{"ValueRef":[{"start":[1,1],"name":"src/Clash2a.purs","end":[9,28]},{"Ident":"typeClassMember"}]},{"ValueRef":[{"start":[1,1],"name":"src/Clash2a.purs","end":[9,28]},{"Ident":"value"}]},{"TypeRef":[{"start":[1,1],"name":"src/Clash2a.purs","end":[9,28]},"Type",[]]},{"TypeClassRef":[{"start":[1,1],"name":"src/Clash2a.purs","end":[9,28]},"TypeClass"]}],"efImports":[{"eiModule":["Prim"],"eiImportType":{"Implicit":[]},"eiImportedAs":["Prim"]},{"eiModule":["Prim"],"eiImportType":{"Implicit":[]},"eiImportedAs":null}],"efFixities":[],"efTypeFixities":[],"efDeclarations":[{"EDValue":{"edValueName":{"Ident":"typeClassMember"},"edValueType":{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"ForAll","contents":["a",{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"ForAll","contents":["b",{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"ConstrainedType","contents":[{"constraintAnn":[{"start":[0,0],"name":"","end":[0,0]},[]],"constraintClass":[["Clash2a"],"TypeClass"],"constraintArgs":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeVar","contents":"a"},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeVar","contents":"b"}],"constraintData":null},{"annotation":[{"start":[9,22],"name":"src/Clash2a.purs","end":[9,28]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[9,22],"name":"src/Clash2a.purs","end":[9,28]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[9,24],"name":"src/Clash2a.purs","end":[9,26]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[9,22],"name":"src/Clash2a.purs","end":[9,23]},[]],"tag":"TypeVar","contents":"a"}]},{"annotation":[{"start":[9,27],"name":"src/Clash2a.purs","end":[9,28]},[]],"tag":"TypeVar","contents":"b"}]}]},0]},1]}}},{"EDValue":{"edValueName":{"Ident":"value"},"edValueType":{"annotation":[{"start":[3,10],"name":"src/Clash2a.purs","end":[3,16]},[]],"tag":"TypeConstructor","contents":[["Prim"],"String"]}}},{"EDType":{"edTypeName":"Type","edTypeKind":{"annotation":[{"start":[6,13],"name":"src/Clash2a.purs","end":[6,19]},[]],"tag":"NamedKind","contents":[["Prim"],"Type"]},"edTypeDeclarationKind":"TypeSynonym"}},{"EDTypeSynonym":{"edTypeSynonymName":"Type","edTypeSynonymArguments":[],"edTypeSynonymType":{"annotation":[{"start":[6,13],"name":"src/Clash2a.purs","end":[6,19]},[]],"tag":"TypeConstructor","contents":[["Prim"],"String"]}}},{"EDType":{"edTypeName":"TypeClass","edTypeKind":{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"FunKind","contents":[{"annotation":[{"start":[9,24],"name":"src/Clash2a.purs","end":[9,26]},[]],"tag":"NamedKind","contents":[["Prim"],"Type"]},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"FunKind","contents":[{"annotation":[{"start":[9,24],"name":"src/Clash2a.purs","end":[9,26]},[]],"tag":"NamedKind","contents":[["Prim"],"Type"]},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"NamedKind","contents":[["Prim"],"Type"]}]}]},"edTypeDeclarationKind":"TypeSynonym"}},{"EDTypeSynonym":{"edTypeSynonymName":"TypeClass","edTypeSynonymArguments":[["a",null],["b",null]],"edTypeSynonymType":{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Record"]},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"RCons","contents":["typeClassMember",{"annotation":[{"start":[9,22],"name":"src/Clash2a.purs","end":[9,28]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[9,22],"name":"src/Clash2a.purs","end":[9,28]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[9,24],"name":"src/Clash2a.purs","end":[9,26]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[9,22],"name":"src/Clash2a.purs","end":[9,23]},[]],"tag":"TypeVar","contents":"a"}]},{"annotation":[{"start":[9,27],"name":"src/Clash2a.purs","end":[9,28]},[]],"tag":"TypeVar","contents":"b"}]},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"REmpty"}]}]}}},{"EDClass":{"edClassName":"TypeClass","edClassTypeArguments":[["a",null],["b",null]],"edClassMembers":[[{"Ident":"typeClassMember"},{"annotation":[{"start":[9,22],"name":"src/Clash2a.purs","end":[9,28]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[9,22],"name":"src/Clash2a.purs","end":[9,28]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[9,24],"name":"src/Clash2a.purs","end":[9,26]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[9,22],"name":"src/Clash2a.purs","end":[9,23]},[]],"tag":"TypeVar","contents":"a"}]},{"annotation":[{"start":[9,27],"name":"src/Clash2a.purs","end":[9,28]},[]],"tag":"TypeVar","contents":"b"}]}]],"edClassConstraints":[],"edFunctionalDependencies":[]}}],"efSourceSpan":{"start":[1,1],"name":"src/Clash2a.purs","end":[9,28]}} \ No newline at end of file
+{"efVersion":"0.13.2","efModuleName":["Clash2a"],"efExports":[{"ValueRef":[{"start":[1,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/Clash2a.purs","end":[9,28]},{"Ident":"typeClassMember"}]},{"ValueRef":[{"start":[1,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/Clash2a.purs","end":[9,28]},{"Ident":"value"}]},{"TypeRef":[{"start":[1,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/Clash2a.purs","end":[9,28]},"Type",[]]},{"TypeClassRef":[{"start":[1,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/Clash2a.purs","end":[9,28]},"TypeClass"]}],"efImports":[{"eiModule":["Prim"],"eiImportType":{"Implicit":[]},"eiImportedAs":["Prim"]},{"eiModule":["Prim"],"eiImportType":{"Implicit":[]},"eiImportedAs":null}],"efFixities":[],"efTypeFixities":[],"efDeclarations":[{"EDValue":{"edValueName":{"Ident":"typeClassMember"},"edValueType":{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"ForAll","contents":["a",{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"ForAll","contents":["b",{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"ConstrainedType","contents":[{"constraintAnn":[{"start":[0,0],"name":"","end":[0,0]},[]],"constraintClass":[["Clash2a"],"TypeClass"],"constraintArgs":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeVar","contents":"a"},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeVar","contents":"b"}],"constraintData":null},{"annotation":[{"start":[9,22],"name":"/home/harry/code/purescript/tests/purs/docs/src/Clash2a.purs","end":[9,28]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[9,22],"name":"/home/harry/code/purescript/tests/purs/docs/src/Clash2a.purs","end":[9,28]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[9,24],"name":"/home/harry/code/purescript/tests/purs/docs/src/Clash2a.purs","end":[9,26]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[9,22],"name":"/home/harry/code/purescript/tests/purs/docs/src/Clash2a.purs","end":[9,23]},[]],"tag":"TypeVar","contents":"a"}]},{"annotation":[{"start":[9,27],"name":"/home/harry/code/purescript/tests/purs/docs/src/Clash2a.purs","end":[9,28]},[]],"tag":"TypeVar","contents":"b"}]}]},0]},1]}}},{"EDValue":{"edValueName":{"Ident":"value"},"edValueType":{"annotation":[{"start":[3,10],"name":"/home/harry/code/purescript/tests/purs/docs/src/Clash2a.purs","end":[3,16]},[]],"tag":"TypeConstructor","contents":[["Prim"],"String"]}}},{"EDType":{"edTypeName":"Type","edTypeKind":{"annotation":[{"start":[6,13],"name":"/home/harry/code/purescript/tests/purs/docs/src/Clash2a.purs","end":[6,19]},[]],"tag":"NamedKind","contents":[["Prim"],"Type"]},"edTypeDeclarationKind":"TypeSynonym"}},{"EDTypeSynonym":{"edTypeSynonymName":"Type","edTypeSynonymArguments":[],"edTypeSynonymType":{"annotation":[{"start":[6,13],"name":"/home/harry/code/purescript/tests/purs/docs/src/Clash2a.purs","end":[6,19]},[]],"tag":"TypeConstructor","contents":[["Prim"],"String"]}}},{"EDType":{"edTypeName":"TypeClass","edTypeKind":{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"FunKind","contents":[{"annotation":[{"start":[9,24],"name":"/home/harry/code/purescript/tests/purs/docs/src/Clash2a.purs","end":[9,26]},[]],"tag":"NamedKind","contents":[["Prim"],"Type"]},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"FunKind","contents":[{"annotation":[{"start":[9,24],"name":"/home/harry/code/purescript/tests/purs/docs/src/Clash2a.purs","end":[9,26]},[]],"tag":"NamedKind","contents":[["Prim"],"Type"]},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"NamedKind","contents":[["Prim"],"Type"]}]}]},"edTypeDeclarationKind":"TypeSynonym"}},{"EDTypeSynonym":{"edTypeSynonymName":"TypeClass","edTypeSynonymArguments":[["a",null],["b",null]],"edTypeSynonymType":{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Record"]},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"RCons","contents":["typeClassMember",{"annotation":[{"start":[9,22],"name":"/home/harry/code/purescript/tests/purs/docs/src/Clash2a.purs","end":[9,28]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[9,22],"name":"/home/harry/code/purescript/tests/purs/docs/src/Clash2a.purs","end":[9,28]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[9,24],"name":"/home/harry/code/purescript/tests/purs/docs/src/Clash2a.purs","end":[9,26]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[9,22],"name":"/home/harry/code/purescript/tests/purs/docs/src/Clash2a.purs","end":[9,23]},[]],"tag":"TypeVar","contents":"a"}]},{"annotation":[{"start":[9,27],"name":"/home/harry/code/purescript/tests/purs/docs/src/Clash2a.purs","end":[9,28]},[]],"tag":"TypeVar","contents":"b"}]},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"REmpty"}]}]}}},{"EDClass":{"edClassName":"TypeClass","edClassTypeArguments":[["a",null],["b",null]],"edClassMembers":[[{"Ident":"typeClassMember"},{"annotation":[{"start":[9,22],"name":"/home/harry/code/purescript/tests/purs/docs/src/Clash2a.purs","end":[9,28]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[9,22],"name":"/home/harry/code/purescript/tests/purs/docs/src/Clash2a.purs","end":[9,28]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[9,24],"name":"/home/harry/code/purescript/tests/purs/docs/src/Clash2a.purs","end":[9,26]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[9,22],"name":"/home/harry/code/purescript/tests/purs/docs/src/Clash2a.purs","end":[9,23]},[]],"tag":"TypeVar","contents":"a"}]},{"annotation":[{"start":[9,27],"name":"/home/harry/code/purescript/tests/purs/docs/src/Clash2a.purs","end":[9,28]},[]],"tag":"TypeVar","contents":"b"}]}]],"edClassConstraints":[],"edFunctionalDependencies":[],"edIsEmpty":false}}],"efSourceSpan":{"start":[1,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/Clash2a.purs","end":[9,28]}} \ No newline at end of file
diff --git a/tests/purs/docs/output/ConstrainedArgument/docs.json b/tests/purs/docs/output/ConstrainedArgument/docs.json
index 579fc41..cb4acdc 100644
--- a/tests/purs/docs/output/ConstrainedArgument/docs.json
+++ b/tests/purs/docs/output/ConstrainedArgument/docs.json
@@ -1 +1 @@
-{"reExports":[],"name":"ConstrainedArgument","comments":null,"declarations":[{"children":[],"comments":null,"title":"Foo","info":{"fundeps":[],"arguments":[["t",null]],"declType":"typeClass","superclasses":[]},"sourceSpan":{"start":[3,1],"name":"src/ConstrainedArgument.purs","end":[3,12]}},{"children":[],"comments":null,"title":"WithoutArgs","info":{"arguments":[],"declType":"typeSynonym","type":{"annotation":[],"tag":"ForAll","contents":["a",{"annotation":[],"tag":"TypeApp","contents":[{"annotation":[],"tag":"TypeApp","contents":[{"annotation":[],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[],"tag":"ParensInType","contents":{"annotation":[],"tag":"ConstrainedType","contents":[{"constraintAnn":[],"constraintClass":[["Prim"],"Partial"],"constraintArgs":[],"constraintData":null},{"annotation":[],"tag":"TypeVar","contents":"a"}]}}]},{"annotation":[],"tag":"TypeVar","contents":"a"}]},null]}},"sourceSpan":{"start":[5,1],"name":"src/ConstrainedArgument.purs","end":[5,54]}},{"children":[],"comments":null,"title":"WithArgs","info":{"arguments":[],"declType":"typeSynonym","type":{"annotation":[],"tag":"ForAll","contents":["a",{"annotation":[],"tag":"TypeApp","contents":[{"annotation":[],"tag":"TypeApp","contents":[{"annotation":[],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[],"tag":"ParensInType","contents":{"annotation":[],"tag":"ConstrainedType","contents":[{"constraintAnn":[],"constraintClass":[["ConstrainedArgument"],"Foo"],"constraintArgs":[{"annotation":[],"tag":"TypeVar","contents":"a"}],"constraintData":null},{"annotation":[],"tag":"TypeVar","contents":"a"}]}}]},{"annotation":[],"tag":"TypeVar","contents":"a"}]},null]}},"sourceSpan":{"start":[6,1],"name":"src/ConstrainedArgument.purs","end":[6,52]}},{"children":[],"comments":null,"title":"MultiWithoutArgs","info":{"arguments":[],"declType":"typeSynonym","type":{"annotation":[],"tag":"ForAll","contents":["a",{"annotation":[],"tag":"TypeApp","contents":[{"annotation":[],"tag":"TypeApp","contents":[{"annotation":[],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[],"tag":"ParensInType","contents":{"annotation":[],"tag":"ConstrainedType","contents":[{"constraintAnn":[],"constraintClass":[["Prim"],"Partial"],"constraintArgs":[],"constraintData":null},{"annotation":[],"tag":"ConstrainedType","contents":[{"constraintAnn":[],"constraintClass":[["Prim"],"Partial"],"constraintArgs":[],"constraintData":null},{"annotation":[],"tag":"TypeVar","contents":"a"}]}]}}]},{"annotation":[],"tag":"TypeVar","contents":"a"}]},null]}},"sourceSpan":{"start":[7,1],"name":"src/ConstrainedArgument.purs","end":[7,65]}},{"children":[],"comments":null,"title":"MultiWithArgs","info":{"arguments":[],"declType":"typeSynonym","type":{"annotation":[],"tag":"ForAll","contents":["b",{"annotation":[],"tag":"ForAll","contents":["a",{"annotation":[],"tag":"TypeApp","contents":[{"annotation":[],"tag":"TypeApp","contents":[{"annotation":[],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[],"tag":"ParensInType","contents":{"annotation":[],"tag":"ConstrainedType","contents":[{"constraintAnn":[],"constraintClass":[["ConstrainedArgument"],"Foo"],"constraintArgs":[{"annotation":[],"tag":"TypeVar","contents":"a"}],"constraintData":null},{"annotation":[],"tag":"ConstrainedType","contents":[{"constraintAnn":[],"constraintClass":[["ConstrainedArgument"],"Foo"],"constraintArgs":[{"annotation":[],"tag":"TypeVar","contents":"b"}],"constraintData":null},{"annotation":[],"tag":"TypeVar","contents":"a"}]}]}}]},{"annotation":[],"tag":"TypeVar","contents":"a"}]},null]},null]}},"sourceSpan":{"start":[8,1],"name":"src/ConstrainedArgument.purs","end":[8,63]}}]} \ No newline at end of file
+{"reExports":[],"name":"ConstrainedArgument","comments":null,"declarations":[{"children":[],"comments":null,"title":"Foo","info":{"fundeps":[],"arguments":[["t",null]],"declType":"typeClass","superclasses":[]},"sourceSpan":{"start":[3,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/ConstrainedArgument.purs","end":[3,12]}},{"children":[],"comments":null,"title":"WithoutArgs","info":{"arguments":[],"declType":"typeSynonym","type":{"annotation":[],"tag":"ForAll","contents":["a",{"annotation":[],"tag":"TypeApp","contents":[{"annotation":[],"tag":"TypeApp","contents":[{"annotation":[],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[],"tag":"ParensInType","contents":{"annotation":[],"tag":"ConstrainedType","contents":[{"constraintAnn":[],"constraintClass":[["Prim"],"Partial"],"constraintArgs":[],"constraintData":null},{"annotation":[],"tag":"TypeVar","contents":"a"}]}}]},{"annotation":[],"tag":"TypeVar","contents":"a"}]},null]}},"sourceSpan":{"start":[5,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/ConstrainedArgument.purs","end":[5,54]}},{"children":[],"comments":null,"title":"WithArgs","info":{"arguments":[],"declType":"typeSynonym","type":{"annotation":[],"tag":"ForAll","contents":["a",{"annotation":[],"tag":"TypeApp","contents":[{"annotation":[],"tag":"TypeApp","contents":[{"annotation":[],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[],"tag":"ParensInType","contents":{"annotation":[],"tag":"ConstrainedType","contents":[{"constraintAnn":[],"constraintClass":[["ConstrainedArgument"],"Foo"],"constraintArgs":[{"annotation":[],"tag":"TypeVar","contents":"a"}],"constraintData":null},{"annotation":[],"tag":"TypeVar","contents":"a"}]}}]},{"annotation":[],"tag":"TypeVar","contents":"a"}]},null]}},"sourceSpan":{"start":[6,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/ConstrainedArgument.purs","end":[6,52]}},{"children":[],"comments":null,"title":"MultiWithoutArgs","info":{"arguments":[],"declType":"typeSynonym","type":{"annotation":[],"tag":"ForAll","contents":["a",{"annotation":[],"tag":"TypeApp","contents":[{"annotation":[],"tag":"TypeApp","contents":[{"annotation":[],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[],"tag":"ParensInType","contents":{"annotation":[],"tag":"ConstrainedType","contents":[{"constraintAnn":[],"constraintClass":[["Prim"],"Partial"],"constraintArgs":[],"constraintData":null},{"annotation":[],"tag":"ConstrainedType","contents":[{"constraintAnn":[],"constraintClass":[["Prim"],"Partial"],"constraintArgs":[],"constraintData":null},{"annotation":[],"tag":"TypeVar","contents":"a"}]}]}}]},{"annotation":[],"tag":"TypeVar","contents":"a"}]},null]}},"sourceSpan":{"start":[7,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/ConstrainedArgument.purs","end":[7,65]}},{"children":[],"comments":null,"title":"MultiWithArgs","info":{"arguments":[],"declType":"typeSynonym","type":{"annotation":[],"tag":"ForAll","contents":["b",{"annotation":[],"tag":"ForAll","contents":["a",{"annotation":[],"tag":"TypeApp","contents":[{"annotation":[],"tag":"TypeApp","contents":[{"annotation":[],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[],"tag":"ParensInType","contents":{"annotation":[],"tag":"ConstrainedType","contents":[{"constraintAnn":[],"constraintClass":[["ConstrainedArgument"],"Foo"],"constraintArgs":[{"annotation":[],"tag":"TypeVar","contents":"a"}],"constraintData":null},{"annotation":[],"tag":"ConstrainedType","contents":[{"constraintAnn":[],"constraintClass":[["ConstrainedArgument"],"Foo"],"constraintArgs":[{"annotation":[],"tag":"TypeVar","contents":"b"}],"constraintData":null},{"annotation":[],"tag":"TypeVar","contents":"a"}]}]}}]},{"annotation":[],"tag":"TypeVar","contents":"a"}]},null]},null]}},"sourceSpan":{"start":[8,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/ConstrainedArgument.purs","end":[8,63]}}]} \ No newline at end of file
diff --git a/tests/purs/docs/output/ConstrainedArgument/externs.json b/tests/purs/docs/output/ConstrainedArgument/externs.json
index 42788af..5a880b3 100644
--- a/tests/purs/docs/output/ConstrainedArgument/externs.json
+++ b/tests/purs/docs/output/ConstrainedArgument/externs.json
@@ -1 +1 @@
-{"efVersion":"0.12.5","efModuleName":["ConstrainedArgument"],"efExports":[{"TypeClassRef":[{"start":[1,1],"name":"src/ConstrainedArgument.purs","end":[8,63]},"Foo"]},{"TypeRef":[{"start":[1,1],"name":"src/ConstrainedArgument.purs","end":[8,63]},"WithoutArgs",[]]},{"TypeRef":[{"start":[1,1],"name":"src/ConstrainedArgument.purs","end":[8,63]},"WithArgs",[]]},{"TypeRef":[{"start":[1,1],"name":"src/ConstrainedArgument.purs","end":[8,63]},"MultiWithoutArgs",[]]},{"TypeRef":[{"start":[1,1],"name":"src/ConstrainedArgument.purs","end":[8,63]},"MultiWithArgs",[]]}],"efImports":[{"eiModule":["Prim"],"eiImportType":{"Implicit":[]},"eiImportedAs":["Prim"]},{"eiModule":["Prim"],"eiImportType":{"Implicit":[]},"eiImportedAs":null}],"efFixities":[],"efTypeFixities":[],"efDeclarations":[{"EDType":{"edTypeName":"Foo","edTypeKind":{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"FunKind","contents":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"NamedKind","contents":[["Prim"],"Type"]},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"NamedKind","contents":[["Prim"],"Type"]}]},"edTypeDeclarationKind":"TypeSynonym"}},{"EDTypeSynonym":{"edTypeSynonymName":"Foo","edTypeSynonymArguments":[["t",null]],"edTypeSynonymType":{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Record"]},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"REmpty"}]}}},{"EDClass":{"edClassName":"Foo","edClassTypeArguments":[["t",null]],"edClassMembers":[],"edClassConstraints":[],"edFunctionalDependencies":[]}},{"EDType":{"edTypeName":"WithoutArgs","edTypeKind":{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"NamedKind","contents":[["Prim"],"Type"]},"edTypeDeclarationKind":"TypeSynonym"}},{"EDTypeSynonym":{"edTypeSynonymName":"WithoutArgs","edTypeSynonymArguments":[],"edTypeSynonymType":{"annotation":[{"start":[5,25],"name":"src/ConstrainedArgument.purs","end":[5,54]},[]],"tag":"ForAll","contents":["a",{"annotation":[{"start":[5,35],"name":"src/ConstrainedArgument.purs","end":[5,54]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[5,35],"name":"src/ConstrainedArgument.purs","end":[5,54]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[5,50],"name":"src/ConstrainedArgument.purs","end":[5,52]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[5,36],"name":"src/ConstrainedArgument.purs","end":[5,48]},[]],"tag":"ConstrainedType","contents":[{"constraintAnn":[{"start":[5,36],"name":"src/ConstrainedArgument.purs","end":[5,43]},[]],"constraintClass":[["Prim"],"Partial"],"constraintArgs":[],"constraintData":null},{"annotation":[{"start":[5,47],"name":"src/ConstrainedArgument.purs","end":[5,48]},[]],"tag":"TypeVar","contents":"a"}]}]},{"annotation":[{"start":[5,53],"name":"src/ConstrainedArgument.purs","end":[5,54]},[]],"tag":"TypeVar","contents":"a"}]},null]}}},{"EDType":{"edTypeName":"WithArgs","edTypeKind":{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"NamedKind","contents":[["Prim"],"Type"]},"edTypeDeclarationKind":"TypeSynonym"}},{"EDTypeSynonym":{"edTypeSynonymName":"WithArgs","edTypeSynonymArguments":[],"edTypeSynonymType":{"annotation":[{"start":[6,25],"name":"src/ConstrainedArgument.purs","end":[6,52]},[]],"tag":"ForAll","contents":["a",{"annotation":[{"start":[6,35],"name":"src/ConstrainedArgument.purs","end":[6,52]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[6,35],"name":"src/ConstrainedArgument.purs","end":[6,52]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[6,48],"name":"src/ConstrainedArgument.purs","end":[6,50]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[6,36],"name":"src/ConstrainedArgument.purs","end":[6,46]},[]],"tag":"ConstrainedType","contents":[{"constraintAnn":[{"start":[6,36],"name":"src/ConstrainedArgument.purs","end":[6,41]},[]],"constraintClass":[["ConstrainedArgument"],"Foo"],"constraintArgs":[{"annotation":[{"start":[6,40],"name":"src/ConstrainedArgument.purs","end":[6,41]},[]],"tag":"TypeVar","contents":"a"}],"constraintData":null},{"annotation":[{"start":[6,45],"name":"src/ConstrainedArgument.purs","end":[6,46]},[]],"tag":"TypeVar","contents":"a"}]}]},{"annotation":[{"start":[6,51],"name":"src/ConstrainedArgument.purs","end":[6,52]},[]],"tag":"TypeVar","contents":"a"}]},null]}}},{"EDType":{"edTypeName":"MultiWithoutArgs","edTypeKind":{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"NamedKind","contents":[["Prim"],"Type"]},"edTypeDeclarationKind":"TypeSynonym"}},{"EDTypeSynonym":{"edTypeSynonymName":"MultiWithoutArgs","edTypeSynonymArguments":[],"edTypeSynonymType":{"annotation":[{"start":[7,25],"name":"src/ConstrainedArgument.purs","end":[7,65]},[]],"tag":"ForAll","contents":["a",{"annotation":[{"start":[7,35],"name":"src/ConstrainedArgument.purs","end":[7,65]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[7,35],"name":"src/ConstrainedArgument.purs","end":[7,65]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[7,61],"name":"src/ConstrainedArgument.purs","end":[7,63]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[7,36],"name":"src/ConstrainedArgument.purs","end":[7,59]},[]],"tag":"ConstrainedType","contents":[{"constraintAnn":[{"start":[7,36],"name":"src/ConstrainedArgument.purs","end":[7,43]},[]],"constraintClass":[["Prim"],"Partial"],"constraintArgs":[],"constraintData":null},{"annotation":[{"start":[7,47],"name":"src/ConstrainedArgument.purs","end":[7,59]},[]],"tag":"ConstrainedType","contents":[{"constraintAnn":[{"start":[7,47],"name":"src/ConstrainedArgument.purs","end":[7,54]},[]],"constraintClass":[["Prim"],"Partial"],"constraintArgs":[],"constraintData":null},{"annotation":[{"start":[7,58],"name":"src/ConstrainedArgument.purs","end":[7,59]},[]],"tag":"TypeVar","contents":"a"}]}]}]},{"annotation":[{"start":[7,64],"name":"src/ConstrainedArgument.purs","end":[7,65]},[]],"tag":"TypeVar","contents":"a"}]},null]}}},{"EDType":{"edTypeName":"MultiWithArgs","edTypeKind":{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"NamedKind","contents":[["Prim"],"Type"]},"edTypeDeclarationKind":"TypeSynonym"}},{"EDTypeSynonym":{"edTypeSynonymName":"MultiWithArgs","edTypeSynonymArguments":[],"edTypeSynonymType":{"annotation":[{"start":[8,25],"name":"src/ConstrainedArgument.purs","end":[8,63]},[]],"tag":"ForAll","contents":["b",{"annotation":[{"start":[8,32],"name":"src/ConstrainedArgument.purs","end":[8,63]},[]],"tag":"ForAll","contents":["a",{"annotation":[{"start":[8,37],"name":"src/ConstrainedArgument.purs","end":[8,63]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[8,37],"name":"src/ConstrainedArgument.purs","end":[8,63]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[8,59],"name":"src/ConstrainedArgument.purs","end":[8,61]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[8,38],"name":"src/ConstrainedArgument.purs","end":[8,57]},[]],"tag":"ConstrainedType","contents":[{"constraintAnn":[{"start":[8,38],"name":"src/ConstrainedArgument.purs","end":[8,43]},[]],"constraintClass":[["ConstrainedArgument"],"Foo"],"constraintArgs":[{"annotation":[{"start":[8,42],"name":"src/ConstrainedArgument.purs","end":[8,43]},[]],"tag":"TypeVar","contents":"a"}],"constraintData":null},{"annotation":[{"start":[8,47],"name":"src/ConstrainedArgument.purs","end":[8,57]},[]],"tag":"ConstrainedType","contents":[{"constraintAnn":[{"start":[8,47],"name":"src/ConstrainedArgument.purs","end":[8,52]},[]],"constraintClass":[["ConstrainedArgument"],"Foo"],"constraintArgs":[{"annotation":[{"start":[8,51],"name":"src/ConstrainedArgument.purs","end":[8,52]},[]],"tag":"TypeVar","contents":"b"}],"constraintData":null},{"annotation":[{"start":[8,56],"name":"src/ConstrainedArgument.purs","end":[8,57]},[]],"tag":"TypeVar","contents":"a"}]}]}]},{"annotation":[{"start":[8,62],"name":"src/ConstrainedArgument.purs","end":[8,63]},[]],"tag":"TypeVar","contents":"a"}]},null]},null]}}}],"efSourceSpan":{"start":[1,1],"name":"src/ConstrainedArgument.purs","end":[8,63]}} \ No newline at end of file
+{"efVersion":"0.13.2","efModuleName":["ConstrainedArgument"],"efExports":[{"TypeClassRef":[{"start":[1,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/ConstrainedArgument.purs","end":[8,63]},"Foo"]},{"TypeRef":[{"start":[1,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/ConstrainedArgument.purs","end":[8,63]},"WithoutArgs",[]]},{"TypeRef":[{"start":[1,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/ConstrainedArgument.purs","end":[8,63]},"WithArgs",[]]},{"TypeRef":[{"start":[1,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/ConstrainedArgument.purs","end":[8,63]},"MultiWithoutArgs",[]]},{"TypeRef":[{"start":[1,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/ConstrainedArgument.purs","end":[8,63]},"MultiWithArgs",[]]}],"efImports":[{"eiModule":["Prim"],"eiImportType":{"Implicit":[]},"eiImportedAs":["Prim"]},{"eiModule":["Prim"],"eiImportType":{"Implicit":[]},"eiImportedAs":null}],"efFixities":[],"efTypeFixities":[],"efDeclarations":[{"EDType":{"edTypeName":"Foo","edTypeKind":{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"FunKind","contents":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"NamedKind","contents":[["Prim"],"Type"]},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"NamedKind","contents":[["Prim"],"Type"]}]},"edTypeDeclarationKind":"TypeSynonym"}},{"EDTypeSynonym":{"edTypeSynonymName":"Foo","edTypeSynonymArguments":[["t",null]],"edTypeSynonymType":{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Record"]},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"REmpty"}]}}},{"EDClass":{"edClassName":"Foo","edClassTypeArguments":[["t",null]],"edClassMembers":[],"edClassConstraints":[],"edFunctionalDependencies":[],"edIsEmpty":true}},{"EDType":{"edTypeName":"WithoutArgs","edTypeKind":{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"NamedKind","contents":[["Prim"],"Type"]},"edTypeDeclarationKind":"TypeSynonym"}},{"EDTypeSynonym":{"edTypeSynonymName":"WithoutArgs","edTypeSynonymArguments":[],"edTypeSynonymType":{"annotation":[{"start":[5,25],"name":"/home/harry/code/purescript/tests/purs/docs/src/ConstrainedArgument.purs","end":[5,54]},[]],"tag":"ForAll","contents":["a",{"annotation":[{"start":[5,35],"name":"/home/harry/code/purescript/tests/purs/docs/src/ConstrainedArgument.purs","end":[5,54]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[5,35],"name":"/home/harry/code/purescript/tests/purs/docs/src/ConstrainedArgument.purs","end":[5,54]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[5,50],"name":"/home/harry/code/purescript/tests/purs/docs/src/ConstrainedArgument.purs","end":[5,52]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[5,36],"name":"/home/harry/code/purescript/tests/purs/docs/src/ConstrainedArgument.purs","end":[5,48]},[]],"tag":"ConstrainedType","contents":[{"constraintAnn":[{"start":[5,36],"name":"/home/harry/code/purescript/tests/purs/docs/src/ConstrainedArgument.purs","end":[5,43]},[]],"constraintClass":[["Prim"],"Partial"],"constraintArgs":[],"constraintData":null},{"annotation":[{"start":[5,47],"name":"/home/harry/code/purescript/tests/purs/docs/src/ConstrainedArgument.purs","end":[5,48]},[]],"tag":"TypeVar","contents":"a"}]}]},{"annotation":[{"start":[5,53],"name":"/home/harry/code/purescript/tests/purs/docs/src/ConstrainedArgument.purs","end":[5,54]},[]],"tag":"TypeVar","contents":"a"}]},null]}}},{"EDType":{"edTypeName":"WithArgs","edTypeKind":{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"NamedKind","contents":[["Prim"],"Type"]},"edTypeDeclarationKind":"TypeSynonym"}},{"EDTypeSynonym":{"edTypeSynonymName":"WithArgs","edTypeSynonymArguments":[],"edTypeSynonymType":{"annotation":[{"start":[6,25],"name":"/home/harry/code/purescript/tests/purs/docs/src/ConstrainedArgument.purs","end":[6,52]},[]],"tag":"ForAll","contents":["a",{"annotation":[{"start":[6,35],"name":"/home/harry/code/purescript/tests/purs/docs/src/ConstrainedArgument.purs","end":[6,52]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[6,35],"name":"/home/harry/code/purescript/tests/purs/docs/src/ConstrainedArgument.purs","end":[6,52]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[6,48],"name":"/home/harry/code/purescript/tests/purs/docs/src/ConstrainedArgument.purs","end":[6,50]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[6,36],"name":"/home/harry/code/purescript/tests/purs/docs/src/ConstrainedArgument.purs","end":[6,46]},[]],"tag":"ConstrainedType","contents":[{"constraintAnn":[{"start":[6,36],"name":"/home/harry/code/purescript/tests/purs/docs/src/ConstrainedArgument.purs","end":[6,41]},[]],"constraintClass":[["ConstrainedArgument"],"Foo"],"constraintArgs":[{"annotation":[{"start":[6,40],"name":"/home/harry/code/purescript/tests/purs/docs/src/ConstrainedArgument.purs","end":[6,41]},[]],"tag":"TypeVar","contents":"a"}],"constraintData":null},{"annotation":[{"start":[6,45],"name":"/home/harry/code/purescript/tests/purs/docs/src/ConstrainedArgument.purs","end":[6,46]},[]],"tag":"TypeVar","contents":"a"}]}]},{"annotation":[{"start":[6,51],"name":"/home/harry/code/purescript/tests/purs/docs/src/ConstrainedArgument.purs","end":[6,52]},[]],"tag":"TypeVar","contents":"a"}]},null]}}},{"EDType":{"edTypeName":"MultiWithoutArgs","edTypeKind":{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"NamedKind","contents":[["Prim"],"Type"]},"edTypeDeclarationKind":"TypeSynonym"}},{"EDTypeSynonym":{"edTypeSynonymName":"MultiWithoutArgs","edTypeSynonymArguments":[],"edTypeSynonymType":{"annotation":[{"start":[7,25],"name":"/home/harry/code/purescript/tests/purs/docs/src/ConstrainedArgument.purs","end":[7,65]},[]],"tag":"ForAll","contents":["a",{"annotation":[{"start":[7,35],"name":"/home/harry/code/purescript/tests/purs/docs/src/ConstrainedArgument.purs","end":[7,65]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[7,35],"name":"/home/harry/code/purescript/tests/purs/docs/src/ConstrainedArgument.purs","end":[7,65]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[7,61],"name":"/home/harry/code/purescript/tests/purs/docs/src/ConstrainedArgument.purs","end":[7,63]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[7,36],"name":"/home/harry/code/purescript/tests/purs/docs/src/ConstrainedArgument.purs","end":[7,59]},[]],"tag":"ConstrainedType","contents":[{"constraintAnn":[{"start":[7,36],"name":"/home/harry/code/purescript/tests/purs/docs/src/ConstrainedArgument.purs","end":[7,43]},[]],"constraintClass":[["Prim"],"Partial"],"constraintArgs":[],"constraintData":null},{"annotation":[{"start":[7,47],"name":"/home/harry/code/purescript/tests/purs/docs/src/ConstrainedArgument.purs","end":[7,59]},[]],"tag":"ConstrainedType","contents":[{"constraintAnn":[{"start":[7,47],"name":"/home/harry/code/purescript/tests/purs/docs/src/ConstrainedArgument.purs","end":[7,54]},[]],"constraintClass":[["Prim"],"Partial"],"constraintArgs":[],"constraintData":null},{"annotation":[{"start":[7,58],"name":"/home/harry/code/purescript/tests/purs/docs/src/ConstrainedArgument.purs","end":[7,59]},[]],"tag":"TypeVar","contents":"a"}]}]}]},{"annotation":[{"start":[7,64],"name":"/home/harry/code/purescript/tests/purs/docs/src/ConstrainedArgument.purs","end":[7,65]},[]],"tag":"TypeVar","contents":"a"}]},null]}}},{"EDType":{"edTypeName":"MultiWithArgs","edTypeKind":{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"NamedKind","contents":[["Prim"],"Type"]},"edTypeDeclarationKind":"TypeSynonym"}},{"EDTypeSynonym":{"edTypeSynonymName":"MultiWithArgs","edTypeSynonymArguments":[],"edTypeSynonymType":{"annotation":[{"start":[8,25],"name":"/home/harry/code/purescript/tests/purs/docs/src/ConstrainedArgument.purs","end":[8,63]},[]],"tag":"ForAll","contents":["b",{"annotation":[{"start":[8,32],"name":"/home/harry/code/purescript/tests/purs/docs/src/ConstrainedArgument.purs","end":[8,63]},[]],"tag":"ForAll","contents":["a",{"annotation":[{"start":[8,37],"name":"/home/harry/code/purescript/tests/purs/docs/src/ConstrainedArgument.purs","end":[8,63]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[8,37],"name":"/home/harry/code/purescript/tests/purs/docs/src/ConstrainedArgument.purs","end":[8,63]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[8,59],"name":"/home/harry/code/purescript/tests/purs/docs/src/ConstrainedArgument.purs","end":[8,61]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[8,38],"name":"/home/harry/code/purescript/tests/purs/docs/src/ConstrainedArgument.purs","end":[8,57]},[]],"tag":"ConstrainedType","contents":[{"constraintAnn":[{"start":[8,38],"name":"/home/harry/code/purescript/tests/purs/docs/src/ConstrainedArgument.purs","end":[8,43]},[]],"constraintClass":[["ConstrainedArgument"],"Foo"],"constraintArgs":[{"annotation":[{"start":[8,42],"name":"/home/harry/code/purescript/tests/purs/docs/src/ConstrainedArgument.purs","end":[8,43]},[]],"tag":"TypeVar","contents":"a"}],"constraintData":null},{"annotation":[{"start":[8,47],"name":"/home/harry/code/purescript/tests/purs/docs/src/ConstrainedArgument.purs","end":[8,57]},[]],"tag":"ConstrainedType","contents":[{"constraintAnn":[{"start":[8,47],"name":"/home/harry/code/purescript/tests/purs/docs/src/ConstrainedArgument.purs","end":[8,52]},[]],"constraintClass":[["ConstrainedArgument"],"Foo"],"constraintArgs":[{"annotation":[{"start":[8,51],"name":"/home/harry/code/purescript/tests/purs/docs/src/ConstrainedArgument.purs","end":[8,52]},[]],"tag":"TypeVar","contents":"b"}],"constraintData":null},{"annotation":[{"start":[8,56],"name":"/home/harry/code/purescript/tests/purs/docs/src/ConstrainedArgument.purs","end":[8,57]},[]],"tag":"TypeVar","contents":"a"}]}]}]},{"annotation":[{"start":[8,62],"name":"/home/harry/code/purescript/tests/purs/docs/src/ConstrainedArgument.purs","end":[8,63]},[]],"tag":"TypeVar","contents":"a"}]},null]},null]}}}],"efSourceSpan":{"start":[1,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/ConstrainedArgument.purs","end":[8,63]}} \ No newline at end of file
diff --git a/tests/purs/docs/output/Data.Newtype/externs.json b/tests/purs/docs/output/Data.Newtype/externs.json
index 26f3159..803d410 100644
--- a/tests/purs/docs/output/Data.Newtype/externs.json
+++ b/tests/purs/docs/output/Data.Newtype/externs.json
@@ -1 +1 @@
-{"efVersion":"0.12.5","efModuleName":["Data","Newtype"],"efExports":[{"ValueRef":[{"start":[1,1],"name":"bower_components/purescript-newtype/src/Data/Newtype.purs","end":[5,19]},{"Ident":"unwrap"}]},{"ValueRef":[{"start":[1,1],"name":"bower_components/purescript-newtype/src/Data/Newtype.purs","end":[5,19]},{"Ident":"wrap"}]},{"TypeClassRef":[{"start":[1,1],"name":"bower_components/purescript-newtype/src/Data/Newtype.purs","end":[5,19]},"Newtype"]}],"efImports":[{"eiModule":["Prim"],"eiImportType":{"Implicit":[]},"eiImportedAs":["Prim"]},{"eiModule":["Prim"],"eiImportType":{"Implicit":[]},"eiImportedAs":null}],"efFixities":[],"efTypeFixities":[],"efDeclarations":[{"EDValue":{"edValueName":{"Ident":"unwrap"},"edValueType":{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"ForAll","contents":["t",{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"ForAll","contents":["a",{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"ConstrainedType","contents":[{"constraintAnn":[{"start":[0,0],"name":"","end":[0,0]},[]],"constraintClass":[["Data","Newtype"],"Newtype"],"constraintArgs":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeVar","contents":"t"},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeVar","contents":"a"}],"constraintData":null},{"annotation":[{"start":[5,13],"name":"bower_components/purescript-newtype/src/Data/Newtype.purs","end":[5,19]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[5,13],"name":"bower_components/purescript-newtype/src/Data/Newtype.purs","end":[5,19]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[5,15],"name":"bower_components/purescript-newtype/src/Data/Newtype.purs","end":[5,17]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[5,13],"name":"bower_components/purescript-newtype/src/Data/Newtype.purs","end":[5,14]},[]],"tag":"TypeVar","contents":"t"}]},{"annotation":[{"start":[5,18],"name":"bower_components/purescript-newtype/src/Data/Newtype.purs","end":[5,19]},[]],"tag":"TypeVar","contents":"a"}]}]},2]},3]}}},{"EDValue":{"edValueName":{"Ident":"wrap"},"edValueType":{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"ForAll","contents":["t",{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"ForAll","contents":["a",{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"ConstrainedType","contents":[{"constraintAnn":[{"start":[0,0],"name":"","end":[0,0]},[]],"constraintClass":[["Data","Newtype"],"Newtype"],"constraintArgs":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeVar","contents":"t"},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeVar","contents":"a"}],"constraintData":null},{"annotation":[{"start":[4,11],"name":"bower_components/purescript-newtype/src/Data/Newtype.purs","end":[4,17]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[4,11],"name":"bower_components/purescript-newtype/src/Data/Newtype.purs","end":[4,17]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[4,13],"name":"bower_components/purescript-newtype/src/Data/Newtype.purs","end":[4,15]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[4,11],"name":"bower_components/purescript-newtype/src/Data/Newtype.purs","end":[4,12]},[]],"tag":"TypeVar","contents":"a"}]},{"annotation":[{"start":[4,16],"name":"bower_components/purescript-newtype/src/Data/Newtype.purs","end":[4,17]},[]],"tag":"TypeVar","contents":"t"}]}]},0]},1]}}},{"EDType":{"edTypeName":"Newtype","edTypeKind":{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"FunKind","contents":[{"annotation":[{"start":[4,13],"name":"bower_components/purescript-newtype/src/Data/Newtype.purs","end":[4,15]},[]],"tag":"NamedKind","contents":[["Prim"],"Type"]},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"FunKind","contents":[{"annotation":[{"start":[4,13],"name":"bower_components/purescript-newtype/src/Data/Newtype.purs","end":[4,15]},[]],"tag":"NamedKind","contents":[["Prim"],"Type"]},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"NamedKind","contents":[["Prim"],"Type"]}]}]},"edTypeDeclarationKind":"TypeSynonym"}},{"EDTypeSynonym":{"edTypeSynonymName":"Newtype","edTypeSynonymArguments":[["t",null],["a",null]],"edTypeSynonymType":{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Record"]},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"RCons","contents":["wrap",{"annotation":[{"start":[4,11],"name":"bower_components/purescript-newtype/src/Data/Newtype.purs","end":[4,17]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[4,11],"name":"bower_components/purescript-newtype/src/Data/Newtype.purs","end":[4,17]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[4,13],"name":"bower_components/purescript-newtype/src/Data/Newtype.purs","end":[4,15]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[4,11],"name":"bower_components/purescript-newtype/src/Data/Newtype.purs","end":[4,12]},[]],"tag":"TypeVar","contents":"a"}]},{"annotation":[{"start":[4,16],"name":"bower_components/purescript-newtype/src/Data/Newtype.purs","end":[4,17]},[]],"tag":"TypeVar","contents":"t"}]},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"RCons","contents":["unwrap",{"annotation":[{"start":[5,13],"name":"bower_components/purescript-newtype/src/Data/Newtype.purs","end":[5,19]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[5,13],"name":"bower_components/purescript-newtype/src/Data/Newtype.purs","end":[5,19]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[5,15],"name":"bower_components/purescript-newtype/src/Data/Newtype.purs","end":[5,17]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[5,13],"name":"bower_components/purescript-newtype/src/Data/Newtype.purs","end":[5,14]},[]],"tag":"TypeVar","contents":"t"}]},{"annotation":[{"start":[5,18],"name":"bower_components/purescript-newtype/src/Data/Newtype.purs","end":[5,19]},[]],"tag":"TypeVar","contents":"a"}]},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"REmpty"}]}]}]}}},{"EDClass":{"edClassName":"Newtype","edClassTypeArguments":[["t",null],["a",null]],"edClassMembers":[[{"Ident":"wrap"},{"annotation":[{"start":[4,11],"name":"bower_components/purescript-newtype/src/Data/Newtype.purs","end":[4,17]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[4,11],"name":"bower_components/purescript-newtype/src/Data/Newtype.purs","end":[4,17]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[4,13],"name":"bower_components/purescript-newtype/src/Data/Newtype.purs","end":[4,15]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[4,11],"name":"bower_components/purescript-newtype/src/Data/Newtype.purs","end":[4,12]},[]],"tag":"TypeVar","contents":"a"}]},{"annotation":[{"start":[4,16],"name":"bower_components/purescript-newtype/src/Data/Newtype.purs","end":[4,17]},[]],"tag":"TypeVar","contents":"t"}]}],[{"Ident":"unwrap"},{"annotation":[{"start":[5,13],"name":"bower_components/purescript-newtype/src/Data/Newtype.purs","end":[5,19]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[5,13],"name":"bower_components/purescript-newtype/src/Data/Newtype.purs","end":[5,19]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[5,15],"name":"bower_components/purescript-newtype/src/Data/Newtype.purs","end":[5,17]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[5,13],"name":"bower_components/purescript-newtype/src/Data/Newtype.purs","end":[5,14]},[]],"tag":"TypeVar","contents":"t"}]},{"annotation":[{"start":[5,18],"name":"bower_components/purescript-newtype/src/Data/Newtype.purs","end":[5,19]},[]],"tag":"TypeVar","contents":"a"}]}]],"edClassConstraints":[],"edFunctionalDependencies":[{"determiners":[0],"determined":[1]}]}}],"efSourceSpan":{"start":[1,1],"name":"bower_components/purescript-newtype/src/Data/Newtype.purs","end":[5,19]}} \ No newline at end of file
+{"efVersion":"0.13.2","efModuleName":["Data","Newtype"],"efExports":[{"ValueRef":[{"start":[1,1],"name":"bower_components/purescript-newtype/src/Data/Newtype.purs","end":[5,19]},{"Ident":"unwrap"}]},{"ValueRef":[{"start":[1,1],"name":"bower_components/purescript-newtype/src/Data/Newtype.purs","end":[5,19]},{"Ident":"wrap"}]},{"TypeClassRef":[{"start":[1,1],"name":"bower_components/purescript-newtype/src/Data/Newtype.purs","end":[5,19]},"Newtype"]}],"efImports":[{"eiModule":["Prim"],"eiImportType":{"Implicit":[]},"eiImportedAs":["Prim"]},{"eiModule":["Prim"],"eiImportType":{"Implicit":[]},"eiImportedAs":null}],"efFixities":[],"efTypeFixities":[],"efDeclarations":[{"EDValue":{"edValueName":{"Ident":"unwrap"},"edValueType":{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"ForAll","contents":["t",{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"ForAll","contents":["a",{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"ConstrainedType","contents":[{"constraintAnn":[{"start":[0,0],"name":"","end":[0,0]},[]],"constraintClass":[["Data","Newtype"],"Newtype"],"constraintArgs":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeVar","contents":"t"},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeVar","contents":"a"}],"constraintData":null},{"annotation":[{"start":[5,13],"name":"bower_components/purescript-newtype/src/Data/Newtype.purs","end":[5,19]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[5,13],"name":"bower_components/purescript-newtype/src/Data/Newtype.purs","end":[5,19]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[5,15],"name":"bower_components/purescript-newtype/src/Data/Newtype.purs","end":[5,17]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[5,13],"name":"bower_components/purescript-newtype/src/Data/Newtype.purs","end":[5,14]},[]],"tag":"TypeVar","contents":"t"}]},{"annotation":[{"start":[5,18],"name":"bower_components/purescript-newtype/src/Data/Newtype.purs","end":[5,19]},[]],"tag":"TypeVar","contents":"a"}]}]},2]},3]}}},{"EDValue":{"edValueName":{"Ident":"wrap"},"edValueType":{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"ForAll","contents":["t",{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"ForAll","contents":["a",{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"ConstrainedType","contents":[{"constraintAnn":[{"start":[0,0],"name":"","end":[0,0]},[]],"constraintClass":[["Data","Newtype"],"Newtype"],"constraintArgs":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeVar","contents":"t"},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeVar","contents":"a"}],"constraintData":null},{"annotation":[{"start":[4,11],"name":"bower_components/purescript-newtype/src/Data/Newtype.purs","end":[4,17]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[4,11],"name":"bower_components/purescript-newtype/src/Data/Newtype.purs","end":[4,17]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[4,13],"name":"bower_components/purescript-newtype/src/Data/Newtype.purs","end":[4,15]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[4,11],"name":"bower_components/purescript-newtype/src/Data/Newtype.purs","end":[4,12]},[]],"tag":"TypeVar","contents":"a"}]},{"annotation":[{"start":[4,16],"name":"bower_components/purescript-newtype/src/Data/Newtype.purs","end":[4,17]},[]],"tag":"TypeVar","contents":"t"}]}]},0]},1]}}},{"EDType":{"edTypeName":"Newtype","edTypeKind":{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"FunKind","contents":[{"annotation":[{"start":[4,13],"name":"bower_components/purescript-newtype/src/Data/Newtype.purs","end":[4,15]},[]],"tag":"NamedKind","contents":[["Prim"],"Type"]},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"FunKind","contents":[{"annotation":[{"start":[4,13],"name":"bower_components/purescript-newtype/src/Data/Newtype.purs","end":[4,15]},[]],"tag":"NamedKind","contents":[["Prim"],"Type"]},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"NamedKind","contents":[["Prim"],"Type"]}]}]},"edTypeDeclarationKind":"TypeSynonym"}},{"EDTypeSynonym":{"edTypeSynonymName":"Newtype","edTypeSynonymArguments":[["t",null],["a",null]],"edTypeSynonymType":{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Record"]},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"RCons","contents":["wrap",{"annotation":[{"start":[4,11],"name":"bower_components/purescript-newtype/src/Data/Newtype.purs","end":[4,17]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[4,11],"name":"bower_components/purescript-newtype/src/Data/Newtype.purs","end":[4,17]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[4,13],"name":"bower_components/purescript-newtype/src/Data/Newtype.purs","end":[4,15]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[4,11],"name":"bower_components/purescript-newtype/src/Data/Newtype.purs","end":[4,12]},[]],"tag":"TypeVar","contents":"a"}]},{"annotation":[{"start":[4,16],"name":"bower_components/purescript-newtype/src/Data/Newtype.purs","end":[4,17]},[]],"tag":"TypeVar","contents":"t"}]},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"RCons","contents":["unwrap",{"annotation":[{"start":[5,13],"name":"bower_components/purescript-newtype/src/Data/Newtype.purs","end":[5,19]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[5,13],"name":"bower_components/purescript-newtype/src/Data/Newtype.purs","end":[5,19]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[5,15],"name":"bower_components/purescript-newtype/src/Data/Newtype.purs","end":[5,17]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[5,13],"name":"bower_components/purescript-newtype/src/Data/Newtype.purs","end":[5,14]},[]],"tag":"TypeVar","contents":"t"}]},{"annotation":[{"start":[5,18],"name":"bower_components/purescript-newtype/src/Data/Newtype.purs","end":[5,19]},[]],"tag":"TypeVar","contents":"a"}]},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"REmpty"}]}]}]}}},{"EDClass":{"edClassName":"Newtype","edClassTypeArguments":[["t",null],["a",null]],"edClassMembers":[[{"Ident":"wrap"},{"annotation":[{"start":[4,11],"name":"bower_components/purescript-newtype/src/Data/Newtype.purs","end":[4,17]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[4,11],"name":"bower_components/purescript-newtype/src/Data/Newtype.purs","end":[4,17]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[4,13],"name":"bower_components/purescript-newtype/src/Data/Newtype.purs","end":[4,15]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[4,11],"name":"bower_components/purescript-newtype/src/Data/Newtype.purs","end":[4,12]},[]],"tag":"TypeVar","contents":"a"}]},{"annotation":[{"start":[4,16],"name":"bower_components/purescript-newtype/src/Data/Newtype.purs","end":[4,17]},[]],"tag":"TypeVar","contents":"t"}]}],[{"Ident":"unwrap"},{"annotation":[{"start":[5,13],"name":"bower_components/purescript-newtype/src/Data/Newtype.purs","end":[5,19]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[5,13],"name":"bower_components/purescript-newtype/src/Data/Newtype.purs","end":[5,19]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[5,15],"name":"bower_components/purescript-newtype/src/Data/Newtype.purs","end":[5,17]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[5,13],"name":"bower_components/purescript-newtype/src/Data/Newtype.purs","end":[5,14]},[]],"tag":"TypeVar","contents":"t"}]},{"annotation":[{"start":[5,18],"name":"bower_components/purescript-newtype/src/Data/Newtype.purs","end":[5,19]},[]],"tag":"TypeVar","contents":"a"}]}]],"edClassConstraints":[],"edFunctionalDependencies":[{"determiners":[0],"determined":[1]}],"edIsEmpty":false}}],"efSourceSpan":{"start":[1,1],"name":"bower_components/purescript-newtype/src/Data/Newtype.purs","end":[5,19]}} \ No newline at end of file
diff --git a/tests/purs/docs/output/DeclOrder/docs.json b/tests/purs/docs/output/DeclOrder/docs.json
index 7496c01..8b17e22 100644
--- a/tests/purs/docs/output/DeclOrder/docs.json
+++ b/tests/purs/docs/output/DeclOrder/docs.json
@@ -1 +1 @@
-{"reExports":[],"name":"DeclOrder","comments":null,"declarations":[{"children":[],"comments":null,"title":"A","info":{"fundeps":[],"arguments":[],"declType":"typeClass","superclasses":[]},"sourceSpan":{"start":[16,1],"name":"src/DeclOrder.purs","end":[16,8]}},{"children":[],"comments":null,"title":"x1","info":{"declType":"value","type":{"annotation":[],"tag":"TypeConstructor","contents":[["Prim"],"Int"]}},"sourceSpan":{"start":[10,1],"name":"src/DeclOrder.purs","end":[10,7]}},{"children":[],"comments":null,"title":"X2","info":{"declType":"data","dataDeclType":"data","typeArguments":[]},"sourceSpan":{"start":[13,1],"name":"src/DeclOrder.purs","end":[13,8]}},{"children":[],"comments":null,"title":"x3","info":{"declType":"value","type":{"annotation":[],"tag":"TypeConstructor","contents":[["Prim"],"Int"]}},"sourceSpan":{"start":[11,1],"name":"src/DeclOrder.purs","end":[11,7]}},{"children":[],"comments":null,"title":"X4","info":{"declType":"data","dataDeclType":"data","typeArguments":[]},"sourceSpan":{"start":[14,1],"name":"src/DeclOrder.purs","end":[14,8]}},{"children":[],"comments":null,"title":"B","info":{"fundeps":[],"arguments":[],"declType":"typeClass","superclasses":[]},"sourceSpan":{"start":[17,1],"name":"src/DeclOrder.purs","end":[17,8]}}]} \ No newline at end of file
+{"reExports":[],"name":"DeclOrder","comments":null,"declarations":[{"children":[],"comments":null,"title":"A","info":{"fundeps":[],"arguments":[],"declType":"typeClass","superclasses":[]},"sourceSpan":{"start":[16,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/DeclOrder.purs","end":[16,8]}},{"children":[],"comments":null,"title":"x1","info":{"declType":"value","type":{"annotation":[],"tag":"TypeConstructor","contents":[["Prim"],"Int"]}},"sourceSpan":{"start":[10,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/DeclOrder.purs","end":[10,7]}},{"children":[],"comments":null,"title":"X2","info":{"declType":"data","dataDeclType":"data","typeArguments":[]},"sourceSpan":{"start":[13,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/DeclOrder.purs","end":[13,8]}},{"children":[],"comments":null,"title":"x3","info":{"declType":"value","type":{"annotation":[],"tag":"TypeConstructor","contents":[["Prim"],"Int"]}},"sourceSpan":{"start":[11,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/DeclOrder.purs","end":[11,7]}},{"children":[],"comments":null,"title":"X4","info":{"declType":"data","dataDeclType":"data","typeArguments":[]},"sourceSpan":{"start":[14,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/DeclOrder.purs","end":[14,8]}},{"children":[],"comments":null,"title":"B","info":{"fundeps":[],"arguments":[],"declType":"typeClass","superclasses":[]},"sourceSpan":{"start":[17,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/DeclOrder.purs","end":[17,8]}}]} \ No newline at end of file
diff --git a/tests/purs/docs/output/DeclOrder/externs.json b/tests/purs/docs/output/DeclOrder/externs.json
index 5673895..f46ec77 100644
--- a/tests/purs/docs/output/DeclOrder/externs.json
+++ b/tests/purs/docs/output/DeclOrder/externs.json
@@ -1 +1 @@
-{"efVersion":"0.12.5","efModuleName":["DeclOrder"],"efExports":[{"TypeClassRef":[{"start":[1,1],"name":"src/DeclOrder.purs","end":[17,8]},"A"]},{"ValueRef":[{"start":[1,1],"name":"src/DeclOrder.purs","end":[17,8]},{"Ident":"x1"}]},{"TypeRef":[{"start":[1,1],"name":"src/DeclOrder.purs","end":[17,8]},"X2",[]]},{"ValueRef":[{"start":[1,1],"name":"src/DeclOrder.purs","end":[17,8]},{"Ident":"x3"}]},{"TypeRef":[{"start":[1,1],"name":"src/DeclOrder.purs","end":[17,8]},"X4",[]]},{"TypeClassRef":[{"start":[1,1],"name":"src/DeclOrder.purs","end":[17,8]},"B"]}],"efImports":[{"eiModule":["Prim"],"eiImportType":{"Implicit":[]},"eiImportedAs":["Prim"]},{"eiModule":["Prim"],"eiImportType":{"Implicit":[]},"eiImportedAs":null}],"efFixities":[],"efTypeFixities":[],"efDeclarations":[{"EDType":{"edTypeName":"A","edTypeKind":{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"NamedKind","contents":[["Prim"],"Type"]},"edTypeDeclarationKind":"TypeSynonym"}},{"EDTypeSynonym":{"edTypeSynonymName":"A","edTypeSynonymArguments":[],"edTypeSynonymType":{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Record"]},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"REmpty"}]}}},{"EDClass":{"edClassName":"A","edClassTypeArguments":[],"edClassMembers":[],"edClassConstraints":[],"edFunctionalDependencies":[]}},{"EDValue":{"edValueName":{"Ident":"x1"},"edValueType":{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Int"]}}},{"EDType":{"edTypeName":"X2","edTypeKind":{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"NamedKind","contents":[["Prim"],"Type"]},"edTypeDeclarationKind":{"DataType":{"args":[],"ctors":[]}}}},{"EDValue":{"edValueName":{"Ident":"x3"},"edValueType":{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Int"]}}},{"EDType":{"edTypeName":"X4","edTypeKind":{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"NamedKind","contents":[["Prim"],"Type"]},"edTypeDeclarationKind":{"DataType":{"args":[],"ctors":[]}}}},{"EDType":{"edTypeName":"B","edTypeKind":{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"NamedKind","contents":[["Prim"],"Type"]},"edTypeDeclarationKind":"TypeSynonym"}},{"EDTypeSynonym":{"edTypeSynonymName":"B","edTypeSynonymArguments":[],"edTypeSynonymType":{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Record"]},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"REmpty"}]}}},{"EDClass":{"edClassName":"B","edClassTypeArguments":[],"edClassMembers":[],"edClassConstraints":[],"edFunctionalDependencies":[]}}],"efSourceSpan":{"start":[1,1],"name":"src/DeclOrder.purs","end":[17,8]}} \ No newline at end of file
+{"efVersion":"0.13.2","efModuleName":["DeclOrder"],"efExports":[{"TypeClassRef":[{"start":[1,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/DeclOrder.purs","end":[17,8]},"A"]},{"ValueRef":[{"start":[1,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/DeclOrder.purs","end":[17,8]},{"Ident":"x1"}]},{"TypeRef":[{"start":[1,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/DeclOrder.purs","end":[17,8]},"X2",[]]},{"ValueRef":[{"start":[1,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/DeclOrder.purs","end":[17,8]},{"Ident":"x3"}]},{"TypeRef":[{"start":[1,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/DeclOrder.purs","end":[17,8]},"X4",[]]},{"TypeClassRef":[{"start":[1,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/DeclOrder.purs","end":[17,8]},"B"]}],"efImports":[{"eiModule":["Prim"],"eiImportType":{"Implicit":[]},"eiImportedAs":["Prim"]},{"eiModule":["Prim"],"eiImportType":{"Implicit":[]},"eiImportedAs":null}],"efFixities":[],"efTypeFixities":[],"efDeclarations":[{"EDType":{"edTypeName":"A","edTypeKind":{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"NamedKind","contents":[["Prim"],"Type"]},"edTypeDeclarationKind":"TypeSynonym"}},{"EDTypeSynonym":{"edTypeSynonymName":"A","edTypeSynonymArguments":[],"edTypeSynonymType":{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Record"]},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"REmpty"}]}}},{"EDClass":{"edClassName":"A","edClassTypeArguments":[],"edClassMembers":[],"edClassConstraints":[],"edFunctionalDependencies":[],"edIsEmpty":true}},{"EDValue":{"edValueName":{"Ident":"x1"},"edValueType":{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Int"]}}},{"EDType":{"edTypeName":"X2","edTypeKind":{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"NamedKind","contents":[["Prim"],"Type"]},"edTypeDeclarationKind":{"DataType":{"args":[],"ctors":[]}}}},{"EDValue":{"edValueName":{"Ident":"x3"},"edValueType":{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Int"]}}},{"EDType":{"edTypeName":"X4","edTypeKind":{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"NamedKind","contents":[["Prim"],"Type"]},"edTypeDeclarationKind":{"DataType":{"args":[],"ctors":[]}}}},{"EDType":{"edTypeName":"B","edTypeKind":{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"NamedKind","contents":[["Prim"],"Type"]},"edTypeDeclarationKind":"TypeSynonym"}},{"EDTypeSynonym":{"edTypeSynonymName":"B","edTypeSynonymArguments":[],"edTypeSynonymType":{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Record"]},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"REmpty"}]}}},{"EDClass":{"edClassName":"B","edClassTypeArguments":[],"edClassMembers":[],"edClassConstraints":[],"edFunctionalDependencies":[],"edIsEmpty":true}}],"efSourceSpan":{"start":[1,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/DeclOrder.purs","end":[17,8]}} \ No newline at end of file
diff --git a/tests/purs/docs/output/DeclOrderNoExportList/docs.json b/tests/purs/docs/output/DeclOrderNoExportList/docs.json
index 28baa20..cdac9d8 100644
--- a/tests/purs/docs/output/DeclOrderNoExportList/docs.json
+++ b/tests/purs/docs/output/DeclOrderNoExportList/docs.json
@@ -1 +1 @@
-{"reExports":[],"name":"DeclOrderNoExportList","comments":null,"declarations":[{"children":[],"comments":null,"title":"x1","info":{"declType":"value","type":{"annotation":[],"tag":"TypeConstructor","contents":[["Prim"],"Int"]}},"sourceSpan":{"start":[3,1],"name":"src/DeclOrderNoExportList.purs","end":[3,7]}},{"children":[],"comments":null,"title":"x3","info":{"declType":"value","type":{"annotation":[],"tag":"TypeConstructor","contents":[["Prim"],"Int"]}},"sourceSpan":{"start":[4,1],"name":"src/DeclOrderNoExportList.purs","end":[4,7]}},{"children":[],"comments":null,"title":"X2","info":{"declType":"data","dataDeclType":"data","typeArguments":[]},"sourceSpan":{"start":[6,1],"name":"src/DeclOrderNoExportList.purs","end":[6,8]}},{"children":[],"comments":null,"title":"X4","info":{"declType":"data","dataDeclType":"data","typeArguments":[]},"sourceSpan":{"start":[7,1],"name":"src/DeclOrderNoExportList.purs","end":[7,8]}},{"children":[],"comments":null,"title":"A","info":{"fundeps":[],"arguments":[],"declType":"typeClass","superclasses":[]},"sourceSpan":{"start":[9,1],"name":"src/DeclOrderNoExportList.purs","end":[9,8]}},{"children":[],"comments":null,"title":"B","info":{"fundeps":[],"arguments":[],"declType":"typeClass","superclasses":[]},"sourceSpan":{"start":[10,1],"name":"src/DeclOrderNoExportList.purs","end":[10,8]}}]} \ No newline at end of file
+{"reExports":[],"name":"DeclOrderNoExportList","comments":null,"declarations":[{"children":[],"comments":null,"title":"x1","info":{"declType":"value","type":{"annotation":[],"tag":"TypeConstructor","contents":[["Prim"],"Int"]}},"sourceSpan":{"start":[3,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/DeclOrderNoExportList.purs","end":[3,7]}},{"children":[],"comments":null,"title":"x3","info":{"declType":"value","type":{"annotation":[],"tag":"TypeConstructor","contents":[["Prim"],"Int"]}},"sourceSpan":{"start":[4,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/DeclOrderNoExportList.purs","end":[4,7]}},{"children":[],"comments":null,"title":"X2","info":{"declType":"data","dataDeclType":"data","typeArguments":[]},"sourceSpan":{"start":[6,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/DeclOrderNoExportList.purs","end":[6,8]}},{"children":[],"comments":null,"title":"X4","info":{"declType":"data","dataDeclType":"data","typeArguments":[]},"sourceSpan":{"start":[7,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/DeclOrderNoExportList.purs","end":[7,8]}},{"children":[],"comments":null,"title":"A","info":{"fundeps":[],"arguments":[],"declType":"typeClass","superclasses":[]},"sourceSpan":{"start":[9,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/DeclOrderNoExportList.purs","end":[9,8]}},{"children":[],"comments":null,"title":"B","info":{"fundeps":[],"arguments":[],"declType":"typeClass","superclasses":[]},"sourceSpan":{"start":[10,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/DeclOrderNoExportList.purs","end":[10,8]}}]} \ No newline at end of file
diff --git a/tests/purs/docs/output/DeclOrderNoExportList/externs.json b/tests/purs/docs/output/DeclOrderNoExportList/externs.json
index f6aef98..39c4234 100644
--- a/tests/purs/docs/output/DeclOrderNoExportList/externs.json
+++ b/tests/purs/docs/output/DeclOrderNoExportList/externs.json
@@ -1 +1 @@
-{"efVersion":"0.12.5","efModuleName":["DeclOrderNoExportList"],"efExports":[{"ValueRef":[{"start":[1,1],"name":"src/DeclOrderNoExportList.purs","end":[10,8]},{"Ident":"x1"}]},{"ValueRef":[{"start":[1,1],"name":"src/DeclOrderNoExportList.purs","end":[10,8]},{"Ident":"x3"}]},{"TypeRef":[{"start":[1,1],"name":"src/DeclOrderNoExportList.purs","end":[10,8]},"X2",[]]},{"TypeRef":[{"start":[1,1],"name":"src/DeclOrderNoExportList.purs","end":[10,8]},"X4",[]]},{"TypeClassRef":[{"start":[1,1],"name":"src/DeclOrderNoExportList.purs","end":[10,8]},"A"]},{"TypeClassRef":[{"start":[1,1],"name":"src/DeclOrderNoExportList.purs","end":[10,8]},"B"]}],"efImports":[{"eiModule":["Prim"],"eiImportType":{"Implicit":[]},"eiImportedAs":["Prim"]},{"eiModule":["Prim"],"eiImportType":{"Implicit":[]},"eiImportedAs":null}],"efFixities":[],"efTypeFixities":[],"efDeclarations":[{"EDValue":{"edValueName":{"Ident":"x1"},"edValueType":{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Int"]}}},{"EDValue":{"edValueName":{"Ident":"x3"},"edValueType":{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Int"]}}},{"EDType":{"edTypeName":"X2","edTypeKind":{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"NamedKind","contents":[["Prim"],"Type"]},"edTypeDeclarationKind":{"DataType":{"args":[],"ctors":[]}}}},{"EDType":{"edTypeName":"X4","edTypeKind":{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"NamedKind","contents":[["Prim"],"Type"]},"edTypeDeclarationKind":{"DataType":{"args":[],"ctors":[]}}}},{"EDType":{"edTypeName":"A","edTypeKind":{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"NamedKind","contents":[["Prim"],"Type"]},"edTypeDeclarationKind":"TypeSynonym"}},{"EDTypeSynonym":{"edTypeSynonymName":"A","edTypeSynonymArguments":[],"edTypeSynonymType":{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Record"]},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"REmpty"}]}}},{"EDClass":{"edClassName":"A","edClassTypeArguments":[],"edClassMembers":[],"edClassConstraints":[],"edFunctionalDependencies":[]}},{"EDType":{"edTypeName":"B","edTypeKind":{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"NamedKind","contents":[["Prim"],"Type"]},"edTypeDeclarationKind":"TypeSynonym"}},{"EDTypeSynonym":{"edTypeSynonymName":"B","edTypeSynonymArguments":[],"edTypeSynonymType":{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Record"]},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"REmpty"}]}}},{"EDClass":{"edClassName":"B","edClassTypeArguments":[],"edClassMembers":[],"edClassConstraints":[],"edFunctionalDependencies":[]}}],"efSourceSpan":{"start":[1,1],"name":"src/DeclOrderNoExportList.purs","end":[10,8]}} \ No newline at end of file
+{"efVersion":"0.13.2","efModuleName":["DeclOrderNoExportList"],"efExports":[{"ValueRef":[{"start":[1,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/DeclOrderNoExportList.purs","end":[10,8]},{"Ident":"x1"}]},{"ValueRef":[{"start":[1,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/DeclOrderNoExportList.purs","end":[10,8]},{"Ident":"x3"}]},{"TypeRef":[{"start":[1,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/DeclOrderNoExportList.purs","end":[10,8]},"X2",[]]},{"TypeRef":[{"start":[1,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/DeclOrderNoExportList.purs","end":[10,8]},"X4",[]]},{"TypeClassRef":[{"start":[1,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/DeclOrderNoExportList.purs","end":[10,8]},"A"]},{"TypeClassRef":[{"start":[1,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/DeclOrderNoExportList.purs","end":[10,8]},"B"]}],"efImports":[{"eiModule":["Prim"],"eiImportType":{"Implicit":[]},"eiImportedAs":["Prim"]},{"eiModule":["Prim"],"eiImportType":{"Implicit":[]},"eiImportedAs":null}],"efFixities":[],"efTypeFixities":[],"efDeclarations":[{"EDValue":{"edValueName":{"Ident":"x1"},"edValueType":{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Int"]}}},{"EDValue":{"edValueName":{"Ident":"x3"},"edValueType":{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Int"]}}},{"EDType":{"edTypeName":"X2","edTypeKind":{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"NamedKind","contents":[["Prim"],"Type"]},"edTypeDeclarationKind":{"DataType":{"args":[],"ctors":[]}}}},{"EDType":{"edTypeName":"X4","edTypeKind":{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"NamedKind","contents":[["Prim"],"Type"]},"edTypeDeclarationKind":{"DataType":{"args":[],"ctors":[]}}}},{"EDType":{"edTypeName":"A","edTypeKind":{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"NamedKind","contents":[["Prim"],"Type"]},"edTypeDeclarationKind":"TypeSynonym"}},{"EDTypeSynonym":{"edTypeSynonymName":"A","edTypeSynonymArguments":[],"edTypeSynonymType":{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Record"]},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"REmpty"}]}}},{"EDClass":{"edClassName":"A","edClassTypeArguments":[],"edClassMembers":[],"edClassConstraints":[],"edFunctionalDependencies":[],"edIsEmpty":true}},{"EDType":{"edTypeName":"B","edTypeKind":{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"NamedKind","contents":[["Prim"],"Type"]},"edTypeDeclarationKind":"TypeSynonym"}},{"EDTypeSynonym":{"edTypeSynonymName":"B","edTypeSynonymArguments":[],"edTypeSynonymType":{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Record"]},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"REmpty"}]}}},{"EDClass":{"edClassName":"B","edClassTypeArguments":[],"edClassMembers":[],"edClassConstraints":[],"edFunctionalDependencies":[],"edIsEmpty":true}}],"efSourceSpan":{"start":[1,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/DeclOrderNoExportList.purs","end":[10,8]}} \ No newline at end of file
diff --git a/tests/purs/docs/output/Desugar/docs.json b/tests/purs/docs/output/Desugar/docs.json
index 37f9cee..bf1f384 100644
--- a/tests/purs/docs/output/Desugar/docs.json
+++ b/tests/purs/docs/output/Desugar/docs.json
@@ -1 +1 @@
-{"reExports":[],"name":"Desugar","comments":null,"declarations":[{"children":[{"comments":null,"title":"X","info":{"arguments":[{"annotation":[],"tag":"TypeVar","contents":"a"},{"annotation":[],"tag":"TypeVar","contents":"b"}],"declType":"dataConstructor"},"sourceSpan":null}],"comments":null,"title":"X","info":{"declType":"data","dataDeclType":"data","typeArguments":[["a",null],["b",null]]},"sourceSpan":{"start":[3,1],"name":"src/Desugar.purs","end":[3,19]}},{"children":[],"comments":null,"title":"test","info":{"declType":"value","type":{"annotation":[],"tag":"ForAll","contents":["b",{"annotation":[],"tag":"ForAll","contents":["a",{"annotation":[],"tag":"TypeApp","contents":[{"annotation":[],"tag":"TypeApp","contents":[{"annotation":[],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[],"tag":"TypeApp","contents":[{"annotation":[],"tag":"TypeApp","contents":[{"annotation":[],"tag":"TypeConstructor","contents":[["Desugar"],"X"]},{"annotation":[],"tag":"ParensInType","contents":{"annotation":[],"tag":"TypeApp","contents":[{"annotation":[],"tag":"TypeApp","contents":[{"annotation":[],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[],"tag":"TypeVar","contents":"a"}]},{"annotation":[],"tag":"TypeVar","contents":"b"}]}}]},{"annotation":[],"tag":"TypeVar","contents":"a"}]}]},{"annotation":[],"tag":"TypeVar","contents":"b"}]},null]},null]}},"sourceSpan":{"start":[5,1],"name":"src/Desugar.purs","end":[5,38]}}]} \ No newline at end of file
+{"reExports":[],"name":"Desugar","comments":null,"declarations":[{"children":[{"comments":null,"title":"X","info":{"arguments":[{"annotation":[],"tag":"TypeVar","contents":"a"},{"annotation":[],"tag":"TypeVar","contents":"b"}],"declType":"dataConstructor"},"sourceSpan":null}],"comments":null,"title":"X","info":{"declType":"data","dataDeclType":"data","typeArguments":[["a",null],["b",null]]},"sourceSpan":{"start":[3,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/Desugar.purs","end":[3,19]}},{"children":[],"comments":null,"title":"test","info":{"declType":"value","type":{"annotation":[],"tag":"ForAll","contents":["b",{"annotation":[],"tag":"ForAll","contents":["a",{"annotation":[],"tag":"TypeApp","contents":[{"annotation":[],"tag":"TypeApp","contents":[{"annotation":[],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[],"tag":"TypeApp","contents":[{"annotation":[],"tag":"TypeApp","contents":[{"annotation":[],"tag":"TypeConstructor","contents":[["Desugar"],"X"]},{"annotation":[],"tag":"ParensInType","contents":{"annotation":[],"tag":"TypeApp","contents":[{"annotation":[],"tag":"TypeApp","contents":[{"annotation":[],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[],"tag":"TypeVar","contents":"a"}]},{"annotation":[],"tag":"TypeVar","contents":"b"}]}}]},{"annotation":[],"tag":"TypeVar","contents":"a"}]}]},{"annotation":[],"tag":"TypeVar","contents":"b"}]},null]},null]}},"sourceSpan":{"start":[5,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/Desugar.purs","end":[5,38]}}]} \ No newline at end of file
diff --git a/tests/purs/docs/output/Desugar/externs.json b/tests/purs/docs/output/Desugar/externs.json
index e040fd8..4faf567 100644
--- a/tests/purs/docs/output/Desugar/externs.json
+++ b/tests/purs/docs/output/Desugar/externs.json
@@ -1 +1 @@
-{"efVersion":"0.12.5","efModuleName":["Desugar"],"efExports":[{"TypeRef":[{"start":[1,1],"name":"src/Desugar.purs","end":[8,9]},"X",["X"]]},{"ValueRef":[{"start":[1,1],"name":"src/Desugar.purs","end":[8,9]},{"Ident":"test"}]}],"efImports":[{"eiModule":["Prim"],"eiImportType":{"Implicit":[]},"eiImportedAs":["Prim"]},{"eiModule":["Prim"],"eiImportType":{"Implicit":[]},"eiImportedAs":null}],"efFixities":[],"efTypeFixities":[],"efDeclarations":[{"EDType":{"edTypeName":"X","edTypeKind":{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"FunKind","contents":[{"annotation":[{"start":[3,16],"name":"src/Desugar.purs","end":[3,17]},[]],"tag":"NamedKind","contents":[["Prim"],"Type"]},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"FunKind","contents":[{"annotation":[{"start":[3,18],"name":"src/Desugar.purs","end":[3,19]},[]],"tag":"NamedKind","contents":[["Prim"],"Type"]},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"NamedKind","contents":[["Prim"],"Type"]}]}]},"edTypeDeclarationKind":{"DataType":{"args":[["a",{"annotation":[{"start":[3,16],"name":"src/Desugar.purs","end":[3,17]},[]],"tag":"NamedKind","contents":[["Prim"],"Type"]}],["b",{"annotation":[{"start":[3,18],"name":"src/Desugar.purs","end":[3,19]},[]],"tag":"NamedKind","contents":[["Prim"],"Type"]}]],"ctors":[["X",[{"annotation":[{"start":[3,16],"name":"src/Desugar.purs","end":[3,17]},[]],"tag":"TypeVar","contents":"a"},{"annotation":[{"start":[3,18],"name":"src/Desugar.purs","end":[3,19]},[]],"tag":"TypeVar","contents":"b"}]]]}}}},{"EDDataConstructor":{"edDataCtorName":"X","edDataCtorOrigin":"data","edDataCtorTypeCtor":"X","edDataCtorType":{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"ForAll","contents":["b",{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"ForAll","contents":["a",{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[3,16],"name":"src/Desugar.purs","end":[3,17]},[]],"tag":"TypeVar","contents":"a"}]},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[3,18],"name":"src/Desugar.purs","end":[3,19]},[]],"tag":"TypeVar","contents":"b"}]},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeConstructor","contents":[["Desugar"],"X"]},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeVar","contents":"a"}]},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeVar","contents":"b"}]}]}]},null]},null]},"edDataCtorFields":[{"Ident":"value0"},{"Ident":"value1"}]}},{"EDValue":{"edValueName":{"Ident":"test"},"edValueType":{"annotation":[{"start":[5,9],"name":"src/Desugar.purs","end":[5,38]},[]],"tag":"ForAll","contents":["b",{"annotation":[{"start":[5,16],"name":"src/Desugar.purs","end":[5,38]},[]],"tag":"ForAll","contents":["a",{"annotation":[{"start":[5,21],"name":"src/Desugar.purs","end":[5,38]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[5,21],"name":"src/Desugar.purs","end":[5,38]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[5,34],"name":"src/Desugar.purs","end":[5,36]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[5,21],"name":"src/Desugar.purs","end":[5,33]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[5,21],"name":"src/Desugar.purs","end":[5,31]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[5,21],"name":"src/Desugar.purs","end":[5,22]},[]],"tag":"TypeConstructor","contents":[["Desugar"],"X"]},{"annotation":[{"start":[5,24],"name":"src/Desugar.purs","end":[5,30]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[5,24],"name":"src/Desugar.purs","end":[5,30]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[5,26],"name":"src/Desugar.purs","end":[5,28]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[5,24],"name":"src/Desugar.purs","end":[5,25]},[]],"tag":"TypeVar","contents":"a"}]},{"annotation":[{"start":[5,29],"name":"src/Desugar.purs","end":[5,30]},[]],"tag":"TypeVar","contents":"b"}]}]},{"annotation":[{"start":[5,32],"name":"src/Desugar.purs","end":[5,33]},[]],"tag":"TypeVar","contents":"a"}]}]},{"annotation":[{"start":[5,37],"name":"src/Desugar.purs","end":[5,38]},[]],"tag":"TypeVar","contents":"b"}]},0]},1]}}}],"efSourceSpan":{"start":[1,1],"name":"src/Desugar.purs","end":[8,9]}} \ No newline at end of file
+{"efVersion":"0.13.2","efModuleName":["Desugar"],"efExports":[{"TypeRef":[{"start":[1,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/Desugar.purs","end":[8,9]},"X",["X"]]},{"ValueRef":[{"start":[1,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/Desugar.purs","end":[8,9]},{"Ident":"test"}]}],"efImports":[{"eiModule":["Prim"],"eiImportType":{"Implicit":[]},"eiImportedAs":["Prim"]},{"eiModule":["Prim"],"eiImportType":{"Implicit":[]},"eiImportedAs":null}],"efFixities":[],"efTypeFixities":[],"efDeclarations":[{"EDType":{"edTypeName":"X","edTypeKind":{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"FunKind","contents":[{"annotation":[{"start":[3,16],"name":"/home/harry/code/purescript/tests/purs/docs/src/Desugar.purs","end":[3,17]},[]],"tag":"NamedKind","contents":[["Prim"],"Type"]},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"FunKind","contents":[{"annotation":[{"start":[3,18],"name":"/home/harry/code/purescript/tests/purs/docs/src/Desugar.purs","end":[3,19]},[]],"tag":"NamedKind","contents":[["Prim"],"Type"]},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"NamedKind","contents":[["Prim"],"Type"]}]}]},"edTypeDeclarationKind":{"DataType":{"args":[["a",{"annotation":[{"start":[3,16],"name":"/home/harry/code/purescript/tests/purs/docs/src/Desugar.purs","end":[3,17]},[]],"tag":"NamedKind","contents":[["Prim"],"Type"]}],["b",{"annotation":[{"start":[3,18],"name":"/home/harry/code/purescript/tests/purs/docs/src/Desugar.purs","end":[3,19]},[]],"tag":"NamedKind","contents":[["Prim"],"Type"]}]],"ctors":[["X",[{"annotation":[{"start":[3,16],"name":"/home/harry/code/purescript/tests/purs/docs/src/Desugar.purs","end":[3,17]},[]],"tag":"TypeVar","contents":"a"},{"annotation":[{"start":[3,18],"name":"/home/harry/code/purescript/tests/purs/docs/src/Desugar.purs","end":[3,19]},[]],"tag":"TypeVar","contents":"b"}]]]}}}},{"EDDataConstructor":{"edDataCtorName":"X","edDataCtorOrigin":"data","edDataCtorTypeCtor":"X","edDataCtorType":{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"ForAll","contents":["b",{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"ForAll","contents":["a",{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[3,16],"name":"/home/harry/code/purescript/tests/purs/docs/src/Desugar.purs","end":[3,17]},[]],"tag":"TypeVar","contents":"a"}]},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[3,18],"name":"/home/harry/code/purescript/tests/purs/docs/src/Desugar.purs","end":[3,19]},[]],"tag":"TypeVar","contents":"b"}]},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeConstructor","contents":[["Desugar"],"X"]},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeVar","contents":"a"}]},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeVar","contents":"b"}]}]}]},null]},null]},"edDataCtorFields":[{"Ident":"value0"},{"Ident":"value1"}]}},{"EDValue":{"edValueName":{"Ident":"test"},"edValueType":{"annotation":[{"start":[5,9],"name":"/home/harry/code/purescript/tests/purs/docs/src/Desugar.purs","end":[5,38]},[]],"tag":"ForAll","contents":["b",{"annotation":[{"start":[5,16],"name":"/home/harry/code/purescript/tests/purs/docs/src/Desugar.purs","end":[5,38]},[]],"tag":"ForAll","contents":["a",{"annotation":[{"start":[5,21],"name":"/home/harry/code/purescript/tests/purs/docs/src/Desugar.purs","end":[5,38]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[5,21],"name":"/home/harry/code/purescript/tests/purs/docs/src/Desugar.purs","end":[5,38]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[5,34],"name":"/home/harry/code/purescript/tests/purs/docs/src/Desugar.purs","end":[5,36]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[5,21],"name":"/home/harry/code/purescript/tests/purs/docs/src/Desugar.purs","end":[5,33]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[5,21],"name":"/home/harry/code/purescript/tests/purs/docs/src/Desugar.purs","end":[5,31]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[5,21],"name":"/home/harry/code/purescript/tests/purs/docs/src/Desugar.purs","end":[5,22]},[]],"tag":"TypeConstructor","contents":[["Desugar"],"X"]},{"annotation":[{"start":[5,24],"name":"/home/harry/code/purescript/tests/purs/docs/src/Desugar.purs","end":[5,30]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[5,24],"name":"/home/harry/code/purescript/tests/purs/docs/src/Desugar.purs","end":[5,30]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[5,26],"name":"/home/harry/code/purescript/tests/purs/docs/src/Desugar.purs","end":[5,28]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[5,24],"name":"/home/harry/code/purescript/tests/purs/docs/src/Desugar.purs","end":[5,25]},[]],"tag":"TypeVar","contents":"a"}]},{"annotation":[{"start":[5,29],"name":"/home/harry/code/purescript/tests/purs/docs/src/Desugar.purs","end":[5,30]},[]],"tag":"TypeVar","contents":"b"}]}]},{"annotation":[{"start":[5,32],"name":"/home/harry/code/purescript/tests/purs/docs/src/Desugar.purs","end":[5,33]},[]],"tag":"TypeVar","contents":"a"}]}]},{"annotation":[{"start":[5,37],"name":"/home/harry/code/purescript/tests/purs/docs/src/Desugar.purs","end":[5,38]},[]],"tag":"TypeVar","contents":"b"}]},0]},1]}}}],"efSourceSpan":{"start":[1,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/Desugar.purs","end":[8,9]}} \ No newline at end of file
diff --git a/tests/purs/docs/output/DocComments/docs.json b/tests/purs/docs/output/DocComments/docs.json
index beaf573..ee35190 100644
--- a/tests/purs/docs/output/DocComments/docs.json
+++ b/tests/purs/docs/output/DocComments/docs.json
@@ -1 +1 @@
-{"reExports":[],"name":"DocComments","comments":null,"declarations":[{"children":[],"comments":"This declaration has a code block:\n\n example == 0\n\nHere we are really testing that the leading whitespace is not stripped, as\nthis ensures that we don't accidentally change code blocks into normal\nparagraphs.\n","title":"example","info":{"declType":"value","type":{"annotation":[],"tag":"TypeConstructor","contents":[["Prim"],"Int"]}},"sourceSpan":{"start":[10,1],"name":"src/DocComments.purs","end":[10,15]}}]} \ No newline at end of file
+{"reExports":[],"name":"DocComments","comments":null,"declarations":[{"children":[],"comments":"This declaration has a code block:\n\n example == 0\n\nHere we are really testing that the leading whitespace is not stripped, as\nthis ensures that we don't accidentally change code blocks into normal\nparagraphs.\n","title":"example","info":{"declType":"value","type":{"annotation":[],"tag":"TypeConstructor","contents":[["Prim"],"Int"]}},"sourceSpan":{"start":[10,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/DocComments.purs","end":[10,15]}}]} \ No newline at end of file
diff --git a/tests/purs/docs/output/DocComments/externs.json b/tests/purs/docs/output/DocComments/externs.json
index 335108f..be028c7 100644
--- a/tests/purs/docs/output/DocComments/externs.json
+++ b/tests/purs/docs/output/DocComments/externs.json
@@ -1 +1 @@
-{"efVersion":"0.12.5","efModuleName":["DocComments"],"efExports":[{"ValueRef":[{"start":[1,1],"name":"src/DocComments.purs","end":[11,12]},{"Ident":"example"}]}],"efImports":[{"eiModule":["Prim"],"eiImportType":{"Implicit":[]},"eiImportedAs":["Prim"]},{"eiModule":["Prim"],"eiImportType":{"Implicit":[]},"eiImportedAs":null}],"efFixities":[],"efTypeFixities":[],"efDeclarations":[{"EDValue":{"edValueName":{"Ident":"example"},"edValueType":{"annotation":[{"start":[10,12],"name":"src/DocComments.purs","end":[10,15]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Int"]}}}],"efSourceSpan":{"start":[1,1],"name":"src/DocComments.purs","end":[11,12]}} \ No newline at end of file
+{"efVersion":"0.13.2","efModuleName":["DocComments"],"efExports":[{"ValueRef":[{"start":[1,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/DocComments.purs","end":[11,12]},{"Ident":"example"}]}],"efImports":[{"eiModule":["Prim"],"eiImportType":{"Implicit":[]},"eiImportedAs":["Prim"]},{"eiModule":["Prim"],"eiImportType":{"Implicit":[]},"eiImportedAs":null}],"efFixities":[],"efTypeFixities":[],"efDeclarations":[{"EDValue":{"edValueName":{"Ident":"example"},"edValueType":{"annotation":[{"start":[10,12],"name":"/home/harry/code/purescript/tests/purs/docs/src/DocComments.purs","end":[10,15]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Int"]}}}],"efSourceSpan":{"start":[1,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/DocComments.purs","end":[11,12]}} \ No newline at end of file
diff --git a/tests/purs/docs/output/DocCommentsClassMethod/docs.json b/tests/purs/docs/output/DocCommentsClassMethod/docs.json
new file mode 100644
index 0000000..56504e9
--- /dev/null
+++ b/tests/purs/docs/output/DocCommentsClassMethod/docs.json
@@ -0,0 +1 @@
+{"reExports":[],"name":"DocCommentsClassMethod","comments":null,"declarations":[{"children":[{"comments":"class method comment\n","title":"bar","info":{"declType":"typeClassMember","type":{"annotation":[],"tag":"TypeVar","contents":"a"}},"sourceSpan":{"start":[5,3],"name":"/home/harry/code/purescript/tests/purs/docs/src/DocCommentsClassMethod.purs","end":[5,11]}},{"comments":null,"title":"baz","info":{"declType":"typeClassMember","type":{"annotation":[],"tag":"TypeApp","contents":[{"annotation":[],"tag":"TypeApp","contents":[{"annotation":[],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[],"tag":"TypeConstructor","contents":[["Prim"],"String"]}]},{"annotation":[],"tag":"TypeVar","contents":"a"}]}},"sourceSpan":{"start":[6,3],"name":"/home/harry/code/purescript/tests/purs/docs/src/DocCommentsClassMethod.purs","end":[6,21]}}],"comments":null,"title":"Foo","info":{"fundeps":[],"arguments":[["a",null]],"declType":"typeClass","superclasses":[]},"sourceSpan":{"start":[3,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/DocCommentsClassMethod.purs","end":[6,21]}}]} \ No newline at end of file
diff --git a/tests/purs/docs/output/DocCommentsClassMethod/externs.json b/tests/purs/docs/output/DocCommentsClassMethod/externs.json
new file mode 100644
index 0000000..8f4d7a6
--- /dev/null
+++ b/tests/purs/docs/output/DocCommentsClassMethod/externs.json
@@ -0,0 +1 @@
+{"efVersion":"0.13.2","efModuleName":["DocCommentsClassMethod"],"efExports":[{"ValueRef":[{"start":[1,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/DocCommentsClassMethod.purs","end":[6,21]},{"Ident":"bar"}]},{"ValueRef":[{"start":[1,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/DocCommentsClassMethod.purs","end":[6,21]},{"Ident":"baz"}]},{"TypeClassRef":[{"start":[1,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/DocCommentsClassMethod.purs","end":[6,21]},"Foo"]}],"efImports":[{"eiModule":["Prim"],"eiImportType":{"Implicit":[]},"eiImportedAs":["Prim"]},{"eiModule":["Prim"],"eiImportType":{"Implicit":[]},"eiImportedAs":null}],"efFixities":[],"efTypeFixities":[],"efDeclarations":[{"EDValue":{"edValueName":{"Ident":"bar"},"edValueType":{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"ForAll","contents":["a",{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"ConstrainedType","contents":[{"constraintAnn":[{"start":[0,0],"name":"","end":[0,0]},[]],"constraintClass":[["DocCommentsClassMethod"],"Foo"],"constraintArgs":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeVar","contents":"a"}],"constraintData":null},{"annotation":[{"start":[5,10],"name":"/home/harry/code/purescript/tests/purs/docs/src/DocCommentsClassMethod.purs","end":[5,11]},[]],"tag":"TypeVar","contents":"a"}]},1]}}},{"EDValue":{"edValueName":{"Ident":"baz"},"edValueType":{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"ForAll","contents":["a",{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"ConstrainedType","contents":[{"constraintAnn":[{"start":[0,0],"name":"","end":[0,0]},[]],"constraintClass":[["DocCommentsClassMethod"],"Foo"],"constraintArgs":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeVar","contents":"a"}],"constraintData":null},{"annotation":[{"start":[6,10],"name":"/home/harry/code/purescript/tests/purs/docs/src/DocCommentsClassMethod.purs","end":[6,21]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[6,10],"name":"/home/harry/code/purescript/tests/purs/docs/src/DocCommentsClassMethod.purs","end":[6,21]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[6,17],"name":"/home/harry/code/purescript/tests/purs/docs/src/DocCommentsClassMethod.purs","end":[6,19]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[6,10],"name":"/home/harry/code/purescript/tests/purs/docs/src/DocCommentsClassMethod.purs","end":[6,16]},[]],"tag":"TypeConstructor","contents":[["Prim"],"String"]}]},{"annotation":[{"start":[6,20],"name":"/home/harry/code/purescript/tests/purs/docs/src/DocCommentsClassMethod.purs","end":[6,21]},[]],"tag":"TypeVar","contents":"a"}]}]},0]}}},{"EDType":{"edTypeName":"Foo","edTypeKind":{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"FunKind","contents":[{"annotation":[{"start":[6,17],"name":"/home/harry/code/purescript/tests/purs/docs/src/DocCommentsClassMethod.purs","end":[6,19]},[]],"tag":"NamedKind","contents":[["Prim"],"Type"]},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"NamedKind","contents":[["Prim"],"Type"]}]},"edTypeDeclarationKind":"TypeSynonym"}},{"EDTypeSynonym":{"edTypeSynonymName":"Foo","edTypeSynonymArguments":[["a",null]],"edTypeSynonymType":{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Record"]},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"RCons","contents":["bar",{"annotation":[{"start":[5,10],"name":"/home/harry/code/purescript/tests/purs/docs/src/DocCommentsClassMethod.purs","end":[5,11]},[]],"tag":"TypeVar","contents":"a"},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"RCons","contents":["baz",{"annotation":[{"start":[6,10],"name":"/home/harry/code/purescript/tests/purs/docs/src/DocCommentsClassMethod.purs","end":[6,21]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[6,10],"name":"/home/harry/code/purescript/tests/purs/docs/src/DocCommentsClassMethod.purs","end":[6,21]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[6,17],"name":"/home/harry/code/purescript/tests/purs/docs/src/DocCommentsClassMethod.purs","end":[6,19]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[6,10],"name":"/home/harry/code/purescript/tests/purs/docs/src/DocCommentsClassMethod.purs","end":[6,16]},[]],"tag":"TypeConstructor","contents":[["Prim"],"String"]}]},{"annotation":[{"start":[6,20],"name":"/home/harry/code/purescript/tests/purs/docs/src/DocCommentsClassMethod.purs","end":[6,21]},[]],"tag":"TypeVar","contents":"a"}]},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"REmpty"}]}]}]}}},{"EDClass":{"edClassName":"Foo","edClassTypeArguments":[["a",null]],"edClassMembers":[[{"Ident":"bar"},{"annotation":[{"start":[5,10],"name":"/home/harry/code/purescript/tests/purs/docs/src/DocCommentsClassMethod.purs","end":[5,11]},[]],"tag":"TypeVar","contents":"a"}],[{"Ident":"baz"},{"annotation":[{"start":[6,10],"name":"/home/harry/code/purescript/tests/purs/docs/src/DocCommentsClassMethod.purs","end":[6,21]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[6,10],"name":"/home/harry/code/purescript/tests/purs/docs/src/DocCommentsClassMethod.purs","end":[6,21]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[6,17],"name":"/home/harry/code/purescript/tests/purs/docs/src/DocCommentsClassMethod.purs","end":[6,19]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[6,10],"name":"/home/harry/code/purescript/tests/purs/docs/src/DocCommentsClassMethod.purs","end":[6,16]},[]],"tag":"TypeConstructor","contents":[["Prim"],"String"]}]},{"annotation":[{"start":[6,20],"name":"/home/harry/code/purescript/tests/purs/docs/src/DocCommentsClassMethod.purs","end":[6,21]},[]],"tag":"TypeVar","contents":"a"}]}]],"edClassConstraints":[],"edFunctionalDependencies":[],"edIsEmpty":false}}],"efSourceSpan":{"start":[1,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/DocCommentsClassMethod.purs","end":[6,21]}} \ No newline at end of file
diff --git a/tests/purs/docs/output/DocCommentsDataConstructor/docs.json b/tests/purs/docs/output/DocCommentsDataConstructor/docs.json
new file mode 100644
index 0000000..3eb1152
--- /dev/null
+++ b/tests/purs/docs/output/DocCommentsDataConstructor/docs.json
@@ -0,0 +1 @@
+{"reExports":[],"name":"DocCommentsDataConstructor","comments":null,"declarations":[{"children":[{"comments":"data constructor comment\n","title":"Bar","info":{"arguments":[],"declType":"dataConstructor"},"sourceSpan":null},{"comments":null,"title":"Baz","info":{"arguments":[],"declType":"dataConstructor"},"sourceSpan":null}],"comments":null,"title":"Foo","info":{"declType":"data","dataDeclType":"data","typeArguments":[]},"sourceSpan":{"start":[3,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/DocCommentsDataConstructor.purs","end":[6,8]}},{"children":[{"comments":null,"title":"ComplexBar","info":{"arguments":[{"annotation":[],"tag":"TypeVar","contents":"a"}],"declType":"dataConstructor"},"sourceSpan":null},{"comments":"another data constructor comment\n","title":"ComplexBaz","info":{"arguments":[{"annotation":[],"tag":"TypeVar","contents":"a"},{"annotation":[],"tag":"TypeVar","contents":"b"}],"declType":"dataConstructor"},"sourceSpan":null}],"comments":null,"title":"ComplexFoo","info":{"declType":"data","dataDeclType":"data","typeArguments":[["a",null],["b",null]]},"sourceSpan":{"start":[8,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/DocCommentsDataConstructor.purs","end":[11,19]}},{"children":[{"comments":"newtype data constructor comment\n","title":"NewtypeFoo","info":{"arguments":[{"annotation":[],"tag":"TypeApp","contents":[{"annotation":[],"tag":"TypeConstructor","contents":[["Prim"],"Record"]},{"annotation":[],"tag":"RCons","contents":["newtypeBar",{"annotation":[],"tag":"TypeConstructor","contents":[["Prim"],"String"]},{"annotation":[],"tag":"REmpty"}]}]}],"declType":"dataConstructor"},"sourceSpan":null}],"comments":null,"title":"NewtypeFoo","info":{"declType":"data","dataDeclType":"newtype","typeArguments":[]},"sourceSpan":{"start":[13,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/DocCommentsDataConstructor.purs","end":[15,40]}}]} \ No newline at end of file
diff --git a/tests/purs/docs/output/DocCommentsDataConstructor/externs.json b/tests/purs/docs/output/DocCommentsDataConstructor/externs.json
new file mode 100644
index 0000000..e81feea
--- /dev/null
+++ b/tests/purs/docs/output/DocCommentsDataConstructor/externs.json
@@ -0,0 +1 @@
+{"efVersion":"0.13.2","efModuleName":["DocCommentsDataConstructor"],"efExports":[{"TypeRef":[{"start":[1,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/DocCommentsDataConstructor.purs","end":[15,40]},"Foo",["Bar","Baz"]]},{"TypeRef":[{"start":[1,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/DocCommentsDataConstructor.purs","end":[15,40]},"ComplexFoo",["ComplexBar","ComplexBaz"]]},{"TypeRef":[{"start":[1,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/DocCommentsDataConstructor.purs","end":[15,40]},"NewtypeFoo",["NewtypeFoo"]]}],"efImports":[{"eiModule":["Prim"],"eiImportType":{"Implicit":[]},"eiImportedAs":["Prim"]},{"eiModule":["Prim"],"eiImportType":{"Implicit":[]},"eiImportedAs":null}],"efFixities":[],"efTypeFixities":[],"efDeclarations":[{"EDType":{"edTypeName":"Foo","edTypeKind":{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"NamedKind","contents":[["Prim"],"Type"]},"edTypeDeclarationKind":{"DataType":{"args":[],"ctors":[["Bar",[]],["Baz",[]]]}}}},{"EDDataConstructor":{"edDataCtorName":"Bar","edDataCtorOrigin":"data","edDataCtorTypeCtor":"Foo","edDataCtorType":{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeConstructor","contents":[["DocCommentsDataConstructor"],"Foo"]},"edDataCtorFields":[]}},{"EDDataConstructor":{"edDataCtorName":"Baz","edDataCtorOrigin":"data","edDataCtorTypeCtor":"Foo","edDataCtorType":{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeConstructor","contents":[["DocCommentsDataConstructor"],"Foo"]},"edDataCtorFields":[]}},{"EDType":{"edTypeName":"ComplexFoo","edTypeKind":{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"FunKind","contents":[{"annotation":[{"start":[9,16],"name":"/home/harry/code/purescript/tests/purs/docs/src/DocCommentsDataConstructor.purs","end":[9,17]},[]],"tag":"NamedKind","contents":[["Prim"],"Type"]},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"FunKind","contents":[{"annotation":[{"start":[11,18],"name":"/home/harry/code/purescript/tests/purs/docs/src/DocCommentsDataConstructor.purs","end":[11,19]},[]],"tag":"NamedKind","contents":[["Prim"],"Type"]},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"NamedKind","contents":[["Prim"],"Type"]}]}]},"edTypeDeclarationKind":{"DataType":{"args":[["a",{"annotation":[{"start":[9,16],"name":"/home/harry/code/purescript/tests/purs/docs/src/DocCommentsDataConstructor.purs","end":[9,17]},[]],"tag":"NamedKind","contents":[["Prim"],"Type"]}],["b",{"annotation":[{"start":[11,18],"name":"/home/harry/code/purescript/tests/purs/docs/src/DocCommentsDataConstructor.purs","end":[11,19]},[]],"tag":"NamedKind","contents":[["Prim"],"Type"]}]],"ctors":[["ComplexBar",[{"annotation":[{"start":[9,16],"name":"/home/harry/code/purescript/tests/purs/docs/src/DocCommentsDataConstructor.purs","end":[9,17]},[]],"tag":"TypeVar","contents":"a"}]],["ComplexBaz",[{"annotation":[{"start":[11,16],"name":"/home/harry/code/purescript/tests/purs/docs/src/DocCommentsDataConstructor.purs","end":[11,17]},[]],"tag":"TypeVar","contents":"a"},{"annotation":[{"start":[11,18],"name":"/home/harry/code/purescript/tests/purs/docs/src/DocCommentsDataConstructor.purs","end":[11,19]},[]],"tag":"TypeVar","contents":"b"}]]]}}}},{"EDDataConstructor":{"edDataCtorName":"ComplexBar","edDataCtorOrigin":"data","edDataCtorTypeCtor":"ComplexFoo","edDataCtorType":{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"ForAll","contents":["b",{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"ForAll","contents":["a",{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[9,16],"name":"/home/harry/code/purescript/tests/purs/docs/src/DocCommentsDataConstructor.purs","end":[9,17]},[]],"tag":"TypeVar","contents":"a"}]},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeConstructor","contents":[["DocCommentsDataConstructor"],"ComplexFoo"]},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeVar","contents":"a"}]},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeVar","contents":"b"}]}]},null]},null]},"edDataCtorFields":[{"Ident":"value0"}]}},{"EDDataConstructor":{"edDataCtorName":"ComplexBaz","edDataCtorOrigin":"data","edDataCtorTypeCtor":"ComplexFoo","edDataCtorType":{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"ForAll","contents":["b",{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"ForAll","contents":["a",{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[11,16],"name":"/home/harry/code/purescript/tests/purs/docs/src/DocCommentsDataConstructor.purs","end":[11,17]},[]],"tag":"TypeVar","contents":"a"}]},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[11,18],"name":"/home/harry/code/purescript/tests/purs/docs/src/DocCommentsDataConstructor.purs","end":[11,19]},[]],"tag":"TypeVar","contents":"b"}]},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeConstructor","contents":[["DocCommentsDataConstructor"],"ComplexFoo"]},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeVar","contents":"a"}]},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeVar","contents":"b"}]}]}]},null]},null]},"edDataCtorFields":[{"Ident":"value0"},{"Ident":"value1"}]}},{"EDType":{"edTypeName":"NewtypeFoo","edTypeKind":{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"NamedKind","contents":[["Prim"],"Type"]},"edTypeDeclarationKind":{"DataType":{"args":[],"ctors":[["NewtypeFoo",[{"annotation":[{"start":[15,16],"name":"/home/harry/code/purescript/tests/purs/docs/src/DocCommentsDataConstructor.purs","end":[15,40]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[15,16],"name":"/home/harry/code/purescript/tests/purs/docs/src/DocCommentsDataConstructor.purs","end":[15,17]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Record"]},{"annotation":[{"start":[15,18],"name":"/home/harry/code/purescript/tests/purs/docs/src/DocCommentsDataConstructor.purs","end":[15,38]},[]],"tag":"RCons","contents":["newtypeBar",{"annotation":[{"start":[15,32],"name":"/home/harry/code/purescript/tests/purs/docs/src/DocCommentsDataConstructor.purs","end":[15,38]},[]],"tag":"TypeConstructor","contents":[["Prim"],"String"]},{"annotation":[{"start":[15,39],"name":"/home/harry/code/purescript/tests/purs/docs/src/DocCommentsDataConstructor.purs","end":[15,40]},[]],"tag":"REmpty"}]}]}]]]}}}},{"EDDataConstructor":{"edDataCtorName":"NewtypeFoo","edDataCtorOrigin":"newtype","edDataCtorTypeCtor":"NewtypeFoo","edDataCtorType":{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[15,16],"name":"/home/harry/code/purescript/tests/purs/docs/src/DocCommentsDataConstructor.purs","end":[15,40]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[15,16],"name":"/home/harry/code/purescript/tests/purs/docs/src/DocCommentsDataConstructor.purs","end":[15,17]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Record"]},{"annotation":[{"start":[15,18],"name":"/home/harry/code/purescript/tests/purs/docs/src/DocCommentsDataConstructor.purs","end":[15,38]},[]],"tag":"RCons","contents":["newtypeBar",{"annotation":[{"start":[15,32],"name":"/home/harry/code/purescript/tests/purs/docs/src/DocCommentsDataConstructor.purs","end":[15,38]},[]],"tag":"TypeConstructor","contents":[["Prim"],"String"]},{"annotation":[{"start":[15,39],"name":"/home/harry/code/purescript/tests/purs/docs/src/DocCommentsDataConstructor.purs","end":[15,40]},[]],"tag":"REmpty"}]}]}]},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeConstructor","contents":[["DocCommentsDataConstructor"],"NewtypeFoo"]}]},"edDataCtorFields":[{"Ident":"value0"}]}}],"efSourceSpan":{"start":[1,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/DocCommentsDataConstructor.purs","end":[15,40]}} \ No newline at end of file
diff --git a/tests/purs/docs/output/DuplicateNames/docs.json b/tests/purs/docs/output/DuplicateNames/docs.json
index d3405e5..4357447 100644
--- a/tests/purs/docs/output/DuplicateNames/docs.json
+++ b/tests/purs/docs/output/DuplicateNames/docs.json
@@ -1 +1 @@
-{"reExports":[],"name":"DuplicateNames","comments":null,"declarations":[{"children":[],"comments":null,"title":"unit","info":{"declType":"value","type":{"annotation":[],"tag":"TypeConstructor","contents":[["Prim"],"Int"]}},"sourceSpan":{"start":[8,1],"name":"src/DuplicateNames.purs","end":[8,12]}}]} \ No newline at end of file
+{"reExports":[],"name":"DuplicateNames","comments":null,"declarations":[{"children":[],"comments":null,"title":"unit","info":{"declType":"value","type":{"annotation":[],"tag":"TypeConstructor","contents":[["Prim"],"Int"]}},"sourceSpan":{"start":[8,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/DuplicateNames.purs","end":[8,12]}}]} \ No newline at end of file
diff --git a/tests/purs/docs/output/DuplicateNames/externs.json b/tests/purs/docs/output/DuplicateNames/externs.json
index 0676674..4c946da 100644
--- a/tests/purs/docs/output/DuplicateNames/externs.json
+++ b/tests/purs/docs/output/DuplicateNames/externs.json
@@ -1 +1 @@
-{"efVersion":"0.12.5","efModuleName":["DuplicateNames"],"efExports":[{"ReExportRef":[{"start":[1,1],"name":"src/DuplicateNames.purs","end":[9,9]},{"exportSourceImportedFrom":["Prelude"],"exportSourceDefinedIn":["Prelude"]},{"TypeRef":[{"start":[1,1],"name":"src/DuplicateNames.purs","end":[9,9]},"Unit",[]]}]},{"ValueRef":[{"start":[1,1],"name":"src/DuplicateNames.purs","end":[9,9]},{"Ident":"unit"}]},{"ModuleRef":[{"start":[2,5],"name":"src/DuplicateNames.purs","end":[2,26]},["DuplicateNames"]]},{"ModuleRef":[{"start":[3,5],"name":"src/DuplicateNames.purs","end":[3,19]},["Prelude"]]}],"efImports":[{"eiModule":["Prim"],"eiImportType":{"Implicit":[]},"eiImportedAs":["Prim"]},{"eiModule":["Prim"],"eiImportType":{"Implicit":[]},"eiImportedAs":null},{"eiModule":["Prelude"],"eiImportType":{"Explicit":[{"TypeRef":[{"start":[6,17],"name":"src/DuplicateNames.purs","end":[6,21]},"Unit",[]]}]},"eiImportedAs":null}],"efFixities":[],"efTypeFixities":[],"efDeclarations":[{"EDValue":{"edValueName":{"Ident":"unit"},"edValueType":{"annotation":[{"start":[8,9],"name":"src/DuplicateNames.purs","end":[8,12]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Int"]}}}],"efSourceSpan":{"start":[1,1],"name":"src/DuplicateNames.purs","end":[9,9]}} \ No newline at end of file
+{"efVersion":"0.13.2","efModuleName":["DuplicateNames"],"efExports":[{"ReExportRef":[{"start":[1,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/DuplicateNames.purs","end":[9,9]},{"exportSourceImportedFrom":["Prelude"],"exportSourceDefinedIn":["Prelude"]},{"TypeRef":[{"start":[1,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/DuplicateNames.purs","end":[9,9]},"Unit",[]]}]},{"ValueRef":[{"start":[1,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/DuplicateNames.purs","end":[9,9]},{"Ident":"unit"}]},{"ModuleRef":[{"start":[2,5],"name":"/home/harry/code/purescript/tests/purs/docs/src/DuplicateNames.purs","end":[2,26]},["DuplicateNames"]]},{"ModuleRef":[{"start":[3,5],"name":"/home/harry/code/purescript/tests/purs/docs/src/DuplicateNames.purs","end":[3,19]},["Prelude"]]}],"efImports":[{"eiModule":["Prim"],"eiImportType":{"Implicit":[]},"eiImportedAs":["Prim"]},{"eiModule":["Prim"],"eiImportType":{"Implicit":[]},"eiImportedAs":null},{"eiModule":["Prelude"],"eiImportType":{"Explicit":[{"TypeRef":[{"start":[6,17],"name":"/home/harry/code/purescript/tests/purs/docs/src/DuplicateNames.purs","end":[6,21]},"Unit",[]]}]},"eiImportedAs":null}],"efFixities":[],"efTypeFixities":[],"efDeclarations":[{"EDValue":{"edValueName":{"Ident":"unit"},"edValueType":{"annotation":[{"start":[8,9],"name":"/home/harry/code/purescript/tests/purs/docs/src/DuplicateNames.purs","end":[8,12]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Int"]}}}],"efSourceSpan":{"start":[1,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/DuplicateNames.purs","end":[9,9]}} \ No newline at end of file
diff --git a/tests/purs/docs/output/Example/externs.json b/tests/purs/docs/output/Example/externs.json
index 32b7a1a..1cc9945 100644
--- a/tests/purs/docs/output/Example/externs.json
+++ b/tests/purs/docs/output/Example/externs.json
@@ -1 +1 @@
-{"efVersion":"0.12.5","efModuleName":["Example"],"efExports":[{"ReExportRef":[{"start":[1,1],"name":"src/Example.purs","end":[7,22]},{"exportSourceImportedFrom":["Prelude"],"exportSourceDefinedIn":["Prelude"]},{"TypeRef":[{"start":[1,1],"name":"src/Example.purs","end":[7,22]},"Unit",[]]}]},{"ReExportRef":[{"start":[1,1],"name":"src/Example.purs","end":[7,22]},{"exportSourceImportedFrom":["Example2"],"exportSourceDefinedIn":["Example2"]},{"ValueRef":[{"start":[1,1],"name":"src/Example.purs","end":[7,22]},{"Ident":"one"}]}]},{"ModuleRef":[{"start":[2,5],"name":"src/Example.purs","end":[2,19]},["Prelude"]]},{"ModuleRef":[{"start":[3,5],"name":"src/Example.purs","end":[3,20]},["Example2"]]}],"efImports":[{"eiModule":["Prim"],"eiImportType":{"Implicit":[]},"eiImportedAs":["Prim"]},{"eiModule":["Prim"],"eiImportType":{"Implicit":[]},"eiImportedAs":null},{"eiModule":["Prelude"],"eiImportType":{"Explicit":[{"TypeRef":[{"start":[6,17],"name":"src/Example.purs","end":[6,23]},"Unit",[]]}]},"eiImportedAs":null},{"eiModule":["Example2"],"eiImportType":{"Explicit":[{"ValueRef":[{"start":[7,18],"name":"src/Example.purs","end":[7,21]},{"Ident":"one"}]}]},"eiImportedAs":null}],"efFixities":[],"efTypeFixities":[],"efDeclarations":[],"efSourceSpan":{"start":[1,1],"name":"src/Example.purs","end":[7,22]}} \ No newline at end of file
+{"efVersion":"0.13.2","efModuleName":["Example"],"efExports":[{"ReExportRef":[{"start":[1,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/Example.purs","end":[7,22]},{"exportSourceImportedFrom":["Prelude"],"exportSourceDefinedIn":["Prelude"]},{"TypeRef":[{"start":[1,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/Example.purs","end":[7,22]},"Unit",[]]}]},{"ReExportRef":[{"start":[1,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/Example.purs","end":[7,22]},{"exportSourceImportedFrom":["Example2"],"exportSourceDefinedIn":["Example2"]},{"ValueRef":[{"start":[1,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/Example.purs","end":[7,22]},{"Ident":"one"}]}]},{"ModuleRef":[{"start":[2,5],"name":"/home/harry/code/purescript/tests/purs/docs/src/Example.purs","end":[2,19]},["Prelude"]]},{"ModuleRef":[{"start":[3,5],"name":"/home/harry/code/purescript/tests/purs/docs/src/Example.purs","end":[3,20]},["Example2"]]}],"efImports":[{"eiModule":["Prim"],"eiImportType":{"Implicit":[]},"eiImportedAs":["Prim"]},{"eiModule":["Prim"],"eiImportType":{"Implicit":[]},"eiImportedAs":null},{"eiModule":["Prelude"],"eiImportType":{"Explicit":[{"TypeRef":[{"start":[6,17],"name":"/home/harry/code/purescript/tests/purs/docs/src/Example.purs","end":[6,23]},"Unit",[]]}]},"eiImportedAs":null},{"eiModule":["Example2"],"eiImportType":{"Explicit":[{"ValueRef":[{"start":[7,18],"name":"/home/harry/code/purescript/tests/purs/docs/src/Example.purs","end":[7,21]},{"Ident":"one"}]}]},"eiImportedAs":null}],"efFixities":[],"efTypeFixities":[],"efDeclarations":[],"efSourceSpan":{"start":[1,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/Example.purs","end":[7,22]}} \ No newline at end of file
diff --git a/tests/purs/docs/output/Example2/docs.json b/tests/purs/docs/output/Example2/docs.json
index fb33892..d4dc4c0 100644
--- a/tests/purs/docs/output/Example2/docs.json
+++ b/tests/purs/docs/output/Example2/docs.json
@@ -1 +1 @@
-{"reExports":[],"name":"Example2","comments":null,"declarations":[{"children":[],"comments":null,"title":"one","info":{"declType":"value","type":{"annotation":[],"tag":"TypeConstructor","contents":[["Prim"],"Int"]}},"sourceSpan":{"start":[3,1],"name":"src/Example2.purs","end":[3,11]}},{"children":[],"comments":null,"title":"two","info":{"declType":"value","type":{"annotation":[],"tag":"TypeConstructor","contents":[["Prim"],"Int"]}},"sourceSpan":{"start":[6,1],"name":"src/Example2.purs","end":[6,11]}}]} \ No newline at end of file
+{"reExports":[],"name":"Example2","comments":null,"declarations":[{"children":[],"comments":null,"title":"one","info":{"declType":"value","type":{"annotation":[],"tag":"TypeConstructor","contents":[["Prim"],"Int"]}},"sourceSpan":{"start":[3,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/Example2.purs","end":[3,11]}},{"children":[],"comments":null,"title":"two","info":{"declType":"value","type":{"annotation":[],"tag":"TypeConstructor","contents":[["Prim"],"Int"]}},"sourceSpan":{"start":[6,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/Example2.purs","end":[6,11]}}]} \ No newline at end of file
diff --git a/tests/purs/docs/output/Example2/externs.json b/tests/purs/docs/output/Example2/externs.json
index 453bec3..162fa6d 100644
--- a/tests/purs/docs/output/Example2/externs.json
+++ b/tests/purs/docs/output/Example2/externs.json
@@ -1 +1 @@
-{"efVersion":"0.12.5","efModuleName":["Example2"],"efExports":[{"ValueRef":[{"start":[1,1],"name":"src/Example2.purs","end":[7,8]},{"Ident":"one"}]},{"ValueRef":[{"start":[1,1],"name":"src/Example2.purs","end":[7,8]},{"Ident":"two"}]}],"efImports":[{"eiModule":["Prim"],"eiImportType":{"Implicit":[]},"eiImportedAs":["Prim"]},{"eiModule":["Prim"],"eiImportType":{"Implicit":[]},"eiImportedAs":null}],"efFixities":[],"efTypeFixities":[],"efDeclarations":[{"EDValue":{"edValueName":{"Ident":"one"},"edValueType":{"annotation":[{"start":[3,8],"name":"src/Example2.purs","end":[3,11]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Int"]}}},{"EDValue":{"edValueName":{"Ident":"two"},"edValueType":{"annotation":[{"start":[6,8],"name":"src/Example2.purs","end":[6,11]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Int"]}}}],"efSourceSpan":{"start":[1,1],"name":"src/Example2.purs","end":[7,8]}} \ No newline at end of file
+{"efVersion":"0.13.2","efModuleName":["Example2"],"efExports":[{"ValueRef":[{"start":[1,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/Example2.purs","end":[7,8]},{"Ident":"one"}]},{"ValueRef":[{"start":[1,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/Example2.purs","end":[7,8]},{"Ident":"two"}]}],"efImports":[{"eiModule":["Prim"],"eiImportType":{"Implicit":[]},"eiImportedAs":["Prim"]},{"eiModule":["Prim"],"eiImportType":{"Implicit":[]},"eiImportedAs":null}],"efFixities":[],"efTypeFixities":[],"efDeclarations":[{"EDValue":{"edValueName":{"Ident":"one"},"edValueType":{"annotation":[{"start":[3,8],"name":"/home/harry/code/purescript/tests/purs/docs/src/Example2.purs","end":[3,11]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Int"]}}},{"EDValue":{"edValueName":{"Ident":"two"},"edValueType":{"annotation":[{"start":[6,8],"name":"/home/harry/code/purescript/tests/purs/docs/src/Example2.purs","end":[6,11]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Int"]}}}],"efSourceSpan":{"start":[1,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/Example2.purs","end":[7,8]}} \ No newline at end of file
diff --git a/tests/purs/docs/output/ExplicitExport/docs.json b/tests/purs/docs/output/ExplicitExport/docs.json
index f1369e6..ad2c995 100644
--- a/tests/purs/docs/output/ExplicitExport/docs.json
+++ b/tests/purs/docs/output/ExplicitExport/docs.json
@@ -1 +1 @@
-{"reExports":[],"name":"ExplicitExport","comments":null,"declarations":[{"children":[],"comments":null,"title":"one","info":{"declType":"value","type":{"annotation":[],"tag":"TypeConstructor","contents":[["Prim"],"Int"]}},"sourceSpan":{"start":[3,1],"name":"src/ExplicitExport.purs","end":[3,11]}}]} \ No newline at end of file
+{"reExports":[],"name":"ExplicitExport","comments":null,"declarations":[{"children":[],"comments":null,"title":"one","info":{"declType":"value","type":{"annotation":[],"tag":"TypeConstructor","contents":[["Prim"],"Int"]}},"sourceSpan":{"start":[3,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/ExplicitExport.purs","end":[3,11]}}]} \ No newline at end of file
diff --git a/tests/purs/docs/output/ExplicitExport/externs.json b/tests/purs/docs/output/ExplicitExport/externs.json
index 6a75bad..7c14b46 100644
--- a/tests/purs/docs/output/ExplicitExport/externs.json
+++ b/tests/purs/docs/output/ExplicitExport/externs.json
@@ -1 +1 @@
-{"efVersion":"0.12.5","efModuleName":["ExplicitExport"],"efExports":[{"ValueRef":[{"start":[1,1],"name":"src/ExplicitExport.purs","end":[7,8]},{"Ident":"one"}]}],"efImports":[{"eiModule":["Prim"],"eiImportType":{"Implicit":[]},"eiImportedAs":["Prim"]},{"eiModule":["Prim"],"eiImportType":{"Implicit":[]},"eiImportedAs":null}],"efFixities":[],"efTypeFixities":[],"efDeclarations":[{"EDValue":{"edValueName":{"Ident":"one"},"edValueType":{"annotation":[{"start":[3,8],"name":"src/ExplicitExport.purs","end":[3,11]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Int"]}}}],"efSourceSpan":{"start":[1,1],"name":"src/ExplicitExport.purs","end":[7,8]}} \ No newline at end of file
+{"efVersion":"0.13.2","efModuleName":["ExplicitExport"],"efExports":[{"ValueRef":[{"start":[1,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/ExplicitExport.purs","end":[7,8]},{"Ident":"one"}]}],"efImports":[{"eiModule":["Prim"],"eiImportType":{"Implicit":[]},"eiImportedAs":["Prim"]},{"eiModule":["Prim"],"eiImportType":{"Implicit":[]},"eiImportedAs":null}],"efFixities":[],"efTypeFixities":[],"efDeclarations":[{"EDValue":{"edValueName":{"Ident":"one"},"edValueType":{"annotation":[{"start":[3,8],"name":"/home/harry/code/purescript/tests/purs/docs/src/ExplicitExport.purs","end":[3,11]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Int"]}}}],"efSourceSpan":{"start":[1,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/ExplicitExport.purs","end":[7,8]}} \ No newline at end of file
diff --git a/tests/purs/docs/output/ExplicitTypeSignatures/docs.json b/tests/purs/docs/output/ExplicitTypeSignatures/docs.json
index 5d145cf..23253c0 100644
--- a/tests/purs/docs/output/ExplicitTypeSignatures/docs.json
+++ b/tests/purs/docs/output/ExplicitTypeSignatures/docs.json
@@ -1 +1 @@
-{"reExports":[],"name":"ExplicitTypeSignatures","comments":null,"declarations":[{"children":[],"comments":null,"title":"explicit","info":{"declType":"value","type":{"annotation":[],"tag":"ForAll","contents":["something",{"annotation":[],"tag":"TypeApp","contents":[{"annotation":[],"tag":"TypeApp","contents":[{"annotation":[],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[],"tag":"TypeVar","contents":"something"}]},{"annotation":[],"tag":"TypeVar","contents":"something"}]},null]}},"sourceSpan":{"start":[6,1],"name":"src/ExplicitTypeSignatures.purs","end":[6,53]}},{"children":[],"comments":null,"title":"anInt","info":{"declType":"value","type":{"annotation":[],"tag":"TypeConstructor","contents":[["Prim"],"Int"]}},"sourceSpan":{"start":[12,1],"name":"src/ExplicitTypeSignatures.purs","end":[12,11]}},{"children":[],"comments":null,"title":"aNumber","info":{"declType":"value","type":{"annotation":[],"tag":"TypeConstructor","contents":[["Prim"],"Number"]}},"sourceSpan":{"start":[16,1],"name":"src/ExplicitTypeSignatures.purs","end":[16,14]}}]} \ No newline at end of file
+{"reExports":[],"name":"ExplicitTypeSignatures","comments":null,"declarations":[{"children":[],"comments":null,"title":"explicit","info":{"declType":"value","type":{"annotation":[],"tag":"ForAll","contents":["something",{"annotation":[],"tag":"TypeApp","contents":[{"annotation":[],"tag":"TypeApp","contents":[{"annotation":[],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[],"tag":"TypeVar","contents":"something"}]},{"annotation":[],"tag":"TypeVar","contents":"something"}]},null]}},"sourceSpan":{"start":[6,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/ExplicitTypeSignatures.purs","end":[6,53]}},{"children":[],"comments":null,"title":"anInt","info":{"declType":"value","type":{"annotation":[],"tag":"TypeConstructor","contents":[["Prim"],"Int"]}},"sourceSpan":{"start":[12,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/ExplicitTypeSignatures.purs","end":[12,11]}},{"children":[],"comments":null,"title":"aNumber","info":{"declType":"value","type":{"annotation":[],"tag":"TypeConstructor","contents":[["Prim"],"Number"]}},"sourceSpan":{"start":[16,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/ExplicitTypeSignatures.purs","end":[16,14]}}]} \ No newline at end of file
diff --git a/tests/purs/docs/output/ExplicitTypeSignatures/externs.json b/tests/purs/docs/output/ExplicitTypeSignatures/externs.json
index e412bbf..a024055 100644
--- a/tests/purs/docs/output/ExplicitTypeSignatures/externs.json
+++ b/tests/purs/docs/output/ExplicitTypeSignatures/externs.json
@@ -1 +1 @@
-{"efVersion":"0.12.5","efModuleName":["ExplicitTypeSignatures"],"efExports":[{"ValueRef":[{"start":[2,1],"name":"src/ExplicitTypeSignatures.purs","end":[16,14]},{"Ident":"explicit"}]},{"ValueRef":[{"start":[2,1],"name":"src/ExplicitTypeSignatures.purs","end":[16,14]},{"Ident":"anInt"}]},{"ValueRef":[{"start":[2,1],"name":"src/ExplicitTypeSignatures.purs","end":[16,14]},{"Ident":"aNumber"}]}],"efImports":[{"eiModule":["Prim"],"eiImportType":{"Implicit":[]},"eiImportedAs":["Prim"]},{"eiModule":["Prim"],"eiImportType":{"Implicit":[]},"eiImportedAs":null}],"efFixities":[],"efTypeFixities":[],"efDeclarations":[{"EDValue":{"edValueName":{"Ident":"explicit"},"edValueType":{"annotation":[{"start":[6,13],"name":"src/ExplicitTypeSignatures.purs","end":[6,53]},[]],"tag":"ForAll","contents":["something",{"annotation":[{"start":[6,31],"name":"src/ExplicitTypeSignatures.purs","end":[6,53]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[6,31],"name":"src/ExplicitTypeSignatures.purs","end":[6,53]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[6,41],"name":"src/ExplicitTypeSignatures.purs","end":[6,43]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[6,31],"name":"src/ExplicitTypeSignatures.purs","end":[6,40]},[]],"tag":"TypeVar","contents":"something"}]},{"annotation":[{"start":[6,44],"name":"src/ExplicitTypeSignatures.purs","end":[6,53]},[]],"tag":"TypeVar","contents":"something"}]},0]}}},{"EDValue":{"edValueName":{"Ident":"anInt"},"edValueType":{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Int"]}}},{"EDValue":{"edValueName":{"Ident":"aNumber"},"edValueType":{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Number"]}}}],"efSourceSpan":{"start":[2,1],"name":"src/ExplicitTypeSignatures.purs","end":[16,14]}} \ No newline at end of file
+{"efVersion":"0.13.2","efModuleName":["ExplicitTypeSignatures"],"efExports":[{"ValueRef":[{"start":[2,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/ExplicitTypeSignatures.purs","end":[16,14]},{"Ident":"explicit"}]},{"ValueRef":[{"start":[2,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/ExplicitTypeSignatures.purs","end":[16,14]},{"Ident":"anInt"}]},{"ValueRef":[{"start":[2,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/ExplicitTypeSignatures.purs","end":[16,14]},{"Ident":"aNumber"}]}],"efImports":[{"eiModule":["Prim"],"eiImportType":{"Implicit":[]},"eiImportedAs":["Prim"]},{"eiModule":["Prim"],"eiImportType":{"Implicit":[]},"eiImportedAs":null}],"efFixities":[],"efTypeFixities":[],"efDeclarations":[{"EDValue":{"edValueName":{"Ident":"explicit"},"edValueType":{"annotation":[{"start":[6,13],"name":"/home/harry/code/purescript/tests/purs/docs/src/ExplicitTypeSignatures.purs","end":[6,53]},[]],"tag":"ForAll","contents":["something",{"annotation":[{"start":[6,31],"name":"/home/harry/code/purescript/tests/purs/docs/src/ExplicitTypeSignatures.purs","end":[6,53]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[6,31],"name":"/home/harry/code/purescript/tests/purs/docs/src/ExplicitTypeSignatures.purs","end":[6,53]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[6,41],"name":"/home/harry/code/purescript/tests/purs/docs/src/ExplicitTypeSignatures.purs","end":[6,43]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[6,31],"name":"/home/harry/code/purescript/tests/purs/docs/src/ExplicitTypeSignatures.purs","end":[6,40]},[]],"tag":"TypeVar","contents":"something"}]},{"annotation":[{"start":[6,44],"name":"/home/harry/code/purescript/tests/purs/docs/src/ExplicitTypeSignatures.purs","end":[6,53]},[]],"tag":"TypeVar","contents":"something"}]},0]}}},{"EDValue":{"edValueName":{"Ident":"anInt"},"edValueType":{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Int"]}}},{"EDValue":{"edValueName":{"Ident":"aNumber"},"edValueType":{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Number"]}}}],"efSourceSpan":{"start":[2,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/ExplicitTypeSignatures.purs","end":[16,14]}} \ No newline at end of file
diff --git a/tests/purs/docs/output/ImportedTwice/externs.json b/tests/purs/docs/output/ImportedTwice/externs.json
index a59253e..408849c 100644
--- a/tests/purs/docs/output/ImportedTwice/externs.json
+++ b/tests/purs/docs/output/ImportedTwice/externs.json
@@ -1 +1 @@
-{"efVersion":"0.12.5","efModuleName":["ImportedTwice"],"efExports":[{"ReExportRef":[{"start":[6,1],"name":"src/ImportedTwice.purs","end":[13,22]},{"exportSourceImportedFrom":["ImportedTwiceB"],"exportSourceDefinedIn":["ImportedTwiceB"]},{"ValueRef":[{"start":[6,1],"name":"src/ImportedTwice.purs","end":[13,22]},{"Ident":"foo"}]}]},{"ModuleRef":[{"start":[7,5],"name":"src/ImportedTwice.purs","end":[7,26]},["ImportedTwiceA"]]},{"ModuleRef":[{"start":[8,5],"name":"src/ImportedTwice.purs","end":[8,26]},["ImportedTwiceB"]]}],"efImports":[{"eiModule":["Prim"],"eiImportType":{"Implicit":[]},"eiImportedAs":["Prim"]},{"eiModule":["Prim"],"eiImportType":{"Implicit":[]},"eiImportedAs":null},{"eiModule":["ImportedTwiceA"],"eiImportType":{"Implicit":[]},"eiImportedAs":null},{"eiModule":["ImportedTwiceB"],"eiImportType":{"Implicit":[]},"eiImportedAs":null}],"efFixities":[],"efTypeFixities":[],"efDeclarations":[],"efSourceSpan":{"start":[6,1],"name":"src/ImportedTwice.purs","end":[13,22]}} \ No newline at end of file
+{"efVersion":"0.13.2","efModuleName":["ImportedTwice"],"efExports":[{"ReExportRef":[{"start":[6,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/ImportedTwice.purs","end":[13,22]},{"exportSourceImportedFrom":["ImportedTwiceB"],"exportSourceDefinedIn":["ImportedTwiceB"]},{"ValueRef":[{"start":[6,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/ImportedTwice.purs","end":[13,22]},{"Ident":"foo"}]}]},{"ModuleRef":[{"start":[7,5],"name":"/home/harry/code/purescript/tests/purs/docs/src/ImportedTwice.purs","end":[7,26]},["ImportedTwiceA"]]},{"ModuleRef":[{"start":[8,5],"name":"/home/harry/code/purescript/tests/purs/docs/src/ImportedTwice.purs","end":[8,26]},["ImportedTwiceB"]]}],"efImports":[{"eiModule":["Prim"],"eiImportType":{"Implicit":[]},"eiImportedAs":["Prim"]},{"eiModule":["Prim"],"eiImportType":{"Implicit":[]},"eiImportedAs":null},{"eiModule":["ImportedTwiceA"],"eiImportType":{"Implicit":[]},"eiImportedAs":null},{"eiModule":["ImportedTwiceB"],"eiImportType":{"Implicit":[]},"eiImportedAs":null}],"efFixities":[],"efTypeFixities":[],"efDeclarations":[],"efSourceSpan":{"start":[6,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/ImportedTwice.purs","end":[13,22]}} \ No newline at end of file
diff --git a/tests/purs/docs/output/ImportedTwiceA/externs.json b/tests/purs/docs/output/ImportedTwiceA/externs.json
index 2368ac7..2475783 100644
--- a/tests/purs/docs/output/ImportedTwiceA/externs.json
+++ b/tests/purs/docs/output/ImportedTwiceA/externs.json
@@ -1 +1 @@
-{"efVersion":"0.12.5","efModuleName":["ImportedTwiceA"],"efExports":[{"ReExportRef":[{"start":[1,1],"name":"src/ImportedTwiceA.purs","end":[8,8]},{"exportSourceImportedFrom":["ImportedTwiceB"],"exportSourceDefinedIn":["ImportedTwiceB"]},{"ValueRef":[{"start":[1,1],"name":"src/ImportedTwiceA.purs","end":[8,8]},{"Ident":"foo"}]}]},{"ModuleRef":[{"start":[2,5],"name":"src/ImportedTwiceA.purs","end":[2,26]},["ImportedTwiceB"]]}],"efImports":[{"eiModule":["Prim"],"eiImportType":{"Implicit":[]},"eiImportedAs":["Prim"]},{"eiModule":["Prim"],"eiImportType":{"Implicit":[]},"eiImportedAs":null},{"eiModule":["ImportedTwiceB"],"eiImportType":{"Implicit":[]},"eiImportedAs":null}],"efFixities":[],"efTypeFixities":[],"efDeclarations":[],"efSourceSpan":{"start":[1,1],"name":"src/ImportedTwiceA.purs","end":[8,8]}} \ No newline at end of file
+{"efVersion":"0.13.2","efModuleName":["ImportedTwiceA"],"efExports":[{"ReExportRef":[{"start":[1,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/ImportedTwiceA.purs","end":[8,8]},{"exportSourceImportedFrom":["ImportedTwiceB"],"exportSourceDefinedIn":["ImportedTwiceB"]},{"ValueRef":[{"start":[1,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/ImportedTwiceA.purs","end":[8,8]},{"Ident":"foo"}]}]},{"ModuleRef":[{"start":[2,5],"name":"/home/harry/code/purescript/tests/purs/docs/src/ImportedTwiceA.purs","end":[2,26]},["ImportedTwiceB"]]}],"efImports":[{"eiModule":["Prim"],"eiImportType":{"Implicit":[]},"eiImportedAs":["Prim"]},{"eiModule":["Prim"],"eiImportType":{"Implicit":[]},"eiImportedAs":null},{"eiModule":["ImportedTwiceB"],"eiImportType":{"Implicit":[]},"eiImportedAs":null}],"efFixities":[],"efTypeFixities":[],"efDeclarations":[],"efSourceSpan":{"start":[1,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/ImportedTwiceA.purs","end":[8,8]}} \ No newline at end of file
diff --git a/tests/purs/docs/output/ImportedTwiceB/docs.json b/tests/purs/docs/output/ImportedTwiceB/docs.json
index e53ad04..3cb8277 100644
--- a/tests/purs/docs/output/ImportedTwiceB/docs.json
+++ b/tests/purs/docs/output/ImportedTwiceB/docs.json
@@ -1 +1 @@
-{"reExports":[],"name":"ImportedTwiceB","comments":null,"declarations":[{"children":[],"comments":null,"title":"foo","info":{"declType":"value","type":{"annotation":[],"tag":"TypeConstructor","contents":[["Prim"],"Int"]}},"sourceSpan":{"start":[3,1],"name":"src/ImportedTwiceB.purs","end":[3,11]}}]} \ No newline at end of file
+{"reExports":[],"name":"ImportedTwiceB","comments":null,"declarations":[{"children":[],"comments":null,"title":"foo","info":{"declType":"value","type":{"annotation":[],"tag":"TypeConstructor","contents":[["Prim"],"Int"]}},"sourceSpan":{"start":[3,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/ImportedTwiceB.purs","end":[3,11]}}]} \ No newline at end of file
diff --git a/tests/purs/docs/output/ImportedTwiceB/externs.json b/tests/purs/docs/output/ImportedTwiceB/externs.json
index 79f8f7d..6bc3413 100644
--- a/tests/purs/docs/output/ImportedTwiceB/externs.json
+++ b/tests/purs/docs/output/ImportedTwiceB/externs.json
@@ -1 +1 @@
-{"efVersion":"0.12.5","efModuleName":["ImportedTwiceB"],"efExports":[{"ValueRef":[{"start":[1,1],"name":"src/ImportedTwiceB.purs","end":[4,8]},{"Ident":"foo"}]}],"efImports":[{"eiModule":["Prim"],"eiImportType":{"Implicit":[]},"eiImportedAs":["Prim"]},{"eiModule":["Prim"],"eiImportType":{"Implicit":[]},"eiImportedAs":null}],"efFixities":[],"efTypeFixities":[],"efDeclarations":[{"EDValue":{"edValueName":{"Ident":"foo"},"edValueType":{"annotation":[{"start":[3,8],"name":"src/ImportedTwiceB.purs","end":[3,11]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Int"]}}}],"efSourceSpan":{"start":[1,1],"name":"src/ImportedTwiceB.purs","end":[4,8]}} \ No newline at end of file
+{"efVersion":"0.13.2","efModuleName":["ImportedTwiceB"],"efExports":[{"ValueRef":[{"start":[1,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/ImportedTwiceB.purs","end":[4,8]},{"Ident":"foo"}]}],"efImports":[{"eiModule":["Prim"],"eiImportType":{"Implicit":[]},"eiImportedAs":["Prim"]},{"eiModule":["Prim"],"eiImportType":{"Implicit":[]},"eiImportedAs":null}],"efFixities":[],"efTypeFixities":[],"efDeclarations":[{"EDValue":{"edValueName":{"Ident":"foo"},"edValueType":{"annotation":[{"start":[3,8],"name":"/home/harry/code/purescript/tests/purs/docs/src/ImportedTwiceB.purs","end":[3,11]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Int"]}}}],"efSourceSpan":{"start":[1,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/ImportedTwiceB.purs","end":[4,8]}} \ No newline at end of file
diff --git a/tests/purs/docs/output/MultiVirtual/externs.json b/tests/purs/docs/output/MultiVirtual/externs.json
index a564e79..a1aae2c 100644
--- a/tests/purs/docs/output/MultiVirtual/externs.json
+++ b/tests/purs/docs/output/MultiVirtual/externs.json
@@ -1 +1 @@
-{"efVersion":"0.12.5","efModuleName":["MultiVirtual"],"efExports":[{"ReExportRef":[{"start":[1,1],"name":"src/MultiVirtual.purs","end":[6,26]},{"exportSourceImportedFrom":["MultiVirtual2"],"exportSourceDefinedIn":["MultiVirtual2"]},{"ValueRef":[{"start":[1,1],"name":"src/MultiVirtual.purs","end":[6,26]},{"Ident":"bar"}]}]},{"ReExportRef":[{"start":[1,1],"name":"src/MultiVirtual.purs","end":[6,26]},{"exportSourceImportedFrom":["MultiVirtual2"],"exportSourceDefinedIn":["MultiVirtual3"]},{"ValueRef":[{"start":[1,1],"name":"src/MultiVirtual.purs","end":[6,26]},{"Ident":"baz"}]}]},{"ReExportRef":[{"start":[1,1],"name":"src/MultiVirtual.purs","end":[6,26]},{"exportSourceImportedFrom":["MultiVirtual1"],"exportSourceDefinedIn":["MultiVirtual1"]},{"ValueRef":[{"start":[1,1],"name":"src/MultiVirtual.purs","end":[6,26]},{"Ident":"foo"}]}]},{"ModuleRef":[{"start":[2,5],"name":"src/MultiVirtual.purs","end":[2,13]},["X"]]}],"efImports":[{"eiModule":["Prim"],"eiImportType":{"Implicit":[]},"eiImportedAs":["Prim"]},{"eiModule":["Prim"],"eiImportType":{"Implicit":[]},"eiImportedAs":null},{"eiModule":["MultiVirtual1"],"eiImportType":{"Implicit":[]},"eiImportedAs":["X"]},{"eiModule":["MultiVirtual2"],"eiImportType":{"Implicit":[]},"eiImportedAs":["X"]}],"efFixities":[],"efTypeFixities":[],"efDeclarations":[],"efSourceSpan":{"start":[1,1],"name":"src/MultiVirtual.purs","end":[6,26]}} \ No newline at end of file
+{"efVersion":"0.13.2","efModuleName":["MultiVirtual"],"efExports":[{"ReExportRef":[{"start":[1,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/MultiVirtual.purs","end":[6,26]},{"exportSourceImportedFrom":["MultiVirtual2"],"exportSourceDefinedIn":["MultiVirtual2"]},{"ValueRef":[{"start":[1,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/MultiVirtual.purs","end":[6,26]},{"Ident":"bar"}]}]},{"ReExportRef":[{"start":[1,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/MultiVirtual.purs","end":[6,26]},{"exportSourceImportedFrom":["MultiVirtual2"],"exportSourceDefinedIn":["MultiVirtual3"]},{"ValueRef":[{"start":[1,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/MultiVirtual.purs","end":[6,26]},{"Ident":"baz"}]}]},{"ReExportRef":[{"start":[1,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/MultiVirtual.purs","end":[6,26]},{"exportSourceImportedFrom":["MultiVirtual1"],"exportSourceDefinedIn":["MultiVirtual1"]},{"ValueRef":[{"start":[1,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/MultiVirtual.purs","end":[6,26]},{"Ident":"foo"}]}]},{"ModuleRef":[{"start":[2,5],"name":"/home/harry/code/purescript/tests/purs/docs/src/MultiVirtual.purs","end":[2,13]},["X"]]}],"efImports":[{"eiModule":["Prim"],"eiImportType":{"Implicit":[]},"eiImportedAs":["Prim"]},{"eiModule":["Prim"],"eiImportType":{"Implicit":[]},"eiImportedAs":null},{"eiModule":["MultiVirtual1"],"eiImportType":{"Implicit":[]},"eiImportedAs":["X"]},{"eiModule":["MultiVirtual2"],"eiImportType":{"Implicit":[]},"eiImportedAs":["X"]}],"efFixities":[],"efTypeFixities":[],"efDeclarations":[],"efSourceSpan":{"start":[1,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/MultiVirtual.purs","end":[6,26]}} \ No newline at end of file
diff --git a/tests/purs/docs/output/MultiVirtual1/docs.json b/tests/purs/docs/output/MultiVirtual1/docs.json
index 654b27c..5a7dfc4 100644
--- a/tests/purs/docs/output/MultiVirtual1/docs.json
+++ b/tests/purs/docs/output/MultiVirtual1/docs.json
@@ -1 +1 @@
-{"reExports":[],"name":"MultiVirtual1","comments":null,"declarations":[{"children":[],"comments":null,"title":"foo","info":{"declType":"value","type":{"annotation":[],"tag":"TypeConstructor","contents":[["Prim"],"Int"]}},"sourceSpan":{"start":[3,1],"name":"src/MultiVirtual1.purs","end":[3,11]}}]} \ No newline at end of file
+{"reExports":[],"name":"MultiVirtual1","comments":null,"declarations":[{"children":[],"comments":null,"title":"foo","info":{"declType":"value","type":{"annotation":[],"tag":"TypeConstructor","contents":[["Prim"],"Int"]}},"sourceSpan":{"start":[3,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/MultiVirtual1.purs","end":[3,11]}}]} \ No newline at end of file
diff --git a/tests/purs/docs/output/MultiVirtual1/externs.json b/tests/purs/docs/output/MultiVirtual1/externs.json
index 5dd78f6..7d9e7dd 100644
--- a/tests/purs/docs/output/MultiVirtual1/externs.json
+++ b/tests/purs/docs/output/MultiVirtual1/externs.json
@@ -1 +1 @@
-{"efVersion":"0.12.5","efModuleName":["MultiVirtual1"],"efExports":[{"ValueRef":[{"start":[1,1],"name":"src/MultiVirtual1.purs","end":[4,8]},{"Ident":"foo"}]}],"efImports":[{"eiModule":["Prim"],"eiImportType":{"Implicit":[]},"eiImportedAs":["Prim"]},{"eiModule":["Prim"],"eiImportType":{"Implicit":[]},"eiImportedAs":null}],"efFixities":[],"efTypeFixities":[],"efDeclarations":[{"EDValue":{"edValueName":{"Ident":"foo"},"edValueType":{"annotation":[{"start":[3,8],"name":"src/MultiVirtual1.purs","end":[3,11]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Int"]}}}],"efSourceSpan":{"start":[1,1],"name":"src/MultiVirtual1.purs","end":[4,8]}} \ No newline at end of file
+{"efVersion":"0.13.2","efModuleName":["MultiVirtual1"],"efExports":[{"ValueRef":[{"start":[1,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/MultiVirtual1.purs","end":[4,8]},{"Ident":"foo"}]}],"efImports":[{"eiModule":["Prim"],"eiImportType":{"Implicit":[]},"eiImportedAs":["Prim"]},{"eiModule":["Prim"],"eiImportType":{"Implicit":[]},"eiImportedAs":null}],"efFixities":[],"efTypeFixities":[],"efDeclarations":[{"EDValue":{"edValueName":{"Ident":"foo"},"edValueType":{"annotation":[{"start":[3,8],"name":"/home/harry/code/purescript/tests/purs/docs/src/MultiVirtual1.purs","end":[3,11]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Int"]}}}],"efSourceSpan":{"start":[1,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/MultiVirtual1.purs","end":[4,8]}} \ No newline at end of file
diff --git a/tests/purs/docs/output/MultiVirtual2/docs.json b/tests/purs/docs/output/MultiVirtual2/docs.json
index 3061c39..af5c6e8 100644
--- a/tests/purs/docs/output/MultiVirtual2/docs.json
+++ b/tests/purs/docs/output/MultiVirtual2/docs.json
@@ -1 +1 @@
-{"reExports":[],"name":"MultiVirtual2","comments":null,"declarations":[{"children":[],"comments":null,"title":"bar","info":{"declType":"value","type":{"annotation":[],"tag":"TypeConstructor","contents":[["Prim"],"Int"]}},"sourceSpan":{"start":[8,1],"name":"src/MultiVirtual2.purs","end":[8,11]}}]} \ No newline at end of file
+{"reExports":[],"name":"MultiVirtual2","comments":null,"declarations":[{"children":[],"comments":null,"title":"bar","info":{"declType":"value","type":{"annotation":[],"tag":"TypeConstructor","contents":[["Prim"],"Int"]}},"sourceSpan":{"start":[8,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/MultiVirtual2.purs","end":[8,11]}}]} \ No newline at end of file
diff --git a/tests/purs/docs/output/MultiVirtual2/externs.json b/tests/purs/docs/output/MultiVirtual2/externs.json
index 7e28881..e836284 100644
--- a/tests/purs/docs/output/MultiVirtual2/externs.json
+++ b/tests/purs/docs/output/MultiVirtual2/externs.json
@@ -1 +1 @@
-{"efVersion":"0.12.5","efModuleName":["MultiVirtual2"],"efExports":[{"ValueRef":[{"start":[1,1],"name":"src/MultiVirtual2.purs","end":[9,8]},{"Ident":"bar"}]},{"ReExportRef":[{"start":[1,1],"name":"src/MultiVirtual2.purs","end":[9,8]},{"exportSourceImportedFrom":["MultiVirtual3"],"exportSourceDefinedIn":["MultiVirtual3"]},{"ValueRef":[{"start":[1,1],"name":"src/MultiVirtual2.purs","end":[9,8]},{"Ident":"baz"}]}]},{"ModuleRef":[{"start":[2,5],"name":"src/MultiVirtual2.purs","end":[2,25]},["MultiVirtual2"]]},{"ModuleRef":[{"start":[3,5],"name":"src/MultiVirtual2.purs","end":[3,25]},["MultiVirtual3"]]}],"efImports":[{"eiModule":["Prim"],"eiImportType":{"Implicit":[]},"eiImportedAs":["Prim"]},{"eiModule":["Prim"],"eiImportType":{"Implicit":[]},"eiImportedAs":null},{"eiModule":["MultiVirtual3"],"eiImportType":{"Implicit":[]},"eiImportedAs":null}],"efFixities":[],"efTypeFixities":[],"efDeclarations":[{"EDValue":{"edValueName":{"Ident":"bar"},"edValueType":{"annotation":[{"start":[8,8],"name":"src/MultiVirtual2.purs","end":[8,11]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Int"]}}}],"efSourceSpan":{"start":[1,1],"name":"src/MultiVirtual2.purs","end":[9,8]}} \ No newline at end of file
+{"efVersion":"0.13.2","efModuleName":["MultiVirtual2"],"efExports":[{"ValueRef":[{"start":[1,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/MultiVirtual2.purs","end":[9,8]},{"Ident":"bar"}]},{"ReExportRef":[{"start":[1,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/MultiVirtual2.purs","end":[9,8]},{"exportSourceImportedFrom":["MultiVirtual3"],"exportSourceDefinedIn":["MultiVirtual3"]},{"ValueRef":[{"start":[1,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/MultiVirtual2.purs","end":[9,8]},{"Ident":"baz"}]}]},{"ModuleRef":[{"start":[2,5],"name":"/home/harry/code/purescript/tests/purs/docs/src/MultiVirtual2.purs","end":[2,25]},["MultiVirtual2"]]},{"ModuleRef":[{"start":[3,5],"name":"/home/harry/code/purescript/tests/purs/docs/src/MultiVirtual2.purs","end":[3,25]},["MultiVirtual3"]]}],"efImports":[{"eiModule":["Prim"],"eiImportType":{"Implicit":[]},"eiImportedAs":["Prim"]},{"eiModule":["Prim"],"eiImportType":{"Implicit":[]},"eiImportedAs":null},{"eiModule":["MultiVirtual3"],"eiImportType":{"Implicit":[]},"eiImportedAs":null}],"efFixities":[],"efTypeFixities":[],"efDeclarations":[{"EDValue":{"edValueName":{"Ident":"bar"},"edValueType":{"annotation":[{"start":[8,8],"name":"/home/harry/code/purescript/tests/purs/docs/src/MultiVirtual2.purs","end":[8,11]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Int"]}}}],"efSourceSpan":{"start":[1,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/MultiVirtual2.purs","end":[9,8]}} \ No newline at end of file
diff --git a/tests/purs/docs/output/MultiVirtual3/docs.json b/tests/purs/docs/output/MultiVirtual3/docs.json
index c0804a2..fb14bc6 100644
--- a/tests/purs/docs/output/MultiVirtual3/docs.json
+++ b/tests/purs/docs/output/MultiVirtual3/docs.json
@@ -1 +1 @@
-{"reExports":[],"name":"MultiVirtual3","comments":null,"declarations":[{"children":[],"comments":null,"title":"baz","info":{"declType":"value","type":{"annotation":[],"tag":"TypeConstructor","contents":[["Prim"],"Int"]}},"sourceSpan":{"start":[3,1],"name":"src/MultiVirtual3.purs","end":[3,11]}}]} \ No newline at end of file
+{"reExports":[],"name":"MultiVirtual3","comments":null,"declarations":[{"children":[],"comments":null,"title":"baz","info":{"declType":"value","type":{"annotation":[],"tag":"TypeConstructor","contents":[["Prim"],"Int"]}},"sourceSpan":{"start":[3,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/MultiVirtual3.purs","end":[3,11]}}]} \ No newline at end of file
diff --git a/tests/purs/docs/output/MultiVirtual3/externs.json b/tests/purs/docs/output/MultiVirtual3/externs.json
index be3d50f..b3eee96 100644
--- a/tests/purs/docs/output/MultiVirtual3/externs.json
+++ b/tests/purs/docs/output/MultiVirtual3/externs.json
@@ -1 +1 @@
-{"efVersion":"0.12.5","efModuleName":["MultiVirtual3"],"efExports":[{"ValueRef":[{"start":[1,1],"name":"src/MultiVirtual3.purs","end":[4,8]},{"Ident":"baz"}]}],"efImports":[{"eiModule":["Prim"],"eiImportType":{"Implicit":[]},"eiImportedAs":["Prim"]},{"eiModule":["Prim"],"eiImportType":{"Implicit":[]},"eiImportedAs":null}],"efFixities":[],"efTypeFixities":[],"efDeclarations":[{"EDValue":{"edValueName":{"Ident":"baz"},"edValueType":{"annotation":[{"start":[3,8],"name":"src/MultiVirtual3.purs","end":[3,11]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Int"]}}}],"efSourceSpan":{"start":[1,1],"name":"src/MultiVirtual3.purs","end":[4,8]}} \ No newline at end of file
+{"efVersion":"0.13.2","efModuleName":["MultiVirtual3"],"efExports":[{"ValueRef":[{"start":[1,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/MultiVirtual3.purs","end":[4,8]},{"Ident":"baz"}]}],"efImports":[{"eiModule":["Prim"],"eiImportType":{"Implicit":[]},"eiImportedAs":["Prim"]},{"eiModule":["Prim"],"eiImportType":{"Implicit":[]},"eiImportedAs":null}],"efFixities":[],"efTypeFixities":[],"efDeclarations":[{"EDValue":{"edValueName":{"Ident":"baz"},"edValueType":{"annotation":[{"start":[3,8],"name":"/home/harry/code/purescript/tests/purs/docs/src/MultiVirtual3.purs","end":[3,11]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Int"]}}}],"efSourceSpan":{"start":[1,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/MultiVirtual3.purs","end":[4,8]}} \ No newline at end of file
diff --git a/tests/purs/docs/output/NewOperators/externs.json b/tests/purs/docs/output/NewOperators/externs.json
index 7e1082f..747a2b4 100644
--- a/tests/purs/docs/output/NewOperators/externs.json
+++ b/tests/purs/docs/output/NewOperators/externs.json
@@ -1 +1 @@
-{"efVersion":"0.12.5","efModuleName":["NewOperators"],"efExports":[{"ReExportRef":[{"start":[1,1],"name":"src/NewOperators.purs","end":[5,21]},{"exportSourceImportedFrom":["NewOperators2"],"exportSourceDefinedIn":["NewOperators2"]},{"ValueRef":[{"start":[1,1],"name":"src/NewOperators.purs","end":[5,21]},{"Ident":"_compose"}]}]},{"ReExportRef":[{"start":[1,1],"name":"src/NewOperators.purs","end":[5,21]},{"exportSourceImportedFrom":["NewOperators2"],"exportSourceDefinedIn":["NewOperators2"]},{"ValueOpRef":[{"start":[1,1],"name":"src/NewOperators.purs","end":[5,21]},">>>"]}]},{"ModuleRef":[{"start":[2,5],"name":"src/NewOperators.purs","end":[2,25]},["NewOperators2"]]}],"efImports":[{"eiModule":["Prim"],"eiImportType":{"Implicit":[]},"eiImportedAs":["Prim"]},{"eiModule":["Prim"],"eiImportType":{"Implicit":[]},"eiImportedAs":null},{"eiModule":["NewOperators2"],"eiImportType":{"Implicit":[]},"eiImportedAs":null}],"efFixities":[],"efTypeFixities":[],"efDeclarations":[],"efSourceSpan":{"start":[1,1],"name":"src/NewOperators.purs","end":[5,21]}} \ No newline at end of file
+{"efVersion":"0.13.2","efModuleName":["NewOperators"],"efExports":[{"ReExportRef":[{"start":[1,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/NewOperators.purs","end":[5,21]},{"exportSourceImportedFrom":["NewOperators2"],"exportSourceDefinedIn":["NewOperators2"]},{"ValueRef":[{"start":[1,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/NewOperators.purs","end":[5,21]},{"Ident":"_compose"}]}]},{"ReExportRef":[{"start":[1,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/NewOperators.purs","end":[5,21]},{"exportSourceImportedFrom":["NewOperators2"],"exportSourceDefinedIn":["NewOperators2"]},{"ValueOpRef":[{"start":[1,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/NewOperators.purs","end":[5,21]},">>>"]}]},{"ModuleRef":[{"start":[2,5],"name":"/home/harry/code/purescript/tests/purs/docs/src/NewOperators.purs","end":[2,25]},["NewOperators2"]]}],"efImports":[{"eiModule":["Prim"],"eiImportType":{"Implicit":[]},"eiImportedAs":["Prim"]},{"eiModule":["Prim"],"eiImportType":{"Implicit":[]},"eiImportedAs":null},{"eiModule":["NewOperators2"],"eiImportType":{"Implicit":[]},"eiImportedAs":null}],"efFixities":[],"efTypeFixities":[],"efDeclarations":[],"efSourceSpan":{"start":[1,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/NewOperators.purs","end":[5,21]}} \ No newline at end of file
diff --git a/tests/purs/docs/output/NewOperators2/docs.json b/tests/purs/docs/output/NewOperators2/docs.json
index 9451659..3c39847 100644
--- a/tests/purs/docs/output/NewOperators2/docs.json
+++ b/tests/purs/docs/output/NewOperators2/docs.json
@@ -1 +1 @@
-{"reExports":[],"name":"NewOperators2","comments":null,"declarations":[{"children":[],"comments":null,"title":"(>>>)","info":{"declType":"alias","alias":[["NewOperators2"],{"Right":{"Left":{"Ident":"_compose"}}}],"fixity":{"associativity":"infixl","precedence":8}},"sourceSpan":{"start":[3,1],"name":"src/NewOperators2.purs","end":[3,25]}},{"children":[],"comments":null,"title":"_compose","info":{"declType":"value","type":{"annotation":[],"tag":"ForAll","contents":["c",{"annotation":[],"tag":"ForAll","contents":["b",{"annotation":[],"tag":"ForAll","contents":["a",{"annotation":[],"tag":"TypeApp","contents":[{"annotation":[],"tag":"TypeApp","contents":[{"annotation":[],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[],"tag":"ParensInType","contents":{"annotation":[],"tag":"TypeApp","contents":[{"annotation":[],"tag":"TypeApp","contents":[{"annotation":[],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[],"tag":"TypeVar","contents":"b"}]},{"annotation":[],"tag":"TypeVar","contents":"c"}]}}]},{"annotation":[],"tag":"TypeApp","contents":[{"annotation":[],"tag":"TypeApp","contents":[{"annotation":[],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[],"tag":"ParensInType","contents":{"annotation":[],"tag":"TypeApp","contents":[{"annotation":[],"tag":"TypeApp","contents":[{"annotation":[],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[],"tag":"TypeVar","contents":"a"}]},{"annotation":[],"tag":"TypeVar","contents":"b"}]}}]},{"annotation":[],"tag":"ParensInType","contents":{"annotation":[],"tag":"TypeApp","contents":[{"annotation":[],"tag":"TypeApp","contents":[{"annotation":[],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[],"tag":"TypeVar","contents":"a"}]},{"annotation":[],"tag":"TypeVar","contents":"c"}]}}]}]},null]},null]},null]}},"sourceSpan":{"start":[5,1],"name":"src/NewOperators2.purs","end":[5,59]}}]} \ No newline at end of file
+{"reExports":[],"name":"NewOperators2","comments":null,"declarations":[{"children":[],"comments":null,"title":"(>>>)","info":{"declType":"alias","alias":[["NewOperators2"],{"Right":{"Left":{"Ident":"_compose"}}}],"fixity":{"associativity":"infixl","precedence":8}},"sourceSpan":{"start":[3,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/NewOperators2.purs","end":[3,25]}},{"children":[],"comments":null,"title":"_compose","info":{"declType":"value","type":{"annotation":[],"tag":"ForAll","contents":["c",{"annotation":[],"tag":"ForAll","contents":["b",{"annotation":[],"tag":"ForAll","contents":["a",{"annotation":[],"tag":"TypeApp","contents":[{"annotation":[],"tag":"TypeApp","contents":[{"annotation":[],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[],"tag":"ParensInType","contents":{"annotation":[],"tag":"TypeApp","contents":[{"annotation":[],"tag":"TypeApp","contents":[{"annotation":[],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[],"tag":"TypeVar","contents":"b"}]},{"annotation":[],"tag":"TypeVar","contents":"c"}]}}]},{"annotation":[],"tag":"TypeApp","contents":[{"annotation":[],"tag":"TypeApp","contents":[{"annotation":[],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[],"tag":"ParensInType","contents":{"annotation":[],"tag":"TypeApp","contents":[{"annotation":[],"tag":"TypeApp","contents":[{"annotation":[],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[],"tag":"TypeVar","contents":"a"}]},{"annotation":[],"tag":"TypeVar","contents":"b"}]}}]},{"annotation":[],"tag":"ParensInType","contents":{"annotation":[],"tag":"TypeApp","contents":[{"annotation":[],"tag":"TypeApp","contents":[{"annotation":[],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[],"tag":"TypeVar","contents":"a"}]},{"annotation":[],"tag":"TypeVar","contents":"c"}]}}]}]},null]},null]},null]}},"sourceSpan":{"start":[5,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/NewOperators2.purs","end":[5,59]}}]} \ No newline at end of file
diff --git a/tests/purs/docs/output/NewOperators2/externs.json b/tests/purs/docs/output/NewOperators2/externs.json
index 35dd750..b5d9af1 100644
--- a/tests/purs/docs/output/NewOperators2/externs.json
+++ b/tests/purs/docs/output/NewOperators2/externs.json
@@ -1 +1 @@
-{"efVersion":"0.12.5","efModuleName":["NewOperators2"],"efExports":[{"ValueOpRef":[{"start":[1,1],"name":"src/NewOperators2.purs","end":[6,25]},">>>"]},{"ValueRef":[{"start":[1,1],"name":"src/NewOperators2.purs","end":[6,25]},{"Ident":"_compose"}]}],"efImports":[{"eiModule":["Prim"],"eiImportType":{"Implicit":[]},"eiImportedAs":["Prim"]},{"eiModule":["Prim"],"eiImportType":{"Implicit":[]},"eiImportedAs":null}],"efFixities":[{"efAssociativity":"infixl","efPrecedence":8,"efOperator":">>>","efAlias":[["NewOperators2"],{"Left":{"Ident":"_compose"}}]}],"efTypeFixities":[],"efDeclarations":[{"EDValue":{"edValueName":{"Ident":"_compose"},"edValueType":{"annotation":[{"start":[5,13],"name":"src/NewOperators2.purs","end":[5,59]},[]],"tag":"ForAll","contents":["c",{"annotation":[{"start":[5,20],"name":"src/NewOperators2.purs","end":[5,59]},[]],"tag":"ForAll","contents":["b",{"annotation":[{"start":[5,20],"name":"src/NewOperators2.purs","end":[5,59]},[]],"tag":"ForAll","contents":["a",{"annotation":[{"start":[5,27],"name":"src/NewOperators2.purs","end":[5,59]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[5,27],"name":"src/NewOperators2.purs","end":[5,59]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[5,36],"name":"src/NewOperators2.purs","end":[5,38]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[5,28],"name":"src/NewOperators2.purs","end":[5,34]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[5,28],"name":"src/NewOperators2.purs","end":[5,34]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[5,30],"name":"src/NewOperators2.purs","end":[5,32]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[5,28],"name":"src/NewOperators2.purs","end":[5,29]},[]],"tag":"TypeVar","contents":"b"}]},{"annotation":[{"start":[5,33],"name":"src/NewOperators2.purs","end":[5,34]},[]],"tag":"TypeVar","contents":"c"}]}]},{"annotation":[{"start":[5,39],"name":"src/NewOperators2.purs","end":[5,59]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[5,39],"name":"src/NewOperators2.purs","end":[5,59]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[5,48],"name":"src/NewOperators2.purs","end":[5,50]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[5,40],"name":"src/NewOperators2.purs","end":[5,46]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[5,40],"name":"src/NewOperators2.purs","end":[5,46]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[5,42],"name":"src/NewOperators2.purs","end":[5,44]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[5,40],"name":"src/NewOperators2.purs","end":[5,41]},[]],"tag":"TypeVar","contents":"a"}]},{"annotation":[{"start":[5,45],"name":"src/NewOperators2.purs","end":[5,46]},[]],"tag":"TypeVar","contents":"b"}]}]},{"annotation":[{"start":[5,52],"name":"src/NewOperators2.purs","end":[5,58]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[5,52],"name":"src/NewOperators2.purs","end":[5,58]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[5,54],"name":"src/NewOperators2.purs","end":[5,56]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[5,52],"name":"src/NewOperators2.purs","end":[5,53]},[]],"tag":"TypeVar","contents":"a"}]},{"annotation":[{"start":[5,57],"name":"src/NewOperators2.purs","end":[5,58]},[]],"tag":"TypeVar","contents":"c"}]}]}]},0]},1]},2]}}}],"efSourceSpan":{"start":[1,1],"name":"src/NewOperators2.purs","end":[6,25]}} \ No newline at end of file
+{"efVersion":"0.13.2","efModuleName":["NewOperators2"],"efExports":[{"ValueOpRef":[{"start":[1,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/NewOperators2.purs","end":[6,25]},">>>"]},{"ValueRef":[{"start":[1,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/NewOperators2.purs","end":[6,25]},{"Ident":"_compose"}]}],"efImports":[{"eiModule":["Prim"],"eiImportType":{"Implicit":[]},"eiImportedAs":["Prim"]},{"eiModule":["Prim"],"eiImportType":{"Implicit":[]},"eiImportedAs":null}],"efFixities":[{"efAssociativity":"infixl","efPrecedence":8,"efOperator":">>>","efAlias":[["NewOperators2"],{"Left":{"Ident":"_compose"}}]}],"efTypeFixities":[],"efDeclarations":[{"EDValue":{"edValueName":{"Ident":"_compose"},"edValueType":{"annotation":[{"start":[5,13],"name":"/home/harry/code/purescript/tests/purs/docs/src/NewOperators2.purs","end":[5,59]},[]],"tag":"ForAll","contents":["c",{"annotation":[{"start":[5,20],"name":"/home/harry/code/purescript/tests/purs/docs/src/NewOperators2.purs","end":[5,59]},[]],"tag":"ForAll","contents":["b",{"annotation":[{"start":[5,20],"name":"/home/harry/code/purescript/tests/purs/docs/src/NewOperators2.purs","end":[5,59]},[]],"tag":"ForAll","contents":["a",{"annotation":[{"start":[5,27],"name":"/home/harry/code/purescript/tests/purs/docs/src/NewOperators2.purs","end":[5,59]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[5,27],"name":"/home/harry/code/purescript/tests/purs/docs/src/NewOperators2.purs","end":[5,59]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[5,36],"name":"/home/harry/code/purescript/tests/purs/docs/src/NewOperators2.purs","end":[5,38]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[5,28],"name":"/home/harry/code/purescript/tests/purs/docs/src/NewOperators2.purs","end":[5,34]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[5,28],"name":"/home/harry/code/purescript/tests/purs/docs/src/NewOperators2.purs","end":[5,34]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[5,30],"name":"/home/harry/code/purescript/tests/purs/docs/src/NewOperators2.purs","end":[5,32]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[5,28],"name":"/home/harry/code/purescript/tests/purs/docs/src/NewOperators2.purs","end":[5,29]},[]],"tag":"TypeVar","contents":"b"}]},{"annotation":[{"start":[5,33],"name":"/home/harry/code/purescript/tests/purs/docs/src/NewOperators2.purs","end":[5,34]},[]],"tag":"TypeVar","contents":"c"}]}]},{"annotation":[{"start":[5,39],"name":"/home/harry/code/purescript/tests/purs/docs/src/NewOperators2.purs","end":[5,59]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[5,39],"name":"/home/harry/code/purescript/tests/purs/docs/src/NewOperators2.purs","end":[5,59]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[5,48],"name":"/home/harry/code/purescript/tests/purs/docs/src/NewOperators2.purs","end":[5,50]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[5,40],"name":"/home/harry/code/purescript/tests/purs/docs/src/NewOperators2.purs","end":[5,46]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[5,40],"name":"/home/harry/code/purescript/tests/purs/docs/src/NewOperators2.purs","end":[5,46]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[5,42],"name":"/home/harry/code/purescript/tests/purs/docs/src/NewOperators2.purs","end":[5,44]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[5,40],"name":"/home/harry/code/purescript/tests/purs/docs/src/NewOperators2.purs","end":[5,41]},[]],"tag":"TypeVar","contents":"a"}]},{"annotation":[{"start":[5,45],"name":"/home/harry/code/purescript/tests/purs/docs/src/NewOperators2.purs","end":[5,46]},[]],"tag":"TypeVar","contents":"b"}]}]},{"annotation":[{"start":[5,52],"name":"/home/harry/code/purescript/tests/purs/docs/src/NewOperators2.purs","end":[5,58]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[5,52],"name":"/home/harry/code/purescript/tests/purs/docs/src/NewOperators2.purs","end":[5,58]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[5,54],"name":"/home/harry/code/purescript/tests/purs/docs/src/NewOperators2.purs","end":[5,56]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[5,52],"name":"/home/harry/code/purescript/tests/purs/docs/src/NewOperators2.purs","end":[5,53]},[]],"tag":"TypeVar","contents":"a"}]},{"annotation":[{"start":[5,57],"name":"/home/harry/code/purescript/tests/purs/docs/src/NewOperators2.purs","end":[5,58]},[]],"tag":"TypeVar","contents":"c"}]}]}]},0]},1]},2]}}}],"efSourceSpan":{"start":[1,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/NewOperators2.purs","end":[6,25]}} \ No newline at end of file
diff --git a/tests/purs/docs/output/NotAllCtors/externs.json b/tests/purs/docs/output/NotAllCtors/externs.json
index 70029b6..1744fd1 100644
--- a/tests/purs/docs/output/NotAllCtors/externs.json
+++ b/tests/purs/docs/output/NotAllCtors/externs.json
@@ -1 +1 @@
-{"efVersion":"0.12.5","efModuleName":["NotAllCtors"],"efExports":[{"ReExportRef":[{"start":[1,1],"name":"src/NotAllCtors.purs","end":[5,32]},{"exportSourceImportedFrom":["Prelude"],"exportSourceDefinedIn":["Prelude"]},{"TypeRef":[{"start":[1,1],"name":"src/NotAllCtors.purs","end":[5,32]},"Boolean2",["True"]]}]},{"ModuleRef":[{"start":[2,5],"name":"src/NotAllCtors.purs","end":[2,19]},["Prelude"]]}],"efImports":[{"eiModule":["Prim"],"eiImportType":{"Implicit":[]},"eiImportedAs":["Prim"]},{"eiModule":["Prim"],"eiImportType":{"Implicit":[]},"eiImportedAs":null},{"eiModule":["Prelude"],"eiImportType":{"Explicit":[{"TypeRef":[{"start":[5,17],"name":"src/NotAllCtors.purs","end":[5,31]},"Boolean2",["True"]]}]},"eiImportedAs":null}],"efFixities":[],"efTypeFixities":[],"efDeclarations":[],"efSourceSpan":{"start":[1,1],"name":"src/NotAllCtors.purs","end":[5,32]}} \ No newline at end of file
+{"efVersion":"0.13.2","efModuleName":["NotAllCtors"],"efExports":[{"ReExportRef":[{"start":[1,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/NotAllCtors.purs","end":[5,32]},{"exportSourceImportedFrom":["Prelude"],"exportSourceDefinedIn":["Prelude"]},{"TypeRef":[{"start":[1,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/NotAllCtors.purs","end":[5,32]},"Boolean2",["True"]]}]},{"ModuleRef":[{"start":[2,5],"name":"/home/harry/code/purescript/tests/purs/docs/src/NotAllCtors.purs","end":[2,19]},["Prelude"]]}],"efImports":[{"eiModule":["Prim"],"eiImportType":{"Implicit":[]},"eiImportedAs":["Prim"]},{"eiModule":["Prim"],"eiImportType":{"Implicit":[]},"eiImportedAs":null},{"eiModule":["Prelude"],"eiImportType":{"Explicit":[{"TypeRef":[{"start":[5,17],"name":"/home/harry/code/purescript/tests/purs/docs/src/NotAllCtors.purs","end":[5,31]},"Boolean2",["True"]]}]},"eiImportedAs":null}],"efFixities":[],"efTypeFixities":[],"efDeclarations":[],"efSourceSpan":{"start":[1,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/NotAllCtors.purs","end":[5,32]}} \ No newline at end of file
diff --git a/tests/purs/docs/output/Prelude/externs.json b/tests/purs/docs/output/Prelude/externs.json
index d17b585..02d1512 100644
--- a/tests/purs/docs/output/Prelude/externs.json
+++ b/tests/purs/docs/output/Prelude/externs.json
@@ -1 +1 @@
-{"efVersion":"0.12.5","efModuleName":["Prelude"],"efExports":[{"TypeRef":[{"start":[1,1],"name":"bower_components/purescript-prelude/src/Prelude.purs","end":[8,29]},"Unit",["Unit"]]},{"ValueRef":[{"start":[1,1],"name":"bower_components/purescript-prelude/src/Prelude.purs","end":[8,29]},{"Ident":"unit"}]},{"TypeRef":[{"start":[1,1],"name":"bower_components/purescript-prelude/src/Prelude.purs","end":[8,29]},"Boolean2",["True","False"]]}],"efImports":[{"eiModule":["Prim"],"eiImportType":{"Implicit":[]},"eiImportedAs":["Prim"]},{"eiModule":["Prim"],"eiImportType":{"Implicit":[]},"eiImportedAs":null}],"efFixities":[],"efTypeFixities":[],"efDeclarations":[{"EDType":{"edTypeName":"Unit","edTypeKind":{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"NamedKind","contents":[["Prim"],"Type"]},"edTypeDeclarationKind":{"DataType":{"args":[],"ctors":[["Unit",[{"annotation":[{"start":[3,21],"name":"bower_components/purescript-prelude/src/Prelude.purs","end":[3,23]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[3,21],"name":"bower_components/purescript-prelude/src/Prelude.purs","end":[3,22]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Record"]},{"annotation":[{"start":[3,22],"name":"bower_components/purescript-prelude/src/Prelude.purs","end":[3,23]},[]],"tag":"REmpty"}]}]]]}}}},{"EDDataConstructor":{"edDataCtorName":"Unit","edDataCtorOrigin":"newtype","edDataCtorTypeCtor":"Unit","edDataCtorType":{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[3,21],"name":"bower_components/purescript-prelude/src/Prelude.purs","end":[3,23]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[3,21],"name":"bower_components/purescript-prelude/src/Prelude.purs","end":[3,22]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Record"]},{"annotation":[{"start":[3,22],"name":"bower_components/purescript-prelude/src/Prelude.purs","end":[3,23]},[]],"tag":"REmpty"}]}]},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeConstructor","contents":[["Prelude"],"Unit"]}]},"edDataCtorFields":[{"Ident":"value0"}]}},{"EDValue":{"edValueName":{"Ident":"unit"},"edValueType":{"annotation":[{"start":[5,9],"name":"bower_components/purescript-prelude/src/Prelude.purs","end":[5,13]},[]],"tag":"TypeConstructor","contents":[["Prelude"],"Unit"]}}},{"EDType":{"edTypeName":"Boolean2","edTypeKind":{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"NamedKind","contents":[["Prim"],"Type"]},"edTypeDeclarationKind":{"DataType":{"args":[],"ctors":[["True",[]],["False",[]]]}}}},{"EDDataConstructor":{"edDataCtorName":"True","edDataCtorOrigin":"data","edDataCtorTypeCtor":"Boolean2","edDataCtorType":{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeConstructor","contents":[["Prelude"],"Boolean2"]},"edDataCtorFields":[]}},{"EDDataConstructor":{"edDataCtorName":"False","edDataCtorOrigin":"data","edDataCtorTypeCtor":"Boolean2","edDataCtorType":{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeConstructor","contents":[["Prelude"],"Boolean2"]},"edDataCtorFields":[]}}],"efSourceSpan":{"start":[1,1],"name":"bower_components/purescript-prelude/src/Prelude.purs","end":[8,29]}} \ No newline at end of file
+{"efVersion":"0.13.2","efModuleName":["Prelude"],"efExports":[{"TypeRef":[{"start":[1,1],"name":"bower_components/purescript-prelude/src/Prelude.purs","end":[8,29]},"Unit",["Unit"]]},{"ValueRef":[{"start":[1,1],"name":"bower_components/purescript-prelude/src/Prelude.purs","end":[8,29]},{"Ident":"unit"}]},{"TypeRef":[{"start":[1,1],"name":"bower_components/purescript-prelude/src/Prelude.purs","end":[8,29]},"Boolean2",["True","False"]]}],"efImports":[{"eiModule":["Prim"],"eiImportType":{"Implicit":[]},"eiImportedAs":["Prim"]},{"eiModule":["Prim"],"eiImportType":{"Implicit":[]},"eiImportedAs":null}],"efFixities":[],"efTypeFixities":[],"efDeclarations":[{"EDType":{"edTypeName":"Unit","edTypeKind":{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"NamedKind","contents":[["Prim"],"Type"]},"edTypeDeclarationKind":{"DataType":{"args":[],"ctors":[["Unit",[{"annotation":[{"start":[3,21],"name":"bower_components/purescript-prelude/src/Prelude.purs","end":[3,23]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[3,21],"name":"bower_components/purescript-prelude/src/Prelude.purs","end":[3,22]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Record"]},{"annotation":[{"start":[3,22],"name":"bower_components/purescript-prelude/src/Prelude.purs","end":[3,23]},[]],"tag":"REmpty"}]}]]]}}}},{"EDDataConstructor":{"edDataCtorName":"Unit","edDataCtorOrigin":"newtype","edDataCtorTypeCtor":"Unit","edDataCtorType":{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[3,21],"name":"bower_components/purescript-prelude/src/Prelude.purs","end":[3,23]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[3,21],"name":"bower_components/purescript-prelude/src/Prelude.purs","end":[3,22]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Record"]},{"annotation":[{"start":[3,22],"name":"bower_components/purescript-prelude/src/Prelude.purs","end":[3,23]},[]],"tag":"REmpty"}]}]},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeConstructor","contents":[["Prelude"],"Unit"]}]},"edDataCtorFields":[{"Ident":"value0"}]}},{"EDValue":{"edValueName":{"Ident":"unit"},"edValueType":{"annotation":[{"start":[5,9],"name":"bower_components/purescript-prelude/src/Prelude.purs","end":[5,13]},[]],"tag":"TypeConstructor","contents":[["Prelude"],"Unit"]}}},{"EDType":{"edTypeName":"Boolean2","edTypeKind":{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"NamedKind","contents":[["Prim"],"Type"]},"edTypeDeclarationKind":{"DataType":{"args":[],"ctors":[["True",[]],["False",[]]]}}}},{"EDDataConstructor":{"edDataCtorName":"True","edDataCtorOrigin":"data","edDataCtorTypeCtor":"Boolean2","edDataCtorType":{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeConstructor","contents":[["Prelude"],"Boolean2"]},"edDataCtorFields":[]}},{"EDDataConstructor":{"edDataCtorName":"False","edDataCtorOrigin":"data","edDataCtorTypeCtor":"Boolean2","edDataCtorType":{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeConstructor","contents":[["Prelude"],"Boolean2"]},"edDataCtorFields":[]}}],"efSourceSpan":{"start":[1,1],"name":"bower_components/purescript-prelude/src/Prelude.purs","end":[8,29]}} \ No newline at end of file
diff --git a/tests/purs/docs/output/PrimSubmodules/docs.json b/tests/purs/docs/output/PrimSubmodules/docs.json
index f47f937..0e2dfea 100644
--- a/tests/purs/docs/output/PrimSubmodules/docs.json
+++ b/tests/purs/docs/output/PrimSubmodules/docs.json
@@ -1 +1 @@
-{"reExports":[],"name":"PrimSubmodules","comments":null,"declarations":[{"children":[{"comments":null,"title":"Lol","info":{"arguments":[{"annotation":[],"tag":"TypeConstructor","contents":[["Prim"],"Int"]}],"declType":"dataConstructor"},"sourceSpan":null}],"comments":null,"title":"Lol","info":{"declType":"data","dataDeclType":"data","typeArguments":[["a",{"annotation":[],"tag":"NamedKind","contents":[["Prim","Ordering"],"Ordering"]}]]},"sourceSpan":{"start":[5,1],"name":"src/PrimSubmodules.purs","end":[5,37]}},{"children":[],"comments":null,"title":"x","info":{"declType":"value","type":{"annotation":[],"tag":"TypeApp","contents":[{"annotation":[],"tag":"TypeConstructor","contents":[["PrimSubmodules"],"Lol"]},{"annotation":[],"tag":"TypeConstructor","contents":[["Prim","Ordering"],"LT"]}]}},"sourceSpan":{"start":[7,1],"name":"src/PrimSubmodules.purs","end":[7,14]}},{"children":[],"comments":null,"title":"y","info":{"declType":"value","type":{"annotation":[],"tag":"TypeApp","contents":[{"annotation":[],"tag":"TypeConstructor","contents":[["PrimSubmodules"],"Lol"]},{"annotation":[],"tag":"TypeConstructor","contents":[["Prim","Ordering"],"EQ"]}]}},"sourceSpan":{"start":[10,1],"name":"src/PrimSubmodules.purs","end":[10,14]}}]} \ No newline at end of file
+{"reExports":[],"name":"PrimSubmodules","comments":null,"declarations":[{"children":[{"comments":null,"title":"Lol","info":{"arguments":[{"annotation":[],"tag":"TypeConstructor","contents":[["Prim"],"Int"]}],"declType":"dataConstructor"},"sourceSpan":null}],"comments":null,"title":"Lol","info":{"declType":"data","dataDeclType":"data","typeArguments":[["a",{"annotation":[],"tag":"NamedKind","contents":[["Prim","Ordering"],"Ordering"]}]]},"sourceSpan":{"start":[5,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/PrimSubmodules.purs","end":[5,37]}},{"children":[],"comments":null,"title":"x","info":{"declType":"value","type":{"annotation":[],"tag":"TypeApp","contents":[{"annotation":[],"tag":"TypeConstructor","contents":[["PrimSubmodules"],"Lol"]},{"annotation":[],"tag":"TypeConstructor","contents":[["Prim","Ordering"],"LT"]}]}},"sourceSpan":{"start":[7,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/PrimSubmodules.purs","end":[7,14]}},{"children":[],"comments":null,"title":"y","info":{"declType":"value","type":{"annotation":[],"tag":"TypeApp","contents":[{"annotation":[],"tag":"TypeConstructor","contents":[["PrimSubmodules"],"Lol"]},{"annotation":[],"tag":"TypeConstructor","contents":[["Prim","Ordering"],"EQ"]}]}},"sourceSpan":{"start":[10,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/PrimSubmodules.purs","end":[10,14]}}]} \ No newline at end of file
diff --git a/tests/purs/docs/output/PrimSubmodules/externs.json b/tests/purs/docs/output/PrimSubmodules/externs.json
index 52d7e7a..42de5de 100644
--- a/tests/purs/docs/output/PrimSubmodules/externs.json
+++ b/tests/purs/docs/output/PrimSubmodules/externs.json
@@ -1 +1 @@
-{"efVersion":"0.12.5","efModuleName":["PrimSubmodules"],"efExports":[{"ReExportRef":[{"start":[1,1],"name":"src/PrimSubmodules.purs","end":[11,10]},{"exportSourceImportedFrom":["Prim","Ordering"],"exportSourceDefinedIn":["Prim","Ordering"]},{"TypeRef":[{"start":[1,1],"name":"src/PrimSubmodules.purs","end":[11,10]},"EQ",[]]}]},{"ReExportRef":[{"start":[1,1],"name":"src/PrimSubmodules.purs","end":[11,10]},{"exportSourceImportedFrom":["Prim","Ordering"],"exportSourceDefinedIn":["Prim","Ordering"]},{"TypeRef":[{"start":[1,1],"name":"src/PrimSubmodules.purs","end":[11,10]},"GT",[]]}]},{"ReExportRef":[{"start":[1,1],"name":"src/PrimSubmodules.purs","end":[11,10]},{"exportSourceImportedFrom":["Prim","Ordering"],"exportSourceDefinedIn":["Prim","Ordering"]},{"TypeRef":[{"start":[1,1],"name":"src/PrimSubmodules.purs","end":[11,10]},"LT",[]]}]},{"ReExportRef":[{"start":[1,1],"name":"src/PrimSubmodules.purs","end":[11,10]},{"exportSourceImportedFrom":["Prim","Ordering"],"exportSourceDefinedIn":["Prim","Ordering"]},{"KindRef":[{"start":[1,1],"name":"src/PrimSubmodules.purs","end":[11,10]},"Ordering"]}]},{"TypeRef":[{"start":[1,1],"name":"src/PrimSubmodules.purs","end":[11,10]},"Lol",["Lol"]]},{"ValueRef":[{"start":[1,1],"name":"src/PrimSubmodules.purs","end":[11,10]},{"Ident":"x"}]},{"ValueRef":[{"start":[1,1],"name":"src/PrimSubmodules.purs","end":[11,10]},{"Ident":"y"}]},{"ModuleRef":[{"start":[1,39],"name":"src/PrimSubmodules.purs","end":[1,47]},["O"]]}],"efImports":[{"eiModule":["Prim"],"eiImportType":{"Implicit":[]},"eiImportedAs":["Prim"]},{"eiModule":["Prim"],"eiImportType":{"Implicit":[]},"eiImportedAs":null},{"eiModule":["Prim","Ordering"],"eiImportType":{"Explicit":[{"KindRef":[{"start":[3,23],"name":"src/PrimSubmodules.purs","end":[3,36]},"Ordering"]},{"TypeRef":[{"start":[3,38],"name":"src/PrimSubmodules.purs","end":[3,40]},"LT",[]]},{"TypeRef":[{"start":[3,42],"name":"src/PrimSubmodules.purs","end":[3,44]},"EQ",[]]},{"TypeRef":[{"start":[3,46],"name":"src/PrimSubmodules.purs","end":[3,48]},"GT",[]]}]},"eiImportedAs":["O"]}],"efFixities":[],"efTypeFixities":[],"efDeclarations":[{"EDType":{"edTypeName":"Lol","edTypeKind":{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"FunKind","contents":[{"annotation":[{"start":[5,16],"name":"src/PrimSubmodules.purs","end":[5,26]},[]],"tag":"NamedKind","contents":[["Prim","Ordering"],"Ordering"]},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"NamedKind","contents":[["Prim"],"Type"]}]},"edTypeDeclarationKind":{"DataType":{"args":[["a",{"annotation":[{"start":[5,16],"name":"src/PrimSubmodules.purs","end":[5,26]},[]],"tag":"NamedKind","contents":[["Prim","Ordering"],"Ordering"]}]],"ctors":[["Lol",[{"annotation":[{"start":[5,34],"name":"src/PrimSubmodules.purs","end":[5,37]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Int"]}]]]}}}},{"EDDataConstructor":{"edDataCtorName":"Lol","edDataCtorOrigin":"data","edDataCtorTypeCtor":"Lol","edDataCtorType":{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"ForAll","contents":["a",{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[5,34],"name":"src/PrimSubmodules.purs","end":[5,37]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Int"]}]},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeConstructor","contents":[["PrimSubmodules"],"Lol"]},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeVar","contents":"a"}]}]},null]},"edDataCtorFields":[{"Ident":"value0"}]}},{"EDValue":{"edValueName":{"Ident":"x"},"edValueType":{"annotation":[{"start":[7,6],"name":"src/PrimSubmodules.purs","end":[7,14]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[7,6],"name":"src/PrimSubmodules.purs","end":[7,9]},[]],"tag":"TypeConstructor","contents":[["PrimSubmodules"],"Lol"]},{"annotation":[{"start":[7,10],"name":"src/PrimSubmodules.purs","end":[7,14]},[]],"tag":"TypeConstructor","contents":[["Prim","Ordering"],"LT"]}]}}},{"EDValue":{"edValueName":{"Ident":"y"},"edValueType":{"annotation":[{"start":[10,6],"name":"src/PrimSubmodules.purs","end":[10,14]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[10,6],"name":"src/PrimSubmodules.purs","end":[10,9]},[]],"tag":"TypeConstructor","contents":[["PrimSubmodules"],"Lol"]},{"annotation":[{"start":[10,10],"name":"src/PrimSubmodules.purs","end":[10,14]},[]],"tag":"TypeConstructor","contents":[["Prim","Ordering"],"EQ"]}]}}}],"efSourceSpan":{"start":[1,1],"name":"src/PrimSubmodules.purs","end":[11,10]}} \ No newline at end of file
+{"efVersion":"0.13.2","efModuleName":["PrimSubmodules"],"efExports":[{"ReExportRef":[{"start":[1,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/PrimSubmodules.purs","end":[11,10]},{"exportSourceImportedFrom":["Prim","Ordering"],"exportSourceDefinedIn":["Prim","Ordering"]},{"TypeRef":[{"start":[1,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/PrimSubmodules.purs","end":[11,10]},"EQ",[]]}]},{"ReExportRef":[{"start":[1,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/PrimSubmodules.purs","end":[11,10]},{"exportSourceImportedFrom":["Prim","Ordering"],"exportSourceDefinedIn":["Prim","Ordering"]},{"TypeRef":[{"start":[1,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/PrimSubmodules.purs","end":[11,10]},"GT",[]]}]},{"ReExportRef":[{"start":[1,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/PrimSubmodules.purs","end":[11,10]},{"exportSourceImportedFrom":["Prim","Ordering"],"exportSourceDefinedIn":["Prim","Ordering"]},{"TypeRef":[{"start":[1,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/PrimSubmodules.purs","end":[11,10]},"LT",[]]}]},{"ReExportRef":[{"start":[1,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/PrimSubmodules.purs","end":[11,10]},{"exportSourceImportedFrom":["Prim","Ordering"],"exportSourceDefinedIn":["Prim","Ordering"]},{"KindRef":[{"start":[1,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/PrimSubmodules.purs","end":[11,10]},"Ordering"]}]},{"TypeRef":[{"start":[1,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/PrimSubmodules.purs","end":[11,10]},"Lol",["Lol"]]},{"ValueRef":[{"start":[1,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/PrimSubmodules.purs","end":[11,10]},{"Ident":"x"}]},{"ValueRef":[{"start":[1,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/PrimSubmodules.purs","end":[11,10]},{"Ident":"y"}]},{"ModuleRef":[{"start":[1,39],"name":"/home/harry/code/purescript/tests/purs/docs/src/PrimSubmodules.purs","end":[1,47]},["O"]]}],"efImports":[{"eiModule":["Prim"],"eiImportType":{"Implicit":[]},"eiImportedAs":["Prim"]},{"eiModule":["Prim"],"eiImportType":{"Implicit":[]},"eiImportedAs":null},{"eiModule":["Prim","Ordering"],"eiImportType":{"Explicit":[{"KindRef":[{"start":[3,23],"name":"/home/harry/code/purescript/tests/purs/docs/src/PrimSubmodules.purs","end":[3,36]},"Ordering"]},{"TypeRef":[{"start":[3,38],"name":"/home/harry/code/purescript/tests/purs/docs/src/PrimSubmodules.purs","end":[3,40]},"LT",[]]},{"TypeRef":[{"start":[3,42],"name":"/home/harry/code/purescript/tests/purs/docs/src/PrimSubmodules.purs","end":[3,44]},"EQ",[]]},{"TypeRef":[{"start":[3,46],"name":"/home/harry/code/purescript/tests/purs/docs/src/PrimSubmodules.purs","end":[3,48]},"GT",[]]}]},"eiImportedAs":["O"]}],"efFixities":[],"efTypeFixities":[],"efDeclarations":[{"EDType":{"edTypeName":"Lol","edTypeKind":{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"FunKind","contents":[{"annotation":[{"start":[5,16],"name":"/home/harry/code/purescript/tests/purs/docs/src/PrimSubmodules.purs","end":[5,26]},[]],"tag":"NamedKind","contents":[["Prim","Ordering"],"Ordering"]},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"NamedKind","contents":[["Prim"],"Type"]}]},"edTypeDeclarationKind":{"DataType":{"args":[["a",{"annotation":[{"start":[5,16],"name":"/home/harry/code/purescript/tests/purs/docs/src/PrimSubmodules.purs","end":[5,26]},[]],"tag":"NamedKind","contents":[["Prim","Ordering"],"Ordering"]}]],"ctors":[["Lol",[{"annotation":[{"start":[5,34],"name":"/home/harry/code/purescript/tests/purs/docs/src/PrimSubmodules.purs","end":[5,37]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Int"]}]]]}}}},{"EDDataConstructor":{"edDataCtorName":"Lol","edDataCtorOrigin":"data","edDataCtorTypeCtor":"Lol","edDataCtorType":{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"ForAll","contents":["a",{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[5,34],"name":"/home/harry/code/purescript/tests/purs/docs/src/PrimSubmodules.purs","end":[5,37]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Int"]}]},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeConstructor","contents":[["PrimSubmodules"],"Lol"]},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeVar","contents":"a"}]}]},null]},"edDataCtorFields":[{"Ident":"value0"}]}},{"EDValue":{"edValueName":{"Ident":"x"},"edValueType":{"annotation":[{"start":[7,6],"name":"/home/harry/code/purescript/tests/purs/docs/src/PrimSubmodules.purs","end":[7,14]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[7,6],"name":"/home/harry/code/purescript/tests/purs/docs/src/PrimSubmodules.purs","end":[7,9]},[]],"tag":"TypeConstructor","contents":[["PrimSubmodules"],"Lol"]},{"annotation":[{"start":[7,10],"name":"/home/harry/code/purescript/tests/purs/docs/src/PrimSubmodules.purs","end":[7,14]},[]],"tag":"TypeConstructor","contents":[["Prim","Ordering"],"LT"]}]}}},{"EDValue":{"edValueName":{"Ident":"y"},"edValueType":{"annotation":[{"start":[10,6],"name":"/home/harry/code/purescript/tests/purs/docs/src/PrimSubmodules.purs","end":[10,14]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[10,6],"name":"/home/harry/code/purescript/tests/purs/docs/src/PrimSubmodules.purs","end":[10,9]},[]],"tag":"TypeConstructor","contents":[["PrimSubmodules"],"Lol"]},{"annotation":[{"start":[10,10],"name":"/home/harry/code/purescript/tests/purs/docs/src/PrimSubmodules.purs","end":[10,14]},[]],"tag":"TypeConstructor","contents":[["Prim","Ordering"],"EQ"]}]}}}],"efSourceSpan":{"start":[1,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/PrimSubmodules.purs","end":[11,10]}} \ No newline at end of file
diff --git a/tests/purs/docs/output/ReExportedTypeClass/externs.json b/tests/purs/docs/output/ReExportedTypeClass/externs.json
index 897b6ca..7db2137 100644
--- a/tests/purs/docs/output/ReExportedTypeClass/externs.json
+++ b/tests/purs/docs/output/ReExportedTypeClass/externs.json
@@ -1 +1 @@
-{"efVersion":"0.12.5","efModuleName":["ReExportedTypeClass"],"efExports":[{"ReExportRef":[{"start":[1,1],"name":"src/ReExportedTypeClass.purs","end":[5,21]},{"exportSourceImportedFrom":["SomeTypeClass"],"exportSourceDefinedIn":["SomeTypeClass"]},{"TypeClassRef":[{"start":[1,1],"name":"src/ReExportedTypeClass.purs","end":[5,21]},"SomeClass"]}]},{"ReExportRef":[{"start":[1,1],"name":"src/ReExportedTypeClass.purs","end":[5,21]},{"exportSourceImportedFrom":["SomeTypeClass"],"exportSourceDefinedIn":["SomeTypeClass"]},{"ValueRef":[{"start":[1,1],"name":"src/ReExportedTypeClass.purs","end":[5,21]},{"Ident":"member"}]}]},{"ModuleRef":[{"start":[2,5],"name":"src/ReExportedTypeClass.purs","end":[2,25]},["SomeTypeClass"]]}],"efImports":[{"eiModule":["Prim"],"eiImportType":{"Implicit":[]},"eiImportedAs":["Prim"]},{"eiModule":["Prim"],"eiImportType":{"Implicit":[]},"eiImportedAs":null},{"eiModule":["SomeTypeClass"],"eiImportType":{"Implicit":[]},"eiImportedAs":null}],"efFixities":[],"efTypeFixities":[],"efDeclarations":[],"efSourceSpan":{"start":[1,1],"name":"src/ReExportedTypeClass.purs","end":[5,21]}} \ No newline at end of file
+{"efVersion":"0.13.2","efModuleName":["ReExportedTypeClass"],"efExports":[{"ReExportRef":[{"start":[1,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/ReExportedTypeClass.purs","end":[5,21]},{"exportSourceImportedFrom":["SomeTypeClass"],"exportSourceDefinedIn":["SomeTypeClass"]},{"TypeClassRef":[{"start":[1,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/ReExportedTypeClass.purs","end":[5,21]},"SomeClass"]}]},{"ReExportRef":[{"start":[1,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/ReExportedTypeClass.purs","end":[5,21]},{"exportSourceImportedFrom":["SomeTypeClass"],"exportSourceDefinedIn":["SomeTypeClass"]},{"ValueRef":[{"start":[1,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/ReExportedTypeClass.purs","end":[5,21]},{"Ident":"member"}]}]},{"ModuleRef":[{"start":[2,5],"name":"/home/harry/code/purescript/tests/purs/docs/src/ReExportedTypeClass.purs","end":[2,25]},["SomeTypeClass"]]}],"efImports":[{"eiModule":["Prim"],"eiImportType":{"Implicit":[]},"eiImportedAs":["Prim"]},{"eiModule":["Prim"],"eiImportType":{"Implicit":[]},"eiImportedAs":null},{"eiModule":["SomeTypeClass"],"eiImportType":{"Implicit":[]},"eiImportedAs":null}],"efFixities":[],"efTypeFixities":[],"efDeclarations":[],"efSourceSpan":{"start":[1,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/ReExportedTypeClass.purs","end":[5,21]}} \ No newline at end of file
diff --git a/tests/purs/docs/output/SolitaryTypeClassMember/externs.json b/tests/purs/docs/output/SolitaryTypeClassMember/externs.json
index 218a02b..a33aeb4 100644
--- a/tests/purs/docs/output/SolitaryTypeClassMember/externs.json
+++ b/tests/purs/docs/output/SolitaryTypeClassMember/externs.json
@@ -1 +1 @@
-{"efVersion":"0.12.5","efModuleName":["SolitaryTypeClassMember"],"efExports":[{"ReExportRef":[{"start":[1,1],"name":"src/SolitaryTypeClassMember.purs","end":[5,30]},{"exportSourceImportedFrom":["SomeTypeClass"],"exportSourceDefinedIn":["SomeTypeClass"]},{"ValueRef":[{"start":[1,1],"name":"src/SolitaryTypeClassMember.purs","end":[5,30]},{"Ident":"member"}]}]},{"ModuleRef":[{"start":[2,5],"name":"src/SolitaryTypeClassMember.purs","end":[2,25]},["SomeTypeClass"]]}],"efImports":[{"eiModule":["Prim"],"eiImportType":{"Implicit":[]},"eiImportedAs":["Prim"]},{"eiModule":["Prim"],"eiImportType":{"Implicit":[]},"eiImportedAs":null},{"eiModule":["SomeTypeClass"],"eiImportType":{"Explicit":[{"ValueRef":[{"start":[5,23],"name":"src/SolitaryTypeClassMember.purs","end":[5,29]},{"Ident":"member"}]}]},"eiImportedAs":null}],"efFixities":[],"efTypeFixities":[],"efDeclarations":[],"efSourceSpan":{"start":[1,1],"name":"src/SolitaryTypeClassMember.purs","end":[5,30]}} \ No newline at end of file
+{"efVersion":"0.13.2","efModuleName":["SolitaryTypeClassMember"],"efExports":[{"ReExportRef":[{"start":[1,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/SolitaryTypeClassMember.purs","end":[5,30]},{"exportSourceImportedFrom":["SomeTypeClass"],"exportSourceDefinedIn":["SomeTypeClass"]},{"ValueRef":[{"start":[1,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/SolitaryTypeClassMember.purs","end":[5,30]},{"Ident":"member"}]}]},{"ModuleRef":[{"start":[2,5],"name":"/home/harry/code/purescript/tests/purs/docs/src/SolitaryTypeClassMember.purs","end":[2,25]},["SomeTypeClass"]]}],"efImports":[{"eiModule":["Prim"],"eiImportType":{"Implicit":[]},"eiImportedAs":["Prim"]},{"eiModule":["Prim"],"eiImportType":{"Implicit":[]},"eiImportedAs":null},{"eiModule":["SomeTypeClass"],"eiImportType":{"Explicit":[{"ValueRef":[{"start":[5,23],"name":"/home/harry/code/purescript/tests/purs/docs/src/SolitaryTypeClassMember.purs","end":[5,29]},{"Ident":"member"}]}]},"eiImportedAs":null}],"efFixities":[],"efTypeFixities":[],"efDeclarations":[],"efSourceSpan":{"start":[1,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/SolitaryTypeClassMember.purs","end":[5,30]}} \ No newline at end of file
diff --git a/tests/purs/docs/output/SomeTypeClass/docs.json b/tests/purs/docs/output/SomeTypeClass/docs.json
index 5d7df2b..549be14 100644
--- a/tests/purs/docs/output/SomeTypeClass/docs.json
+++ b/tests/purs/docs/output/SomeTypeClass/docs.json
@@ -1 +1 @@
-{"reExports":[],"name":"SomeTypeClass","comments":null,"declarations":[{"children":[{"comments":null,"title":"member","info":{"declType":"typeClassMember","type":{"annotation":[],"tag":"TypeVar","contents":"a"}},"sourceSpan":{"start":[5,3],"name":"src/SomeTypeClass.purs","end":[5,14]}}],"comments":null,"title":"SomeClass","info":{"fundeps":[],"arguments":[["a",null]],"declType":"typeClass","superclasses":[]},"sourceSpan":{"start":[4,1],"name":"src/SomeTypeClass.purs","end":[5,14]}}]} \ No newline at end of file
+{"reExports":[],"name":"SomeTypeClass","comments":null,"declarations":[{"children":[{"comments":null,"title":"member","info":{"declType":"typeClassMember","type":{"annotation":[],"tag":"TypeVar","contents":"a"}},"sourceSpan":{"start":[5,3],"name":"/home/harry/code/purescript/tests/purs/docs/src/SomeTypeClass.purs","end":[5,14]}}],"comments":null,"title":"SomeClass","info":{"fundeps":[],"arguments":[["a",null]],"declType":"typeClass","superclasses":[]},"sourceSpan":{"start":[4,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/SomeTypeClass.purs","end":[5,14]}}]} \ No newline at end of file
diff --git a/tests/purs/docs/output/SomeTypeClass/externs.json b/tests/purs/docs/output/SomeTypeClass/externs.json
index 6f35ee1..b592123 100644
--- a/tests/purs/docs/output/SomeTypeClass/externs.json
+++ b/tests/purs/docs/output/SomeTypeClass/externs.json
@@ -1 +1 @@
-{"efVersion":"0.12.5","efModuleName":["SomeTypeClass"],"efExports":[{"ValueRef":[{"start":[2,1],"name":"src/SomeTypeClass.purs","end":[5,14]},{"Ident":"member"}]},{"TypeClassRef":[{"start":[2,1],"name":"src/SomeTypeClass.purs","end":[5,14]},"SomeClass"]}],"efImports":[{"eiModule":["Prim"],"eiImportType":{"Implicit":[]},"eiImportedAs":["Prim"]},{"eiModule":["Prim"],"eiImportType":{"Implicit":[]},"eiImportedAs":null}],"efFixities":[],"efTypeFixities":[],"efDeclarations":[{"EDValue":{"edValueName":{"Ident":"member"},"edValueType":{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"ForAll","contents":["a",{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"ConstrainedType","contents":[{"constraintAnn":[{"start":[0,0],"name":"","end":[0,0]},[]],"constraintClass":[["SomeTypeClass"],"SomeClass"],"constraintArgs":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeVar","contents":"a"}],"constraintData":null},{"annotation":[{"start":[5,13],"name":"src/SomeTypeClass.purs","end":[5,14]},[]],"tag":"TypeVar","contents":"a"}]},0]}}},{"EDType":{"edTypeName":"SomeClass","edTypeKind":{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"FunKind","contents":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"NamedKind","contents":[["Prim"],"Type"]},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"NamedKind","contents":[["Prim"],"Type"]}]},"edTypeDeclarationKind":"TypeSynonym"}},{"EDTypeSynonym":{"edTypeSynonymName":"SomeClass","edTypeSynonymArguments":[["a",null]],"edTypeSynonymType":{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Record"]},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"RCons","contents":["member",{"annotation":[{"start":[5,13],"name":"src/SomeTypeClass.purs","end":[5,14]},[]],"tag":"TypeVar","contents":"a"},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"REmpty"}]}]}}},{"EDClass":{"edClassName":"SomeClass","edClassTypeArguments":[["a",null]],"edClassMembers":[[{"Ident":"member"},{"annotation":[{"start":[5,13],"name":"src/SomeTypeClass.purs","end":[5,14]},[]],"tag":"TypeVar","contents":"a"}]],"edClassConstraints":[],"edFunctionalDependencies":[]}}],"efSourceSpan":{"start":[2,1],"name":"src/SomeTypeClass.purs","end":[5,14]}} \ No newline at end of file
+{"efVersion":"0.13.2","efModuleName":["SomeTypeClass"],"efExports":[{"ValueRef":[{"start":[2,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/SomeTypeClass.purs","end":[5,14]},{"Ident":"member"}]},{"TypeClassRef":[{"start":[2,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/SomeTypeClass.purs","end":[5,14]},"SomeClass"]}],"efImports":[{"eiModule":["Prim"],"eiImportType":{"Implicit":[]},"eiImportedAs":["Prim"]},{"eiModule":["Prim"],"eiImportType":{"Implicit":[]},"eiImportedAs":null}],"efFixities":[],"efTypeFixities":[],"efDeclarations":[{"EDValue":{"edValueName":{"Ident":"member"},"edValueType":{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"ForAll","contents":["a",{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"ConstrainedType","contents":[{"constraintAnn":[{"start":[0,0],"name":"","end":[0,0]},[]],"constraintClass":[["SomeTypeClass"],"SomeClass"],"constraintArgs":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeVar","contents":"a"}],"constraintData":null},{"annotation":[{"start":[5,13],"name":"/home/harry/code/purescript/tests/purs/docs/src/SomeTypeClass.purs","end":[5,14]},[]],"tag":"TypeVar","contents":"a"}]},0]}}},{"EDType":{"edTypeName":"SomeClass","edTypeKind":{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"FunKind","contents":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"NamedKind","contents":[["Prim"],"Type"]},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"NamedKind","contents":[["Prim"],"Type"]}]},"edTypeDeclarationKind":"TypeSynonym"}},{"EDTypeSynonym":{"edTypeSynonymName":"SomeClass","edTypeSynonymArguments":[["a",null]],"edTypeSynonymType":{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Record"]},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"RCons","contents":["member",{"annotation":[{"start":[5,13],"name":"/home/harry/code/purescript/tests/purs/docs/src/SomeTypeClass.purs","end":[5,14]},[]],"tag":"TypeVar","contents":"a"},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"REmpty"}]}]}}},{"EDClass":{"edClassName":"SomeClass","edClassTypeArguments":[["a",null]],"edClassMembers":[[{"Ident":"member"},{"annotation":[{"start":[5,13],"name":"/home/harry/code/purescript/tests/purs/docs/src/SomeTypeClass.purs","end":[5,14]},[]],"tag":"TypeVar","contents":"a"}]],"edClassConstraints":[],"edFunctionalDependencies":[],"edIsEmpty":false}}],"efSourceSpan":{"start":[2,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/SomeTypeClass.purs","end":[5,14]}} \ No newline at end of file
diff --git a/tests/purs/docs/output/Transitive1/externs.json b/tests/purs/docs/output/Transitive1/externs.json
index 352caaf..0fc4d8e 100644
--- a/tests/purs/docs/output/Transitive1/externs.json
+++ b/tests/purs/docs/output/Transitive1/externs.json
@@ -1 +1 @@
-{"efVersion":"0.12.5","efModuleName":["Transitive1"],"efExports":[{"ReExportRef":[{"start":[1,1],"name":"src/Transitive1.purs","end":[5,19]},{"exportSourceImportedFrom":["Transitive2"],"exportSourceDefinedIn":["Transitive3"]},{"ValueRef":[{"start":[1,1],"name":"src/Transitive1.purs","end":[5,19]},{"Ident":"transitive3"}]}]},{"ModuleRef":[{"start":[2,5],"name":"src/Transitive1.purs","end":[2,23]},["Transitive2"]]}],"efImports":[{"eiModule":["Prim"],"eiImportType":{"Implicit":[]},"eiImportedAs":["Prim"]},{"eiModule":["Prim"],"eiImportType":{"Implicit":[]},"eiImportedAs":null},{"eiModule":["Transitive2"],"eiImportType":{"Implicit":[]},"eiImportedAs":null}],"efFixities":[],"efTypeFixities":[],"efDeclarations":[],"efSourceSpan":{"start":[1,1],"name":"src/Transitive1.purs","end":[5,19]}} \ No newline at end of file
+{"efVersion":"0.13.2","efModuleName":["Transitive1"],"efExports":[{"ReExportRef":[{"start":[1,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/Transitive1.purs","end":[5,19]},{"exportSourceImportedFrom":["Transitive2"],"exportSourceDefinedIn":["Transitive3"]},{"ValueRef":[{"start":[1,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/Transitive1.purs","end":[5,19]},{"Ident":"transitive3"}]}]},{"ModuleRef":[{"start":[2,5],"name":"/home/harry/code/purescript/tests/purs/docs/src/Transitive1.purs","end":[2,23]},["Transitive2"]]}],"efImports":[{"eiModule":["Prim"],"eiImportType":{"Implicit":[]},"eiImportedAs":["Prim"]},{"eiModule":["Prim"],"eiImportType":{"Implicit":[]},"eiImportedAs":null},{"eiModule":["Transitive2"],"eiImportType":{"Implicit":[]},"eiImportedAs":null}],"efFixities":[],"efTypeFixities":[],"efDeclarations":[],"efSourceSpan":{"start":[1,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/Transitive1.purs","end":[5,19]}} \ No newline at end of file
diff --git a/tests/purs/docs/output/Transitive2/externs.json b/tests/purs/docs/output/Transitive2/externs.json
index beae7fb..5f97685 100644
--- a/tests/purs/docs/output/Transitive2/externs.json
+++ b/tests/purs/docs/output/Transitive2/externs.json
@@ -1 +1 @@
-{"efVersion":"0.12.5","efModuleName":["Transitive2"],"efExports":[{"ReExportRef":[{"start":[1,1],"name":"src/Transitive2.purs","end":[5,19]},{"exportSourceImportedFrom":["Transitive3"],"exportSourceDefinedIn":["Transitive3"]},{"ValueRef":[{"start":[1,1],"name":"src/Transitive2.purs","end":[5,19]},{"Ident":"transitive3"}]}]},{"ModuleRef":[{"start":[2,5],"name":"src/Transitive2.purs","end":[2,23]},["Transitive3"]]}],"efImports":[{"eiModule":["Prim"],"eiImportType":{"Implicit":[]},"eiImportedAs":["Prim"]},{"eiModule":["Prim"],"eiImportType":{"Implicit":[]},"eiImportedAs":null},{"eiModule":["Transitive3"],"eiImportType":{"Implicit":[]},"eiImportedAs":null}],"efFixities":[],"efTypeFixities":[],"efDeclarations":[],"efSourceSpan":{"start":[1,1],"name":"src/Transitive2.purs","end":[5,19]}} \ No newline at end of file
+{"efVersion":"0.13.2","efModuleName":["Transitive2"],"efExports":[{"ReExportRef":[{"start":[1,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/Transitive2.purs","end":[5,19]},{"exportSourceImportedFrom":["Transitive3"],"exportSourceDefinedIn":["Transitive3"]},{"ValueRef":[{"start":[1,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/Transitive2.purs","end":[5,19]},{"Ident":"transitive3"}]}]},{"ModuleRef":[{"start":[2,5],"name":"/home/harry/code/purescript/tests/purs/docs/src/Transitive2.purs","end":[2,23]},["Transitive3"]]}],"efImports":[{"eiModule":["Prim"],"eiImportType":{"Implicit":[]},"eiImportedAs":["Prim"]},{"eiModule":["Prim"],"eiImportType":{"Implicit":[]},"eiImportedAs":null},{"eiModule":["Transitive3"],"eiImportType":{"Implicit":[]},"eiImportedAs":null}],"efFixities":[],"efTypeFixities":[],"efDeclarations":[],"efSourceSpan":{"start":[1,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/Transitive2.purs","end":[5,19]}} \ No newline at end of file
diff --git a/tests/purs/docs/output/Transitive3/docs.json b/tests/purs/docs/output/Transitive3/docs.json
index c3dcbc1..ef39fb9 100644
--- a/tests/purs/docs/output/Transitive3/docs.json
+++ b/tests/purs/docs/output/Transitive3/docs.json
@@ -1 +1 @@
-{"reExports":[],"name":"Transitive3","comments":null,"declarations":[{"children":[],"comments":null,"title":"transitive3","info":{"declType":"value","type":{"annotation":[],"tag":"TypeConstructor","contents":[["Prim"],"Int"]}},"sourceSpan":{"start":[3,1],"name":"src/Transitive3.purs","end":[3,19]}}]} \ No newline at end of file
+{"reExports":[],"name":"Transitive3","comments":null,"declarations":[{"children":[],"comments":null,"title":"transitive3","info":{"declType":"value","type":{"annotation":[],"tag":"TypeConstructor","contents":[["Prim"],"Int"]}},"sourceSpan":{"start":[3,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/Transitive3.purs","end":[3,19]}}]} \ No newline at end of file
diff --git a/tests/purs/docs/output/Transitive3/externs.json b/tests/purs/docs/output/Transitive3/externs.json
index ac68354..ec9e18e 100644
--- a/tests/purs/docs/output/Transitive3/externs.json
+++ b/tests/purs/docs/output/Transitive3/externs.json
@@ -1 +1 @@
-{"efVersion":"0.12.5","efModuleName":["Transitive3"],"efExports":[{"ValueRef":[{"start":[1,1],"name":"src/Transitive3.purs","end":[4,16]},{"Ident":"transitive3"}]}],"efImports":[{"eiModule":["Prim"],"eiImportType":{"Implicit":[]},"eiImportedAs":["Prim"]},{"eiModule":["Prim"],"eiImportType":{"Implicit":[]},"eiImportedAs":null}],"efFixities":[],"efTypeFixities":[],"efDeclarations":[{"EDValue":{"edValueName":{"Ident":"transitive3"},"edValueType":{"annotation":[{"start":[3,16],"name":"src/Transitive3.purs","end":[3,19]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Int"]}}}],"efSourceSpan":{"start":[1,1],"name":"src/Transitive3.purs","end":[4,16]}} \ No newline at end of file
+{"efVersion":"0.13.2","efModuleName":["Transitive3"],"efExports":[{"ValueRef":[{"start":[1,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/Transitive3.purs","end":[4,16]},{"Ident":"transitive3"}]}],"efImports":[{"eiModule":["Prim"],"eiImportType":{"Implicit":[]},"eiImportedAs":["Prim"]},{"eiModule":["Prim"],"eiImportType":{"Implicit":[]},"eiImportedAs":null}],"efFixities":[],"efTypeFixities":[],"efDeclarations":[{"EDValue":{"edValueName":{"Ident":"transitive3"},"edValueType":{"annotation":[{"start":[3,16],"name":"/home/harry/code/purescript/tests/purs/docs/src/Transitive3.purs","end":[3,19]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Int"]}}}],"efSourceSpan":{"start":[1,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/Transitive3.purs","end":[4,16]}} \ No newline at end of file
diff --git a/tests/purs/docs/output/TypeClassWithFunDeps/docs.json b/tests/purs/docs/output/TypeClassWithFunDeps/docs.json
index 1d85318..a71222e 100644
--- a/tests/purs/docs/output/TypeClassWithFunDeps/docs.json
+++ b/tests/purs/docs/output/TypeClassWithFunDeps/docs.json
@@ -1 +1 @@
-{"reExports":[],"name":"TypeClassWithFunDeps","comments":null,"declarations":[{"children":[{"comments":null,"title":"aMember","info":{"declType":"typeClassMember","type":{"annotation":[],"tag":"TypeApp","contents":[{"annotation":[],"tag":"TypeApp","contents":[{"annotation":[],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[],"tag":"TypeVar","contents":"a"}]},{"annotation":[],"tag":"TypeVar","contents":"b"}]}},"sourceSpan":{"start":[5,3],"name":"src/TypeClassWithFunDeps.purs","end":[5,20]}}],"comments":null,"title":"TypeClassWithFunDeps","info":{"fundeps":[[["a","b"],["c"]],[["c"],["d","e"]]],"arguments":[["a",null],["b",null],["c",null],["d",null],["e",null]],"declType":"typeClass","superclasses":[]},"sourceSpan":{"start":[4,1],"name":"src/TypeClassWithFunDeps.purs","end":[5,20]}}]} \ No newline at end of file
+{"reExports":[],"name":"TypeClassWithFunDeps","comments":null,"declarations":[{"children":[{"comments":null,"title":"aMember","info":{"declType":"typeClassMember","type":{"annotation":[],"tag":"TypeApp","contents":[{"annotation":[],"tag":"TypeApp","contents":[{"annotation":[],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[],"tag":"TypeVar","contents":"a"}]},{"annotation":[],"tag":"TypeVar","contents":"b"}]}},"sourceSpan":{"start":[5,3],"name":"/home/harry/code/purescript/tests/purs/docs/src/TypeClassWithFunDeps.purs","end":[5,20]}}],"comments":null,"title":"TypeClassWithFunDeps","info":{"fundeps":[[["a","b"],["c"]],[["c"],["d","e"]]],"arguments":[["a",null],["b",null],["c",null],["d",null],["e",null]],"declType":"typeClass","superclasses":[]},"sourceSpan":{"start":[4,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/TypeClassWithFunDeps.purs","end":[5,20]}}]} \ No newline at end of file
diff --git a/tests/purs/docs/output/TypeClassWithFunDeps/externs.json b/tests/purs/docs/output/TypeClassWithFunDeps/externs.json
index 05b3928..190c1db 100644
--- a/tests/purs/docs/output/TypeClassWithFunDeps/externs.json
+++ b/tests/purs/docs/output/TypeClassWithFunDeps/externs.json
@@ -1 +1 @@
-{"efVersion":"0.12.5","efModuleName":["TypeClassWithFunDeps"],"efExports":[{"ValueRef":[{"start":[2,1],"name":"src/TypeClassWithFunDeps.purs","end":[5,20]},{"Ident":"aMember"}]},{"TypeClassRef":[{"start":[2,1],"name":"src/TypeClassWithFunDeps.purs","end":[5,20]},"TypeClassWithFunDeps"]}],"efImports":[{"eiModule":["Prim"],"eiImportType":{"Implicit":[]},"eiImportedAs":["Prim"]},{"eiModule":["Prim"],"eiImportType":{"Implicit":[]},"eiImportedAs":null}],"efFixities":[],"efTypeFixities":[],"efDeclarations":[{"EDValue":{"edValueName":{"Ident":"aMember"},"edValueType":{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"ForAll","contents":["a",{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"ForAll","contents":["b",{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"ForAll","contents":["c",{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"ForAll","contents":["d",{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"ForAll","contents":["e",{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"ConstrainedType","contents":[{"constraintAnn":[{"start":[0,0],"name":"","end":[0,0]},[]],"constraintClass":[["TypeClassWithFunDeps"],"TypeClassWithFunDeps"],"constraintArgs":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeVar","contents":"a"},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeVar","contents":"b"},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeVar","contents":"c"},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeVar","contents":"d"},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeVar","contents":"e"}],"constraintData":null},{"annotation":[{"start":[5,14],"name":"src/TypeClassWithFunDeps.purs","end":[5,20]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[5,14],"name":"src/TypeClassWithFunDeps.purs","end":[5,20]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[5,16],"name":"src/TypeClassWithFunDeps.purs","end":[5,18]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[5,14],"name":"src/TypeClassWithFunDeps.purs","end":[5,15]},[]],"tag":"TypeVar","contents":"a"}]},{"annotation":[{"start":[5,19],"name":"src/TypeClassWithFunDeps.purs","end":[5,20]},[]],"tag":"TypeVar","contents":"b"}]}]},0]},1]},2]},3]},4]}}},{"EDType":{"edTypeName":"TypeClassWithFunDeps","edTypeKind":{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"FunKind","contents":[{"annotation":[{"start":[5,16],"name":"src/TypeClassWithFunDeps.purs","end":[5,18]},[]],"tag":"NamedKind","contents":[["Prim"],"Type"]},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"FunKind","contents":[{"annotation":[{"start":[5,16],"name":"src/TypeClassWithFunDeps.purs","end":[5,18]},[]],"tag":"NamedKind","contents":[["Prim"],"Type"]},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"FunKind","contents":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"NamedKind","contents":[["Prim"],"Type"]},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"FunKind","contents":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"NamedKind","contents":[["Prim"],"Type"]},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"FunKind","contents":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"NamedKind","contents":[["Prim"],"Type"]},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"NamedKind","contents":[["Prim"],"Type"]}]}]}]}]}]},"edTypeDeclarationKind":"TypeSynonym"}},{"EDTypeSynonym":{"edTypeSynonymName":"TypeClassWithFunDeps","edTypeSynonymArguments":[["a",null],["b",null],["c",null],["d",null],["e",null]],"edTypeSynonymType":{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Record"]},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"RCons","contents":["aMember",{"annotation":[{"start":[5,14],"name":"src/TypeClassWithFunDeps.purs","end":[5,20]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[5,14],"name":"src/TypeClassWithFunDeps.purs","end":[5,20]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[5,16],"name":"src/TypeClassWithFunDeps.purs","end":[5,18]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[5,14],"name":"src/TypeClassWithFunDeps.purs","end":[5,15]},[]],"tag":"TypeVar","contents":"a"}]},{"annotation":[{"start":[5,19],"name":"src/TypeClassWithFunDeps.purs","end":[5,20]},[]],"tag":"TypeVar","contents":"b"}]},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"REmpty"}]}]}}},{"EDClass":{"edClassName":"TypeClassWithFunDeps","edClassTypeArguments":[["a",null],["b",null],["c",null],["d",null],["e",null]],"edClassMembers":[[{"Ident":"aMember"},{"annotation":[{"start":[5,14],"name":"src/TypeClassWithFunDeps.purs","end":[5,20]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[5,14],"name":"src/TypeClassWithFunDeps.purs","end":[5,20]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[5,16],"name":"src/TypeClassWithFunDeps.purs","end":[5,18]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[5,14],"name":"src/TypeClassWithFunDeps.purs","end":[5,15]},[]],"tag":"TypeVar","contents":"a"}]},{"annotation":[{"start":[5,19],"name":"src/TypeClassWithFunDeps.purs","end":[5,20]},[]],"tag":"TypeVar","contents":"b"}]}]],"edClassConstraints":[],"edFunctionalDependencies":[{"determiners":[0,1],"determined":[2]},{"determiners":[2],"determined":[3,4]}]}}],"efSourceSpan":{"start":[2,1],"name":"src/TypeClassWithFunDeps.purs","end":[5,20]}} \ No newline at end of file
+{"efVersion":"0.13.2","efModuleName":["TypeClassWithFunDeps"],"efExports":[{"ValueRef":[{"start":[2,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/TypeClassWithFunDeps.purs","end":[5,20]},{"Ident":"aMember"}]},{"TypeClassRef":[{"start":[2,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/TypeClassWithFunDeps.purs","end":[5,20]},"TypeClassWithFunDeps"]}],"efImports":[{"eiModule":["Prim"],"eiImportType":{"Implicit":[]},"eiImportedAs":["Prim"]},{"eiModule":["Prim"],"eiImportType":{"Implicit":[]},"eiImportedAs":null}],"efFixities":[],"efTypeFixities":[],"efDeclarations":[{"EDValue":{"edValueName":{"Ident":"aMember"},"edValueType":{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"ForAll","contents":["a",{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"ForAll","contents":["b",{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"ForAll","contents":["c",{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"ForAll","contents":["d",{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"ForAll","contents":["e",{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"ConstrainedType","contents":[{"constraintAnn":[{"start":[0,0],"name":"","end":[0,0]},[]],"constraintClass":[["TypeClassWithFunDeps"],"TypeClassWithFunDeps"],"constraintArgs":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeVar","contents":"a"},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeVar","contents":"b"},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeVar","contents":"c"},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeVar","contents":"d"},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeVar","contents":"e"}],"constraintData":null},{"annotation":[{"start":[5,14],"name":"/home/harry/code/purescript/tests/purs/docs/src/TypeClassWithFunDeps.purs","end":[5,20]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[5,14],"name":"/home/harry/code/purescript/tests/purs/docs/src/TypeClassWithFunDeps.purs","end":[5,20]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[5,16],"name":"/home/harry/code/purescript/tests/purs/docs/src/TypeClassWithFunDeps.purs","end":[5,18]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[5,14],"name":"/home/harry/code/purescript/tests/purs/docs/src/TypeClassWithFunDeps.purs","end":[5,15]},[]],"tag":"TypeVar","contents":"a"}]},{"annotation":[{"start":[5,19],"name":"/home/harry/code/purescript/tests/purs/docs/src/TypeClassWithFunDeps.purs","end":[5,20]},[]],"tag":"TypeVar","contents":"b"}]}]},0]},1]},2]},3]},4]}}},{"EDType":{"edTypeName":"TypeClassWithFunDeps","edTypeKind":{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"FunKind","contents":[{"annotation":[{"start":[5,16],"name":"/home/harry/code/purescript/tests/purs/docs/src/TypeClassWithFunDeps.purs","end":[5,18]},[]],"tag":"NamedKind","contents":[["Prim"],"Type"]},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"FunKind","contents":[{"annotation":[{"start":[5,16],"name":"/home/harry/code/purescript/tests/purs/docs/src/TypeClassWithFunDeps.purs","end":[5,18]},[]],"tag":"NamedKind","contents":[["Prim"],"Type"]},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"FunKind","contents":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"NamedKind","contents":[["Prim"],"Type"]},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"FunKind","contents":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"NamedKind","contents":[["Prim"],"Type"]},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"FunKind","contents":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"NamedKind","contents":[["Prim"],"Type"]},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"NamedKind","contents":[["Prim"],"Type"]}]}]}]}]}]},"edTypeDeclarationKind":"TypeSynonym"}},{"EDTypeSynonym":{"edTypeSynonymName":"TypeClassWithFunDeps","edTypeSynonymArguments":[["a",null],["b",null],["c",null],["d",null],["e",null]],"edTypeSynonymType":{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Record"]},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"RCons","contents":["aMember",{"annotation":[{"start":[5,14],"name":"/home/harry/code/purescript/tests/purs/docs/src/TypeClassWithFunDeps.purs","end":[5,20]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[5,14],"name":"/home/harry/code/purescript/tests/purs/docs/src/TypeClassWithFunDeps.purs","end":[5,20]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[5,16],"name":"/home/harry/code/purescript/tests/purs/docs/src/TypeClassWithFunDeps.purs","end":[5,18]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[5,14],"name":"/home/harry/code/purescript/tests/purs/docs/src/TypeClassWithFunDeps.purs","end":[5,15]},[]],"tag":"TypeVar","contents":"a"}]},{"annotation":[{"start":[5,19],"name":"/home/harry/code/purescript/tests/purs/docs/src/TypeClassWithFunDeps.purs","end":[5,20]},[]],"tag":"TypeVar","contents":"b"}]},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"REmpty"}]}]}}},{"EDClass":{"edClassName":"TypeClassWithFunDeps","edClassTypeArguments":[["a",null],["b",null],["c",null],["d",null],["e",null]],"edClassMembers":[[{"Ident":"aMember"},{"annotation":[{"start":[5,14],"name":"/home/harry/code/purescript/tests/purs/docs/src/TypeClassWithFunDeps.purs","end":[5,20]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[5,14],"name":"/home/harry/code/purescript/tests/purs/docs/src/TypeClassWithFunDeps.purs","end":[5,20]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[5,16],"name":"/home/harry/code/purescript/tests/purs/docs/src/TypeClassWithFunDeps.purs","end":[5,18]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[5,14],"name":"/home/harry/code/purescript/tests/purs/docs/src/TypeClassWithFunDeps.purs","end":[5,15]},[]],"tag":"TypeVar","contents":"a"}]},{"annotation":[{"start":[5,19],"name":"/home/harry/code/purescript/tests/purs/docs/src/TypeClassWithFunDeps.purs","end":[5,20]},[]],"tag":"TypeVar","contents":"b"}]}]],"edClassConstraints":[],"edFunctionalDependencies":[{"determiners":[0,1],"determined":[2]},{"determiners":[2],"determined":[3,4]}],"edIsEmpty":false}}],"efSourceSpan":{"start":[2,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/TypeClassWithFunDeps.purs","end":[5,20]}} \ No newline at end of file
diff --git a/tests/purs/docs/output/TypeClassWithoutMembers/externs.json b/tests/purs/docs/output/TypeClassWithoutMembers/externs.json
index 2a6fb21..c9adf0c 100644
--- a/tests/purs/docs/output/TypeClassWithoutMembers/externs.json
+++ b/tests/purs/docs/output/TypeClassWithoutMembers/externs.json
@@ -1 +1 @@
-{"efVersion":"0.12.5","efModuleName":["TypeClassWithoutMembers"],"efExports":[{"ReExportRef":[{"start":[1,1],"name":"src/TypeClassWithoutMembers.purs","end":[5,43]},{"exportSourceImportedFrom":["TypeClassWithoutMembersIntermediate"],"exportSourceDefinedIn":["SomeTypeClass"]},{"TypeClassRef":[{"start":[1,1],"name":"src/TypeClassWithoutMembers.purs","end":[5,43]},"SomeClass"]}]},{"ModuleRef":[{"start":[2,5],"name":"src/TypeClassWithoutMembers.purs","end":[2,47]},["TypeClassWithoutMembersIntermediate"]]}],"efImports":[{"eiModule":["Prim"],"eiImportType":{"Implicit":[]},"eiImportedAs":["Prim"]},{"eiModule":["Prim"],"eiImportType":{"Implicit":[]},"eiImportedAs":null},{"eiModule":["TypeClassWithoutMembersIntermediate"],"eiImportType":{"Implicit":[]},"eiImportedAs":null}],"efFixities":[],"efTypeFixities":[],"efDeclarations":[],"efSourceSpan":{"start":[1,1],"name":"src/TypeClassWithoutMembers.purs","end":[5,43]}} \ No newline at end of file
+{"efVersion":"0.13.2","efModuleName":["TypeClassWithoutMembers"],"efExports":[{"ReExportRef":[{"start":[1,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/TypeClassWithoutMembers.purs","end":[5,43]},{"exportSourceImportedFrom":["TypeClassWithoutMembersIntermediate"],"exportSourceDefinedIn":["SomeTypeClass"]},{"TypeClassRef":[{"start":[1,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/TypeClassWithoutMembers.purs","end":[5,43]},"SomeClass"]}]},{"ModuleRef":[{"start":[2,5],"name":"/home/harry/code/purescript/tests/purs/docs/src/TypeClassWithoutMembers.purs","end":[2,47]},["TypeClassWithoutMembersIntermediate"]]}],"efImports":[{"eiModule":["Prim"],"eiImportType":{"Implicit":[]},"eiImportedAs":["Prim"]},{"eiModule":["Prim"],"eiImportType":{"Implicit":[]},"eiImportedAs":null},{"eiModule":["TypeClassWithoutMembersIntermediate"],"eiImportType":{"Implicit":[]},"eiImportedAs":null}],"efFixities":[],"efTypeFixities":[],"efDeclarations":[],"efSourceSpan":{"start":[1,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/TypeClassWithoutMembers.purs","end":[5,43]}} \ No newline at end of file
diff --git a/tests/purs/docs/output/TypeClassWithoutMembersIntermediate/externs.json b/tests/purs/docs/output/TypeClassWithoutMembersIntermediate/externs.json
index 11523fb..16b2162 100644
--- a/tests/purs/docs/output/TypeClassWithoutMembersIntermediate/externs.json
+++ b/tests/purs/docs/output/TypeClassWithoutMembersIntermediate/externs.json
@@ -1 +1 @@
-{"efVersion":"0.12.5","efModuleName":["TypeClassWithoutMembersIntermediate"],"efExports":[{"ReExportRef":[{"start":[1,1],"name":"src/TypeClassWithoutMembersIntermediate.purs","end":[5,39]},{"exportSourceImportedFrom":["SomeTypeClass"],"exportSourceDefinedIn":["SomeTypeClass"]},{"TypeClassRef":[{"start":[1,1],"name":"src/TypeClassWithoutMembersIntermediate.purs","end":[5,39]},"SomeClass"]}]},{"ModuleRef":[{"start":[2,5],"name":"src/TypeClassWithoutMembersIntermediate.purs","end":[2,25]},["SomeTypeClass"]]}],"efImports":[{"eiModule":["Prim"],"eiImportType":{"Implicit":[]},"eiImportedAs":["Prim"]},{"eiModule":["Prim"],"eiImportType":{"Implicit":[]},"eiImportedAs":null},{"eiModule":["SomeTypeClass"],"eiImportType":{"Explicit":[{"TypeClassRef":[{"start":[5,23],"name":"src/TypeClassWithoutMembersIntermediate.purs","end":[5,38]},"SomeClass"]}]},"eiImportedAs":null}],"efFixities":[],"efTypeFixities":[],"efDeclarations":[],"efSourceSpan":{"start":[1,1],"name":"src/TypeClassWithoutMembersIntermediate.purs","end":[5,39]}} \ No newline at end of file
+{"efVersion":"0.13.2","efModuleName":["TypeClassWithoutMembersIntermediate"],"efExports":[{"ReExportRef":[{"start":[1,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/TypeClassWithoutMembersIntermediate.purs","end":[5,39]},{"exportSourceImportedFrom":["SomeTypeClass"],"exportSourceDefinedIn":["SomeTypeClass"]},{"TypeClassRef":[{"start":[1,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/TypeClassWithoutMembersIntermediate.purs","end":[5,39]},"SomeClass"]}]},{"ModuleRef":[{"start":[2,5],"name":"/home/harry/code/purescript/tests/purs/docs/src/TypeClassWithoutMembersIntermediate.purs","end":[2,25]},["SomeTypeClass"]]}],"efImports":[{"eiModule":["Prim"],"eiImportType":{"Implicit":[]},"eiImportedAs":["Prim"]},{"eiModule":["Prim"],"eiImportType":{"Implicit":[]},"eiImportedAs":null},{"eiModule":["SomeTypeClass"],"eiImportType":{"Explicit":[{"TypeClassRef":[{"start":[5,23],"name":"/home/harry/code/purescript/tests/purs/docs/src/TypeClassWithoutMembersIntermediate.purs","end":[5,38]},"SomeClass"]}]},"eiImportedAs":null}],"efFixities":[],"efTypeFixities":[],"efDeclarations":[],"efSourceSpan":{"start":[1,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/TypeClassWithoutMembersIntermediate.purs","end":[5,39]}} \ No newline at end of file
diff --git a/tests/purs/docs/output/TypeLevelString/docs.json b/tests/purs/docs/output/TypeLevelString/docs.json
index e074bc2..1622983 100644
--- a/tests/purs/docs/output/TypeLevelString/docs.json
+++ b/tests/purs/docs/output/TypeLevelString/docs.json
@@ -1 +1 @@
-{"reExports":[],"name":"TypeLevelString","comments":null,"declarations":[{"children":[{"comments":null,"title":"fooBar","info":{"declType":"instance","dependencies":[{"constraintAnn":[],"constraintClass":[["Prim","TypeError"],"Fail"],"constraintArgs":[{"annotation":[],"tag":"TypeApp","contents":[{"annotation":[],"tag":"TypeConstructor","contents":[["Prim","TypeError"],"Text"]},{"annotation":[],"tag":"TypeLevelString","contents":"oops"}]}],"constraintData":null}],"type":{"annotation":[],"tag":"TypeApp","contents":[{"annotation":[],"tag":"TypeConstructor","contents":[["TypeLevelString"],"Bar"]},{"annotation":[],"tag":"TypeConstructor","contents":[["TypeLevelString"],"Foo"]}]}},"sourceSpan":{"start":[9,1],"name":"src/TypeLevelString.purs","end":[9,49]}}],"comments":null,"title":"Foo","info":{"declType":"data","dataDeclType":"data","typeArguments":[]},"sourceSpan":{"start":[5,1],"name":"src/TypeLevelString.purs","end":[5,9]}},{"children":[{"comments":null,"title":"fooBar","info":{"declType":"instance","dependencies":[{"constraintAnn":[],"constraintClass":[["Prim","TypeError"],"Fail"],"constraintArgs":[{"annotation":[],"tag":"TypeApp","contents":[{"annotation":[],"tag":"TypeConstructor","contents":[["Prim","TypeError"],"Text"]},{"annotation":[],"tag":"TypeLevelString","contents":"oops"}]}],"constraintData":null}],"type":{"annotation":[],"tag":"TypeApp","contents":[{"annotation":[],"tag":"TypeConstructor","contents":[["TypeLevelString"],"Bar"]},{"annotation":[],"tag":"TypeConstructor","contents":[["TypeLevelString"],"Foo"]}]}},"sourceSpan":{"start":[9,1],"name":"src/TypeLevelString.purs","end":[9,49]}}],"comments":null,"title":"Bar","info":{"fundeps":[],"arguments":[["a",null]],"declType":"typeClass","superclasses":[]},"sourceSpan":{"start":[7,1],"name":"src/TypeLevelString.purs","end":[7,12]}}]} \ No newline at end of file
+{"reExports":[],"name":"TypeLevelString","comments":null,"declarations":[{"children":[{"comments":null,"title":"fooBar","info":{"declType":"instance","dependencies":[{"constraintAnn":[],"constraintClass":[["Prim","TypeError"],"Fail"],"constraintArgs":[{"annotation":[],"tag":"TypeApp","contents":[{"annotation":[],"tag":"TypeConstructor","contents":[["Prim","TypeError"],"Text"]},{"annotation":[],"tag":"TypeLevelString","contents":"oops"}]}],"constraintData":null}],"type":{"annotation":[],"tag":"TypeApp","contents":[{"annotation":[],"tag":"TypeConstructor","contents":[["TypeLevelString"],"Bar"]},{"annotation":[],"tag":"TypeConstructor","contents":[["TypeLevelString"],"Foo"]}]}},"sourceSpan":{"start":[9,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/TypeLevelString.purs","end":[9,49]}}],"comments":null,"title":"Foo","info":{"declType":"data","dataDeclType":"data","typeArguments":[]},"sourceSpan":{"start":[5,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/TypeLevelString.purs","end":[5,9]}},{"children":[{"comments":null,"title":"fooBar","info":{"declType":"instance","dependencies":[{"constraintAnn":[],"constraintClass":[["Prim","TypeError"],"Fail"],"constraintArgs":[{"annotation":[],"tag":"TypeApp","contents":[{"annotation":[],"tag":"TypeConstructor","contents":[["Prim","TypeError"],"Text"]},{"annotation":[],"tag":"TypeLevelString","contents":"oops"}]}],"constraintData":null}],"type":{"annotation":[],"tag":"TypeApp","contents":[{"annotation":[],"tag":"TypeConstructor","contents":[["TypeLevelString"],"Bar"]},{"annotation":[],"tag":"TypeConstructor","contents":[["TypeLevelString"],"Foo"]}]}},"sourceSpan":{"start":[9,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/TypeLevelString.purs","end":[9,49]}}],"comments":null,"title":"Bar","info":{"fundeps":[],"arguments":[["a",null]],"declType":"typeClass","superclasses":[]},"sourceSpan":{"start":[7,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/TypeLevelString.purs","end":[7,12]}}]} \ No newline at end of file
diff --git a/tests/purs/docs/output/TypeLevelString/externs.json b/tests/purs/docs/output/TypeLevelString/externs.json
index 8dd78c3..756e82e 100644
--- a/tests/purs/docs/output/TypeLevelString/externs.json
+++ b/tests/purs/docs/output/TypeLevelString/externs.json
@@ -1 +1 @@
-{"efVersion":"0.12.5","efModuleName":["TypeLevelString"],"efExports":[{"TypeRef":[{"start":[1,1],"name":"src/TypeLevelString.purs","end":[9,49]},"Foo",[]]},{"TypeClassRef":[{"start":[1,1],"name":"src/TypeLevelString.purs","end":[9,49]},"Bar"]},{"TypeInstanceRef":[{"start":[0,0],"name":"<generated>","end":[0,0]},{"Ident":"fooBar"}]}],"efImports":[{"eiModule":["Prim"],"eiImportType":{"Implicit":[]},"eiImportedAs":["Prim"]},{"eiModule":["Prim"],"eiImportType":{"Implicit":[]},"eiImportedAs":null},{"eiModule":["Prim","TypeError"],"eiImportType":{"Explicit":[{"TypeClassRef":[{"start":[3,24],"name":"src/TypeLevelString.purs","end":[3,34]},"Fail"]},{"TypeRef":[{"start":[3,36],"name":"src/TypeLevelString.purs","end":[3,40]},"Text",[]]}]},"eiImportedAs":null}],"efFixities":[],"efTypeFixities":[],"efDeclarations":[{"EDType":{"edTypeName":"Foo","edTypeKind":{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"NamedKind","contents":[["Prim"],"Type"]},"edTypeDeclarationKind":{"DataType":{"args":[],"ctors":[]}}}},{"EDType":{"edTypeName":"Bar","edTypeKind":{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"FunKind","contents":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"NamedKind","contents":[["Prim"],"Type"]},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"NamedKind","contents":[["Prim"],"Type"]}]},"edTypeDeclarationKind":"TypeSynonym"}},{"EDTypeSynonym":{"edTypeSynonymName":"Bar","edTypeSynonymArguments":[["a",null]],"edTypeSynonymType":{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Record"]},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"REmpty"}]}}},{"EDClass":{"edClassName":"Bar","edClassTypeArguments":[["a",null]],"edClassMembers":[],"edClassConstraints":[],"edFunctionalDependencies":[]}},{"EDInstance":{"edInstanceClassName":[["TypeLevelString"],"Bar"],"edInstanceName":{"Ident":"fooBar"},"edInstanceTypes":[{"annotation":[{"start":[9,46],"name":"src/TypeLevelString.purs","end":[9,49]},[]],"tag":"TypeConstructor","contents":[["TypeLevelString"],"Foo"]}],"edInstanceConstraints":[{"constraintAnn":[{"start":[9,20],"name":"src/TypeLevelString.purs","end":[9,38]},[]],"constraintClass":[["Prim","TypeError"],"Fail"],"constraintArgs":[{"annotation":[{"start":[9,26],"name":"src/TypeLevelString.purs","end":[9,37]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[9,26],"name":"src/TypeLevelString.purs","end":[9,30]},[]],"tag":"TypeConstructor","contents":[["Prim","TypeError"],"Text"]},{"annotation":[{"start":[9,31],"name":"src/TypeLevelString.purs","end":[9,37]},[]],"tag":"TypeLevelString","contents":"oops"}]}],"constraintData":null}],"edInstanceChain":[[["TypeLevelString"],{"Ident":"fooBar"}]],"edInstanceChainIndex":0}}],"efSourceSpan":{"start":[1,1],"name":"src/TypeLevelString.purs","end":[9,49]}} \ No newline at end of file
+{"efVersion":"0.13.2","efModuleName":["TypeLevelString"],"efExports":[{"TypeRef":[{"start":[1,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/TypeLevelString.purs","end":[9,49]},"Foo",[]]},{"TypeClassRef":[{"start":[1,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/TypeLevelString.purs","end":[9,49]},"Bar"]},{"TypeInstanceRef":[{"start":[0,0],"name":"<generated>","end":[0,0]},{"Ident":"fooBar"}]}],"efImports":[{"eiModule":["Prim"],"eiImportType":{"Implicit":[]},"eiImportedAs":["Prim"]},{"eiModule":["Prim"],"eiImportType":{"Implicit":[]},"eiImportedAs":null},{"eiModule":["Prim","TypeError"],"eiImportType":{"Explicit":[{"TypeClassRef":[{"start":[3,24],"name":"/home/harry/code/purescript/tests/purs/docs/src/TypeLevelString.purs","end":[3,34]},"Fail"]},{"TypeRef":[{"start":[3,36],"name":"/home/harry/code/purescript/tests/purs/docs/src/TypeLevelString.purs","end":[3,40]},"Text",[]]}]},"eiImportedAs":null}],"efFixities":[],"efTypeFixities":[],"efDeclarations":[{"EDType":{"edTypeName":"Foo","edTypeKind":{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"NamedKind","contents":[["Prim"],"Type"]},"edTypeDeclarationKind":{"DataType":{"args":[],"ctors":[]}}}},{"EDType":{"edTypeName":"Bar","edTypeKind":{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"FunKind","contents":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"NamedKind","contents":[["Prim"],"Type"]},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"NamedKind","contents":[["Prim"],"Type"]}]},"edTypeDeclarationKind":"TypeSynonym"}},{"EDTypeSynonym":{"edTypeSynonymName":"Bar","edTypeSynonymArguments":[["a",null]],"edTypeSynonymType":{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Record"]},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"REmpty"}]}}},{"EDClass":{"edClassName":"Bar","edClassTypeArguments":[["a",null]],"edClassMembers":[],"edClassConstraints":[],"edFunctionalDependencies":[],"edIsEmpty":true}},{"EDInstance":{"edInstanceClassName":[["TypeLevelString"],"Bar"],"edInstanceName":{"Ident":"fooBar"},"edInstanceTypes":[{"annotation":[{"start":[9,46],"name":"/home/harry/code/purescript/tests/purs/docs/src/TypeLevelString.purs","end":[9,49]},[]],"tag":"TypeConstructor","contents":[["TypeLevelString"],"Foo"]}],"edInstanceConstraints":[{"constraintAnn":[{"start":[9,20],"name":"/home/harry/code/purescript/tests/purs/docs/src/TypeLevelString.purs","end":[9,38]},[]],"constraintClass":[["Prim","TypeError"],"Fail"],"constraintArgs":[{"annotation":[{"start":[9,26],"name":"/home/harry/code/purescript/tests/purs/docs/src/TypeLevelString.purs","end":[9,37]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[9,26],"name":"/home/harry/code/purescript/tests/purs/docs/src/TypeLevelString.purs","end":[9,30]},[]],"tag":"TypeConstructor","contents":[["Prim","TypeError"],"Text"]},{"annotation":[{"start":[9,31],"name":"/home/harry/code/purescript/tests/purs/docs/src/TypeLevelString.purs","end":[9,37]},[]],"tag":"TypeLevelString","contents":"oops"}]}],"constraintData":null}],"edInstanceChain":[[["TypeLevelString"],{"Ident":"fooBar"}]],"edInstanceChainIndex":0}}],"efSourceSpan":{"start":[1,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/TypeLevelString.purs","end":[9,49]}} \ No newline at end of file
diff --git a/tests/purs/docs/output/TypeOpAliases/docs.json b/tests/purs/docs/output/TypeOpAliases/docs.json
index 0cf32cf..d906384 100644
--- a/tests/purs/docs/output/TypeOpAliases/docs.json
+++ b/tests/purs/docs/output/TypeOpAliases/docs.json
@@ -1 +1 @@
-{"reExports":[],"name":"TypeOpAliases","comments":null,"declarations":[{"children":[],"comments":null,"title":"AltFn","info":{"arguments":[["a",null],["b",null]],"declType":"typeSynonym","type":{"annotation":[],"tag":"TypeApp","contents":[{"annotation":[],"tag":"TypeApp","contents":[{"annotation":[],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[],"tag":"TypeVar","contents":"a"}]},{"annotation":[],"tag":"TypeVar","contents":"b"}]}},"sourceSpan":{"start":[3,1],"name":"src/TypeOpAliases.purs","end":[3,24]}},{"children":[],"comments":null,"title":"type (~>)","info":{"declType":"alias","alias":[["TypeOpAliases"],{"Left":"AltFn"}],"fixity":{"associativity":"infixr","precedence":6}},"sourceSpan":{"start":[5,1],"name":"src/TypeOpAliases.purs","end":[5,26]}},{"children":[],"comments":null,"title":"test1","info":{"declType":"value","type":{"annotation":[],"tag":"ForAll","contents":["b",{"annotation":[],"tag":"ForAll","contents":["a",{"annotation":[],"tag":"BinaryNoParensType","contents":[{"annotation":[],"tag":"TypeOp","contents":[["TypeOpAliases"],"~>"]},{"annotation":[],"tag":"TypeVar","contents":"a"},{"annotation":[],"tag":"TypeVar","contents":"b"}]},null]},null]}},"sourceSpan":{"start":[7,1],"name":"src/TypeOpAliases.purs","end":[7,43]}},{"children":[],"comments":null,"title":"test2","info":{"declType":"value","type":{"annotation":[],"tag":"ForAll","contents":["c",{"annotation":[],"tag":"ForAll","contents":["b",{"annotation":[],"tag":"ForAll","contents":["a",{"annotation":[],"tag":"BinaryNoParensType","contents":[{"annotation":[],"tag":"TypeOp","contents":[["TypeOpAliases"],"~>"]},{"annotation":[],"tag":"TypeVar","contents":"a"},{"annotation":[],"tag":"BinaryNoParensType","contents":[{"annotation":[],"tag":"TypeOp","contents":[["TypeOpAliases"],"~>"]},{"annotation":[],"tag":"TypeVar","contents":"b"},{"annotation":[],"tag":"TypeVar","contents":"c"}]}]},null]},null]},null]}},"sourceSpan":{"start":[8,1],"name":"src/TypeOpAliases.purs","end":[8,50]}},{"children":[],"comments":null,"title":"test3","info":{"declType":"value","type":{"annotation":[],"tag":"ForAll","contents":["d",{"annotation":[],"tag":"ForAll","contents":["c",{"annotation":[],"tag":"ForAll","contents":["b",{"annotation":[],"tag":"ForAll","contents":["a",{"annotation":[],"tag":"BinaryNoParensType","contents":[{"annotation":[],"tag":"TypeOp","contents":[["TypeOpAliases"],"~>"]},{"annotation":[],"tag":"TypeVar","contents":"a"},{"annotation":[],"tag":"BinaryNoParensType","contents":[{"annotation":[],"tag":"TypeOp","contents":[["TypeOpAliases"],"~>"]},{"annotation":[],"tag":"ParensInType","contents":{"annotation":[],"tag":"BinaryNoParensType","contents":[{"annotation":[],"tag":"TypeOp","contents":[["TypeOpAliases"],"~>"]},{"annotation":[],"tag":"TypeVar","contents":"b"},{"annotation":[],"tag":"TypeVar","contents":"c"}]}},{"annotation":[],"tag":"TypeVar","contents":"d"}]}]},null]},null]},null]},null]}},"sourceSpan":{"start":[9,1],"name":"src/TypeOpAliases.purs","end":[9,59]}},{"children":[],"comments":null,"title":"test4","info":{"declType":"value","type":{"annotation":[],"tag":"ForAll","contents":["d",{"annotation":[],"tag":"ForAll","contents":["c",{"annotation":[],"tag":"ForAll","contents":["b",{"annotation":[],"tag":"ForAll","contents":["a",{"annotation":[],"tag":"BinaryNoParensType","contents":[{"annotation":[],"tag":"TypeOp","contents":[["TypeOpAliases"],"~>"]},{"annotation":[],"tag":"ParensInType","contents":{"annotation":[],"tag":"BinaryNoParensType","contents":[{"annotation":[],"tag":"TypeOp","contents":[["TypeOpAliases"],"~>"]},{"annotation":[],"tag":"ParensInType","contents":{"annotation":[],"tag":"BinaryNoParensType","contents":[{"annotation":[],"tag":"TypeOp","contents":[["TypeOpAliases"],"~>"]},{"annotation":[],"tag":"TypeVar","contents":"a"},{"annotation":[],"tag":"TypeVar","contents":"b"}]}},{"annotation":[],"tag":"TypeVar","contents":"c"}]}},{"annotation":[],"tag":"TypeVar","contents":"d"}]},null]},null]},null]},null]}},"sourceSpan":{"start":[10,1],"name":"src/TypeOpAliases.purs","end":[10,61]}},{"children":[{"comments":null,"title":"Tuple","info":{"arguments":[{"annotation":[],"tag":"TypeVar","contents":"a"},{"annotation":[],"tag":"TypeVar","contents":"b"}],"declType":"dataConstructor"},"sourceSpan":null},{"comments":null,"title":"showTuple","info":{"declType":"instance","dependencies":[{"constraintAnn":[],"constraintClass":[["TypeOpAliases"],"Show"],"constraintArgs":[{"annotation":[],"tag":"TypeVar","contents":"a"}],"constraintData":null}],"type":{"annotation":[],"tag":"TypeApp","contents":[{"annotation":[],"tag":"TypeConstructor","contents":[["TypeOpAliases"],"Show"]},{"annotation":[],"tag":"TypeApp","contents":[{"annotation":[],"tag":"TypeApp","contents":[{"annotation":[],"tag":"TypeConstructor","contents":[["TypeOpAliases"],"Tuple"]},{"annotation":[],"tag":"TypeVar","contents":"a"}]},{"annotation":[],"tag":"TypeVar","contents":"b"}]}]}},"sourceSpan":{"start":[27,1],"name":"src/TypeOpAliases.purs","end":[28,24]}},{"comments":null,"title":"testLEither","info":{"declType":"instance","dependencies":[],"type":{"annotation":[],"tag":"TypeApp","contents":[{"annotation":[],"tag":"TypeConstructor","contents":[["TypeOpAliases"],"TestL"]},{"annotation":[],"tag":"TypeApp","contents":[{"annotation":[],"tag":"TypeApp","contents":[{"annotation":[],"tag":"TypeConstructor","contents":[["TypeOpAliases"],"Either"]},{"annotation":[],"tag":"TypeConstructor","contents":[["Prim"],"Int"]}]},{"annotation":[],"tag":"TypeApp","contents":[{"annotation":[],"tag":"TypeApp","contents":[{"annotation":[],"tag":"TypeConstructor","contents":[["TypeOpAliases"],"Tuple"]},{"annotation":[],"tag":"TypeConstructor","contents":[["Prim"],"Int"]}]},{"annotation":[],"tag":"TypeConstructor","contents":[["Prim"],"String"]}]}]}]}},"sourceSpan":{"start":[39,1],"name":"src/TypeOpAliases.purs","end":[40,27]}},{"comments":null,"title":"testREither","info":{"declType":"instance","dependencies":[],"type":{"annotation":[],"tag":"TypeApp","contents":[{"annotation":[],"tag":"TypeConstructor","contents":[["TypeOpAliases"],"TestR"]},{"annotation":[],"tag":"TypeApp","contents":[{"annotation":[],"tag":"TypeApp","contents":[{"annotation":[],"tag":"TypeConstructor","contents":[["TypeOpAliases"],"Either"]},{"annotation":[],"tag":"TypeApp","contents":[{"annotation":[],"tag":"TypeApp","contents":[{"annotation":[],"tag":"TypeConstructor","contents":[["TypeOpAliases"],"Tuple"]},{"annotation":[],"tag":"TypeConstructor","contents":[["Prim"],"Int"]}]},{"annotation":[],"tag":"TypeConstructor","contents":[["Prim"],"Int"]}]}]},{"annotation":[],"tag":"TypeConstructor","contents":[["Prim"],"String"]}]}]}},"sourceSpan":{"start":[43,1],"name":"src/TypeOpAliases.purs","end":[44,23]}}],"comments":null,"title":"Tuple","info":{"declType":"data","dataDeclType":"data","typeArguments":[["a",null],["b",null]]},"sourceSpan":{"start":[12,1],"name":"src/TypeOpAliases.purs","end":[12,27]}},{"children":[],"comments":null,"title":"(×)","info":{"declType":"alias","alias":[["TypeOpAliases"],{"Right":{"Right":"Tuple"}}],"fixity":{"associativity":"infixl","precedence":6}},"sourceSpan":{"start":[14,1],"name":"src/TypeOpAliases.purs","end":[14,20]}},{"children":[],"comments":null,"title":"type (×)","info":{"declType":"alias","alias":[["TypeOpAliases"],{"Left":"Tuple"}],"fixity":{"associativity":"infixl","precedence":6}},"sourceSpan":{"start":[15,1],"name":"src/TypeOpAliases.purs","end":[15,25]}},{"children":[{"comments":null,"title":"Left","info":{"arguments":[{"annotation":[],"tag":"TypeVar","contents":"a"}],"declType":"dataConstructor"},"sourceSpan":null},{"comments":null,"title":"Right","info":{"arguments":[{"annotation":[],"tag":"TypeVar","contents":"b"}],"declType":"dataConstructor"},"sourceSpan":null},{"comments":null,"title":"testLEither","info":{"declType":"instance","dependencies":[],"type":{"annotation":[],"tag":"TypeApp","contents":[{"annotation":[],"tag":"TypeConstructor","contents":[["TypeOpAliases"],"TestL"]},{"annotation":[],"tag":"TypeApp","contents":[{"annotation":[],"tag":"TypeApp","contents":[{"annotation":[],"tag":"TypeConstructor","contents":[["TypeOpAliases"],"Either"]},{"annotation":[],"tag":"TypeConstructor","contents":[["Prim"],"Int"]}]},{"annotation":[],"tag":"TypeApp","contents":[{"annotation":[],"tag":"TypeApp","contents":[{"annotation":[],"tag":"TypeConstructor","contents":[["TypeOpAliases"],"Tuple"]},{"annotation":[],"tag":"TypeConstructor","contents":[["Prim"],"Int"]}]},{"annotation":[],"tag":"TypeConstructor","contents":[["Prim"],"String"]}]}]}]}},"sourceSpan":{"start":[39,1],"name":"src/TypeOpAliases.purs","end":[40,27]}},{"comments":null,"title":"testREither","info":{"declType":"instance","dependencies":[],"type":{"annotation":[],"tag":"TypeApp","contents":[{"annotation":[],"tag":"TypeConstructor","contents":[["TypeOpAliases"],"TestR"]},{"annotation":[],"tag":"TypeApp","contents":[{"annotation":[],"tag":"TypeApp","contents":[{"annotation":[],"tag":"TypeConstructor","contents":[["TypeOpAliases"],"Either"]},{"annotation":[],"tag":"TypeApp","contents":[{"annotation":[],"tag":"TypeApp","contents":[{"annotation":[],"tag":"TypeConstructor","contents":[["TypeOpAliases"],"Tuple"]},{"annotation":[],"tag":"TypeConstructor","contents":[["Prim"],"Int"]}]},{"annotation":[],"tag":"TypeConstructor","contents":[["Prim"],"Int"]}]}]},{"annotation":[],"tag":"TypeConstructor","contents":[["Prim"],"String"]}]}]}},"sourceSpan":{"start":[43,1],"name":"src/TypeOpAliases.purs","end":[44,23]}}],"comments":null,"title":"Either","info":{"declType":"data","dataDeclType":"data","typeArguments":[["a",null],["b",null]]},"sourceSpan":{"start":[17,1],"name":"src/TypeOpAliases.purs","end":[17,35]}},{"children":[],"comments":null,"title":"type (⊕)","info":{"declType":"alias","alias":[["TypeOpAliases"],{"Left":"Either"}],"fixity":{"associativity":"infixl","precedence":5}},"sourceSpan":{"start":[19,1],"name":"src/TypeOpAliases.purs","end":[19,26]}},{"children":[],"comments":null,"title":"third","info":{"declType":"value","type":{"annotation":[],"tag":"ForAll","contents":["c",{"annotation":[],"tag":"ForAll","contents":["b",{"annotation":[],"tag":"ForAll","contents":["a",{"annotation":[],"tag":"TypeApp","contents":[{"annotation":[],"tag":"TypeApp","contents":[{"annotation":[],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[],"tag":"BinaryNoParensType","contents":[{"annotation":[],"tag":"TypeOp","contents":[["TypeOpAliases"],"×"]},{"annotation":[],"tag":"TypeVar","contents":"a"},{"annotation":[],"tag":"BinaryNoParensType","contents":[{"annotation":[],"tag":"TypeOp","contents":[["TypeOpAliases"],"×"]},{"annotation":[],"tag":"TypeVar","contents":"b"},{"annotation":[],"tag":"TypeVar","contents":"c"}]}]}]},{"annotation":[],"tag":"TypeVar","contents":"c"}]},null]},null]},null]}},"sourceSpan":{"start":[21,1],"name":"src/TypeOpAliases.purs","end":[21,31]}},{"children":[{"comments":null,"title":"show","info":{"declType":"typeClassMember","type":{"annotation":[],"tag":"TypeApp","contents":[{"annotation":[],"tag":"TypeApp","contents":[{"annotation":[],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[],"tag":"TypeVar","contents":"a"}]},{"annotation":[],"tag":"TypeConstructor","contents":[["Prim"],"String"]}]}},"sourceSpan":{"start":[25,3],"name":"src/TypeOpAliases.purs","end":[25,22]}},{"comments":null,"title":"showTuple","info":{"declType":"instance","dependencies":[{"constraintAnn":[],"constraintClass":[["TypeOpAliases"],"Show"],"constraintArgs":[{"annotation":[],"tag":"TypeVar","contents":"a"}],"constraintData":null}],"type":{"annotation":[],"tag":"TypeApp","contents":[{"annotation":[],"tag":"TypeConstructor","contents":[["TypeOpAliases"],"Show"]},{"annotation":[],"tag":"TypeApp","contents":[{"annotation":[],"tag":"TypeApp","contents":[{"annotation":[],"tag":"TypeConstructor","contents":[["TypeOpAliases"],"Tuple"]},{"annotation":[],"tag":"TypeVar","contents":"a"}]},{"annotation":[],"tag":"TypeVar","contents":"b"}]}]}},"sourceSpan":{"start":[27,1],"name":"src/TypeOpAliases.purs","end":[28,24]}}],"comments":null,"title":"Show","info":{"fundeps":[],"arguments":[["a",null]],"declType":"typeClass","superclasses":[]},"sourceSpan":{"start":[24,1],"name":"src/TypeOpAliases.purs","end":[25,22]}},{"children":[{"comments":null,"title":"testL","info":{"declType":"typeClassMember","type":{"annotation":[],"tag":"TypeVar","contents":"a"}},"sourceSpan":{"start":[33,3],"name":"src/TypeOpAliases.purs","end":[33,13]}},{"comments":null,"title":"testLEither","info":{"declType":"instance","dependencies":[],"type":{"annotation":[],"tag":"TypeApp","contents":[{"annotation":[],"tag":"TypeConstructor","contents":[["TypeOpAliases"],"TestL"]},{"annotation":[],"tag":"TypeApp","contents":[{"annotation":[],"tag":"TypeApp","contents":[{"annotation":[],"tag":"TypeConstructor","contents":[["TypeOpAliases"],"Either"]},{"annotation":[],"tag":"TypeConstructor","contents":[["Prim"],"Int"]}]},{"annotation":[],"tag":"TypeApp","contents":[{"annotation":[],"tag":"TypeApp","contents":[{"annotation":[],"tag":"TypeConstructor","contents":[["TypeOpAliases"],"Tuple"]},{"annotation":[],"tag":"TypeConstructor","contents":[["Prim"],"Int"]}]},{"annotation":[],"tag":"TypeConstructor","contents":[["Prim"],"String"]}]}]}]}},"sourceSpan":{"start":[39,1],"name":"src/TypeOpAliases.purs","end":[40,27]}}],"comments":null,"title":"TestL","info":{"fundeps":[],"arguments":[["a",null]],"declType":"typeClass","superclasses":[]},"sourceSpan":{"start":[32,1],"name":"src/TypeOpAliases.purs","end":[33,13]}},{"children":[{"comments":null,"title":"testR","info":{"declType":"typeClassMember","type":{"annotation":[],"tag":"TypeVar","contents":"a"}},"sourceSpan":{"start":[36,3],"name":"src/TypeOpAliases.purs","end":[36,13]}},{"comments":null,"title":"testREither","info":{"declType":"instance","dependencies":[],"type":{"annotation":[],"tag":"TypeApp","contents":[{"annotation":[],"tag":"TypeConstructor","contents":[["TypeOpAliases"],"TestR"]},{"annotation":[],"tag":"TypeApp","contents":[{"annotation":[],"tag":"TypeApp","contents":[{"annotation":[],"tag":"TypeConstructor","contents":[["TypeOpAliases"],"Either"]},{"annotation":[],"tag":"TypeApp","contents":[{"annotation":[],"tag":"TypeApp","contents":[{"annotation":[],"tag":"TypeConstructor","contents":[["TypeOpAliases"],"Tuple"]},{"annotation":[],"tag":"TypeConstructor","contents":[["Prim"],"Int"]}]},{"annotation":[],"tag":"TypeConstructor","contents":[["Prim"],"Int"]}]}]},{"annotation":[],"tag":"TypeConstructor","contents":[["Prim"],"String"]}]}]}},"sourceSpan":{"start":[43,1],"name":"src/TypeOpAliases.purs","end":[44,23]}}],"comments":null,"title":"TestR","info":{"fundeps":[],"arguments":[["a",null]],"declType":"typeClass","superclasses":[]},"sourceSpan":{"start":[35,1],"name":"src/TypeOpAliases.purs","end":[36,13]}}]} \ No newline at end of file
+{"reExports":[],"name":"TypeOpAliases","comments":null,"declarations":[{"children":[],"comments":null,"title":"AltFn","info":{"arguments":[["a",null],["b",null]],"declType":"typeSynonym","type":{"annotation":[],"tag":"TypeApp","contents":[{"annotation":[],"tag":"TypeApp","contents":[{"annotation":[],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[],"tag":"TypeVar","contents":"a"}]},{"annotation":[],"tag":"TypeVar","contents":"b"}]}},"sourceSpan":{"start":[3,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/TypeOpAliases.purs","end":[3,24]}},{"children":[],"comments":null,"title":"type (~>)","info":{"declType":"alias","alias":[["TypeOpAliases"],{"Left":"AltFn"}],"fixity":{"associativity":"infixr","precedence":6}},"sourceSpan":{"start":[5,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/TypeOpAliases.purs","end":[5,26]}},{"children":[],"comments":null,"title":"test1","info":{"declType":"value","type":{"annotation":[],"tag":"ForAll","contents":["b",{"annotation":[],"tag":"ForAll","contents":["a",{"annotation":[],"tag":"BinaryNoParensType","contents":[{"annotation":[],"tag":"TypeOp","contents":[["TypeOpAliases"],"~>"]},{"annotation":[],"tag":"TypeVar","contents":"a"},{"annotation":[],"tag":"TypeVar","contents":"b"}]},null]},null]}},"sourceSpan":{"start":[7,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/TypeOpAliases.purs","end":[7,43]}},{"children":[],"comments":null,"title":"test2","info":{"declType":"value","type":{"annotation":[],"tag":"ForAll","contents":["c",{"annotation":[],"tag":"ForAll","contents":["b",{"annotation":[],"tag":"ForAll","contents":["a",{"annotation":[],"tag":"BinaryNoParensType","contents":[{"annotation":[],"tag":"TypeOp","contents":[["TypeOpAliases"],"~>"]},{"annotation":[],"tag":"TypeVar","contents":"a"},{"annotation":[],"tag":"BinaryNoParensType","contents":[{"annotation":[],"tag":"TypeOp","contents":[["TypeOpAliases"],"~>"]},{"annotation":[],"tag":"TypeVar","contents":"b"},{"annotation":[],"tag":"TypeVar","contents":"c"}]}]},null]},null]},null]}},"sourceSpan":{"start":[8,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/TypeOpAliases.purs","end":[8,50]}},{"children":[],"comments":null,"title":"test3","info":{"declType":"value","type":{"annotation":[],"tag":"ForAll","contents":["d",{"annotation":[],"tag":"ForAll","contents":["c",{"annotation":[],"tag":"ForAll","contents":["b",{"annotation":[],"tag":"ForAll","contents":["a",{"annotation":[],"tag":"BinaryNoParensType","contents":[{"annotation":[],"tag":"TypeOp","contents":[["TypeOpAliases"],"~>"]},{"annotation":[],"tag":"TypeVar","contents":"a"},{"annotation":[],"tag":"BinaryNoParensType","contents":[{"annotation":[],"tag":"TypeOp","contents":[["TypeOpAliases"],"~>"]},{"annotation":[],"tag":"ParensInType","contents":{"annotation":[],"tag":"BinaryNoParensType","contents":[{"annotation":[],"tag":"TypeOp","contents":[["TypeOpAliases"],"~>"]},{"annotation":[],"tag":"TypeVar","contents":"b"},{"annotation":[],"tag":"TypeVar","contents":"c"}]}},{"annotation":[],"tag":"TypeVar","contents":"d"}]}]},null]},null]},null]},null]}},"sourceSpan":{"start":[9,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/TypeOpAliases.purs","end":[9,59]}},{"children":[],"comments":null,"title":"test4","info":{"declType":"value","type":{"annotation":[],"tag":"ForAll","contents":["d",{"annotation":[],"tag":"ForAll","contents":["c",{"annotation":[],"tag":"ForAll","contents":["b",{"annotation":[],"tag":"ForAll","contents":["a",{"annotation":[],"tag":"BinaryNoParensType","contents":[{"annotation":[],"tag":"TypeOp","contents":[["TypeOpAliases"],"~>"]},{"annotation":[],"tag":"ParensInType","contents":{"annotation":[],"tag":"BinaryNoParensType","contents":[{"annotation":[],"tag":"TypeOp","contents":[["TypeOpAliases"],"~>"]},{"annotation":[],"tag":"ParensInType","contents":{"annotation":[],"tag":"BinaryNoParensType","contents":[{"annotation":[],"tag":"TypeOp","contents":[["TypeOpAliases"],"~>"]},{"annotation":[],"tag":"TypeVar","contents":"a"},{"annotation":[],"tag":"TypeVar","contents":"b"}]}},{"annotation":[],"tag":"TypeVar","contents":"c"}]}},{"annotation":[],"tag":"TypeVar","contents":"d"}]},null]},null]},null]},null]}},"sourceSpan":{"start":[10,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/TypeOpAliases.purs","end":[10,61]}},{"children":[{"comments":null,"title":"Tuple","info":{"arguments":[{"annotation":[],"tag":"TypeVar","contents":"a"},{"annotation":[],"tag":"TypeVar","contents":"b"}],"declType":"dataConstructor"},"sourceSpan":null},{"comments":null,"title":"showTuple","info":{"declType":"instance","dependencies":[{"constraintAnn":[],"constraintClass":[["TypeOpAliases"],"Show"],"constraintArgs":[{"annotation":[],"tag":"TypeVar","contents":"a"}],"constraintData":null}],"type":{"annotation":[],"tag":"TypeApp","contents":[{"annotation":[],"tag":"TypeConstructor","contents":[["TypeOpAliases"],"Show"]},{"annotation":[],"tag":"TypeApp","contents":[{"annotation":[],"tag":"TypeApp","contents":[{"annotation":[],"tag":"TypeConstructor","contents":[["TypeOpAliases"],"Tuple"]},{"annotation":[],"tag":"TypeVar","contents":"a"}]},{"annotation":[],"tag":"TypeVar","contents":"b"}]}]}},"sourceSpan":{"start":[27,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/TypeOpAliases.purs","end":[28,24]}},{"comments":null,"title":"testLEither","info":{"declType":"instance","dependencies":[],"type":{"annotation":[],"tag":"TypeApp","contents":[{"annotation":[],"tag":"TypeConstructor","contents":[["TypeOpAliases"],"TestL"]},{"annotation":[],"tag":"TypeApp","contents":[{"annotation":[],"tag":"TypeApp","contents":[{"annotation":[],"tag":"TypeConstructor","contents":[["TypeOpAliases"],"Either"]},{"annotation":[],"tag":"TypeConstructor","contents":[["Prim"],"Int"]}]},{"annotation":[],"tag":"TypeApp","contents":[{"annotation":[],"tag":"TypeApp","contents":[{"annotation":[],"tag":"TypeConstructor","contents":[["TypeOpAliases"],"Tuple"]},{"annotation":[],"tag":"TypeConstructor","contents":[["Prim"],"Int"]}]},{"annotation":[],"tag":"TypeConstructor","contents":[["Prim"],"String"]}]}]}]}},"sourceSpan":{"start":[39,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/TypeOpAliases.purs","end":[40,27]}},{"comments":null,"title":"testREither","info":{"declType":"instance","dependencies":[],"type":{"annotation":[],"tag":"TypeApp","contents":[{"annotation":[],"tag":"TypeConstructor","contents":[["TypeOpAliases"],"TestR"]},{"annotation":[],"tag":"TypeApp","contents":[{"annotation":[],"tag":"TypeApp","contents":[{"annotation":[],"tag":"TypeConstructor","contents":[["TypeOpAliases"],"Either"]},{"annotation":[],"tag":"TypeApp","contents":[{"annotation":[],"tag":"TypeApp","contents":[{"annotation":[],"tag":"TypeConstructor","contents":[["TypeOpAliases"],"Tuple"]},{"annotation":[],"tag":"TypeConstructor","contents":[["Prim"],"Int"]}]},{"annotation":[],"tag":"TypeConstructor","contents":[["Prim"],"Int"]}]}]},{"annotation":[],"tag":"TypeConstructor","contents":[["Prim"],"String"]}]}]}},"sourceSpan":{"start":[43,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/TypeOpAliases.purs","end":[44,23]}}],"comments":null,"title":"Tuple","info":{"declType":"data","dataDeclType":"data","typeArguments":[["a",null],["b",null]]},"sourceSpan":{"start":[12,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/TypeOpAliases.purs","end":[12,27]}},{"children":[],"comments":null,"title":"(×)","info":{"declType":"alias","alias":[["TypeOpAliases"],{"Right":{"Right":"Tuple"}}],"fixity":{"associativity":"infixl","precedence":6}},"sourceSpan":{"start":[14,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/TypeOpAliases.purs","end":[14,20]}},{"children":[],"comments":null,"title":"type (×)","info":{"declType":"alias","alias":[["TypeOpAliases"],{"Left":"Tuple"}],"fixity":{"associativity":"infixl","precedence":6}},"sourceSpan":{"start":[15,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/TypeOpAliases.purs","end":[15,25]}},{"children":[{"comments":null,"title":"Left","info":{"arguments":[{"annotation":[],"tag":"TypeVar","contents":"a"}],"declType":"dataConstructor"},"sourceSpan":null},{"comments":null,"title":"Right","info":{"arguments":[{"annotation":[],"tag":"TypeVar","contents":"b"}],"declType":"dataConstructor"},"sourceSpan":null},{"comments":null,"title":"testLEither","info":{"declType":"instance","dependencies":[],"type":{"annotation":[],"tag":"TypeApp","contents":[{"annotation":[],"tag":"TypeConstructor","contents":[["TypeOpAliases"],"TestL"]},{"annotation":[],"tag":"TypeApp","contents":[{"annotation":[],"tag":"TypeApp","contents":[{"annotation":[],"tag":"TypeConstructor","contents":[["TypeOpAliases"],"Either"]},{"annotation":[],"tag":"TypeConstructor","contents":[["Prim"],"Int"]}]},{"annotation":[],"tag":"TypeApp","contents":[{"annotation":[],"tag":"TypeApp","contents":[{"annotation":[],"tag":"TypeConstructor","contents":[["TypeOpAliases"],"Tuple"]},{"annotation":[],"tag":"TypeConstructor","contents":[["Prim"],"Int"]}]},{"annotation":[],"tag":"TypeConstructor","contents":[["Prim"],"String"]}]}]}]}},"sourceSpan":{"start":[39,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/TypeOpAliases.purs","end":[40,27]}},{"comments":null,"title":"testREither","info":{"declType":"instance","dependencies":[],"type":{"annotation":[],"tag":"TypeApp","contents":[{"annotation":[],"tag":"TypeConstructor","contents":[["TypeOpAliases"],"TestR"]},{"annotation":[],"tag":"TypeApp","contents":[{"annotation":[],"tag":"TypeApp","contents":[{"annotation":[],"tag":"TypeConstructor","contents":[["TypeOpAliases"],"Either"]},{"annotation":[],"tag":"TypeApp","contents":[{"annotation":[],"tag":"TypeApp","contents":[{"annotation":[],"tag":"TypeConstructor","contents":[["TypeOpAliases"],"Tuple"]},{"annotation":[],"tag":"TypeConstructor","contents":[["Prim"],"Int"]}]},{"annotation":[],"tag":"TypeConstructor","contents":[["Prim"],"Int"]}]}]},{"annotation":[],"tag":"TypeConstructor","contents":[["Prim"],"String"]}]}]}},"sourceSpan":{"start":[43,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/TypeOpAliases.purs","end":[44,23]}}],"comments":null,"title":"Either","info":{"declType":"data","dataDeclType":"data","typeArguments":[["a",null],["b",null]]},"sourceSpan":{"start":[17,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/TypeOpAliases.purs","end":[17,35]}},{"children":[],"comments":null,"title":"type (⊕)","info":{"declType":"alias","alias":[["TypeOpAliases"],{"Left":"Either"}],"fixity":{"associativity":"infixl","precedence":5}},"sourceSpan":{"start":[19,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/TypeOpAliases.purs","end":[19,26]}},{"children":[],"comments":null,"title":"third","info":{"declType":"value","type":{"annotation":[],"tag":"ForAll","contents":["c",{"annotation":[],"tag":"ForAll","contents":["b",{"annotation":[],"tag":"ForAll","contents":["a",{"annotation":[],"tag":"TypeApp","contents":[{"annotation":[],"tag":"TypeApp","contents":[{"annotation":[],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[],"tag":"BinaryNoParensType","contents":[{"annotation":[],"tag":"TypeOp","contents":[["TypeOpAliases"],"×"]},{"annotation":[],"tag":"TypeVar","contents":"a"},{"annotation":[],"tag":"BinaryNoParensType","contents":[{"annotation":[],"tag":"TypeOp","contents":[["TypeOpAliases"],"×"]},{"annotation":[],"tag":"TypeVar","contents":"b"},{"annotation":[],"tag":"TypeVar","contents":"c"}]}]}]},{"annotation":[],"tag":"TypeVar","contents":"c"}]},null]},null]},null]}},"sourceSpan":{"start":[21,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/TypeOpAliases.purs","end":[21,31]}},{"children":[{"comments":null,"title":"show","info":{"declType":"typeClassMember","type":{"annotation":[],"tag":"TypeApp","contents":[{"annotation":[],"tag":"TypeApp","contents":[{"annotation":[],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[],"tag":"TypeVar","contents":"a"}]},{"annotation":[],"tag":"TypeConstructor","contents":[["Prim"],"String"]}]}},"sourceSpan":{"start":[25,3],"name":"/home/harry/code/purescript/tests/purs/docs/src/TypeOpAliases.purs","end":[25,22]}},{"comments":null,"title":"showTuple","info":{"declType":"instance","dependencies":[{"constraintAnn":[],"constraintClass":[["TypeOpAliases"],"Show"],"constraintArgs":[{"annotation":[],"tag":"TypeVar","contents":"a"}],"constraintData":null}],"type":{"annotation":[],"tag":"TypeApp","contents":[{"annotation":[],"tag":"TypeConstructor","contents":[["TypeOpAliases"],"Show"]},{"annotation":[],"tag":"TypeApp","contents":[{"annotation":[],"tag":"TypeApp","contents":[{"annotation":[],"tag":"TypeConstructor","contents":[["TypeOpAliases"],"Tuple"]},{"annotation":[],"tag":"TypeVar","contents":"a"}]},{"annotation":[],"tag":"TypeVar","contents":"b"}]}]}},"sourceSpan":{"start":[27,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/TypeOpAliases.purs","end":[28,24]}}],"comments":null,"title":"Show","info":{"fundeps":[],"arguments":[["a",null]],"declType":"typeClass","superclasses":[]},"sourceSpan":{"start":[24,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/TypeOpAliases.purs","end":[25,22]}},{"children":[{"comments":null,"title":"testL","info":{"declType":"typeClassMember","type":{"annotation":[],"tag":"TypeVar","contents":"a"}},"sourceSpan":{"start":[33,3],"name":"/home/harry/code/purescript/tests/purs/docs/src/TypeOpAliases.purs","end":[33,13]}},{"comments":null,"title":"testLEither","info":{"declType":"instance","dependencies":[],"type":{"annotation":[],"tag":"TypeApp","contents":[{"annotation":[],"tag":"TypeConstructor","contents":[["TypeOpAliases"],"TestL"]},{"annotation":[],"tag":"TypeApp","contents":[{"annotation":[],"tag":"TypeApp","contents":[{"annotation":[],"tag":"TypeConstructor","contents":[["TypeOpAliases"],"Either"]},{"annotation":[],"tag":"TypeConstructor","contents":[["Prim"],"Int"]}]},{"annotation":[],"tag":"TypeApp","contents":[{"annotation":[],"tag":"TypeApp","contents":[{"annotation":[],"tag":"TypeConstructor","contents":[["TypeOpAliases"],"Tuple"]},{"annotation":[],"tag":"TypeConstructor","contents":[["Prim"],"Int"]}]},{"annotation":[],"tag":"TypeConstructor","contents":[["Prim"],"String"]}]}]}]}},"sourceSpan":{"start":[39,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/TypeOpAliases.purs","end":[40,27]}}],"comments":null,"title":"TestL","info":{"fundeps":[],"arguments":[["a",null]],"declType":"typeClass","superclasses":[]},"sourceSpan":{"start":[32,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/TypeOpAliases.purs","end":[33,13]}},{"children":[{"comments":null,"title":"testR","info":{"declType":"typeClassMember","type":{"annotation":[],"tag":"TypeVar","contents":"a"}},"sourceSpan":{"start":[36,3],"name":"/home/harry/code/purescript/tests/purs/docs/src/TypeOpAliases.purs","end":[36,13]}},{"comments":null,"title":"testREither","info":{"declType":"instance","dependencies":[],"type":{"annotation":[],"tag":"TypeApp","contents":[{"annotation":[],"tag":"TypeConstructor","contents":[["TypeOpAliases"],"TestR"]},{"annotation":[],"tag":"TypeApp","contents":[{"annotation":[],"tag":"TypeApp","contents":[{"annotation":[],"tag":"TypeConstructor","contents":[["TypeOpAliases"],"Either"]},{"annotation":[],"tag":"TypeApp","contents":[{"annotation":[],"tag":"TypeApp","contents":[{"annotation":[],"tag":"TypeConstructor","contents":[["TypeOpAliases"],"Tuple"]},{"annotation":[],"tag":"TypeConstructor","contents":[["Prim"],"Int"]}]},{"annotation":[],"tag":"TypeConstructor","contents":[["Prim"],"Int"]}]}]},{"annotation":[],"tag":"TypeConstructor","contents":[["Prim"],"String"]}]}]}},"sourceSpan":{"start":[43,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/TypeOpAliases.purs","end":[44,23]}}],"comments":null,"title":"TestR","info":{"fundeps":[],"arguments":[["a",null]],"declType":"typeClass","superclasses":[]},"sourceSpan":{"start":[35,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/TypeOpAliases.purs","end":[36,13]}}]} \ No newline at end of file
diff --git a/tests/purs/docs/output/TypeOpAliases/externs.json b/tests/purs/docs/output/TypeOpAliases/externs.json
index c859ad7..415fc44 100644
--- a/tests/purs/docs/output/TypeOpAliases/externs.json
+++ b/tests/purs/docs/output/TypeOpAliases/externs.json
@@ -1 +1 @@
-{"efVersion":"0.12.5","efModuleName":["TypeOpAliases"],"efExports":[{"ValueRef":[{"start":[1,1],"name":"src/TypeOpAliases.purs","end":[44,23]},{"Ident":"show"}]},{"ValueRef":[{"start":[1,1],"name":"src/TypeOpAliases.purs","end":[44,23]},{"Ident":"testL"}]},{"ValueRef":[{"start":[1,1],"name":"src/TypeOpAliases.purs","end":[44,23]},{"Ident":"testR"}]},{"TypeRef":[{"start":[1,1],"name":"src/TypeOpAliases.purs","end":[44,23]},"AltFn",[]]},{"TypeOpRef":[{"start":[1,1],"name":"src/TypeOpAliases.purs","end":[44,23]},"~>"]},{"ValueRef":[{"start":[1,1],"name":"src/TypeOpAliases.purs","end":[44,23]},{"Ident":"test1"}]},{"ValueRef":[{"start":[1,1],"name":"src/TypeOpAliases.purs","end":[44,23]},{"Ident":"test2"}]},{"ValueRef":[{"start":[1,1],"name":"src/TypeOpAliases.purs","end":[44,23]},{"Ident":"test3"}]},{"ValueRef":[{"start":[1,1],"name":"src/TypeOpAliases.purs","end":[44,23]},{"Ident":"test4"}]},{"TypeRef":[{"start":[1,1],"name":"src/TypeOpAliases.purs","end":[44,23]},"Tuple",["Tuple"]]},{"ValueOpRef":[{"start":[1,1],"name":"src/TypeOpAliases.purs","end":[44,23]},"×"]},{"TypeOpRef":[{"start":[1,1],"name":"src/TypeOpAliases.purs","end":[44,23]},"×"]},{"TypeRef":[{"start":[1,1],"name":"src/TypeOpAliases.purs","end":[44,23]},"Either",["Left","Right"]]},{"TypeOpRef":[{"start":[1,1],"name":"src/TypeOpAliases.purs","end":[44,23]},"⊕"]},{"ValueRef":[{"start":[1,1],"name":"src/TypeOpAliases.purs","end":[44,23]},{"Ident":"third"}]},{"TypeClassRef":[{"start":[1,1],"name":"src/TypeOpAliases.purs","end":[44,23]},"Show"]},{"TypeClassRef":[{"start":[1,1],"name":"src/TypeOpAliases.purs","end":[44,23]},"TestL"]},{"TypeClassRef":[{"start":[1,1],"name":"src/TypeOpAliases.purs","end":[44,23]},"TestR"]},{"TypeInstanceRef":[{"start":[0,0],"name":"<generated>","end":[0,0]},{"Ident":"showTuple"}]},{"TypeInstanceRef":[{"start":[0,0],"name":"<generated>","end":[0,0]},{"Ident":"testLEither"}]},{"TypeInstanceRef":[{"start":[0,0],"name":"<generated>","end":[0,0]},{"Ident":"testREither"}]}],"efImports":[{"eiModule":["Prim"],"eiImportType":{"Implicit":[]},"eiImportedAs":["Prim"]},{"eiModule":["Prim"],"eiImportType":{"Implicit":[]},"eiImportedAs":null}],"efFixities":[{"efAssociativity":"infixl","efPrecedence":6,"efOperator":"×","efAlias":[["TypeOpAliases"],{"Right":"Tuple"}]}],"efTypeFixities":[{"efTypeAssociativity":"infixr","efTypePrecedence":6,"efTypeOperator":"~>","efTypeAlias":[["TypeOpAliases"],"AltFn"]},{"efTypeAssociativity":"infixl","efTypePrecedence":6,"efTypeOperator":"×","efTypeAlias":[["TypeOpAliases"],"Tuple"]},{"efTypeAssociativity":"infixl","efTypePrecedence":5,"efTypeOperator":"⊕","efTypeAlias":[["TypeOpAliases"],"Either"]}],"efDeclarations":[{"EDValue":{"edValueName":{"Ident":"show"},"edValueType":{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"ForAll","contents":["a",{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"ConstrainedType","contents":[{"constraintAnn":[{"start":[0,0],"name":"","end":[0,0]},[]],"constraintClass":[["TypeOpAliases"],"Show"],"constraintArgs":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeVar","contents":"a"}],"constraintData":null},{"annotation":[{"start":[25,11],"name":"src/TypeOpAliases.purs","end":[25,22]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[25,11],"name":"src/TypeOpAliases.purs","end":[25,22]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[25,13],"name":"src/TypeOpAliases.purs","end":[25,15]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[25,11],"name":"src/TypeOpAliases.purs","end":[25,12]},[]],"tag":"TypeVar","contents":"a"}]},{"annotation":[{"start":[25,16],"name":"src/TypeOpAliases.purs","end":[25,22]},[]],"tag":"TypeConstructor","contents":[["Prim"],"String"]}]}]},8]}}},{"EDValue":{"edValueName":{"Ident":"testL"},"edValueType":{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"ForAll","contents":["a",{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"ConstrainedType","contents":[{"constraintAnn":[{"start":[0,0],"name":"","end":[0,0]},[]],"constraintClass":[["TypeOpAliases"],"TestL"],"constraintArgs":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeVar","contents":"a"}],"constraintData":null},{"annotation":[{"start":[33,12],"name":"src/TypeOpAliases.purs","end":[33,13]},[]],"tag":"TypeVar","contents":"a"}]},7]}}},{"EDValue":{"edValueName":{"Ident":"testR"},"edValueType":{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"ForAll","contents":["a",{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"ConstrainedType","contents":[{"constraintAnn":[{"start":[0,0],"name":"","end":[0,0]},[]],"constraintClass":[["TypeOpAliases"],"TestR"],"constraintArgs":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeVar","contents":"a"}],"constraintData":null},{"annotation":[{"start":[36,12],"name":"src/TypeOpAliases.purs","end":[36,13]},[]],"tag":"TypeVar","contents":"a"}]},6]}}},{"EDType":{"edTypeName":"AltFn","edTypeKind":{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"FunKind","contents":[{"annotation":[{"start":[3,20],"name":"src/TypeOpAliases.purs","end":[3,22]},[]],"tag":"NamedKind","contents":[["Prim"],"Type"]},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"FunKind","contents":[{"annotation":[{"start":[3,20],"name":"src/TypeOpAliases.purs","end":[3,22]},[]],"tag":"NamedKind","contents":[["Prim"],"Type"]},{"annotation":[{"start":[3,20],"name":"src/TypeOpAliases.purs","end":[3,22]},[]],"tag":"NamedKind","contents":[["Prim"],"Type"]}]}]},"edTypeDeclarationKind":"TypeSynonym"}},{"EDTypeSynonym":{"edTypeSynonymName":"AltFn","edTypeSynonymArguments":[["a",{"annotation":[{"start":[3,20],"name":"src/TypeOpAliases.purs","end":[3,22]},[]],"tag":"NamedKind","contents":[["Prim"],"Type"]}],["b",{"annotation":[{"start":[3,20],"name":"src/TypeOpAliases.purs","end":[3,22]},[]],"tag":"NamedKind","contents":[["Prim"],"Type"]}]],"edTypeSynonymType":{"annotation":[{"start":[3,18],"name":"src/TypeOpAliases.purs","end":[3,24]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[3,18],"name":"src/TypeOpAliases.purs","end":[3,24]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[3,20],"name":"src/TypeOpAliases.purs","end":[3,22]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[3,18],"name":"src/TypeOpAliases.purs","end":[3,19]},[]],"tag":"TypeVar","contents":"a"}]},{"annotation":[{"start":[3,23],"name":"src/TypeOpAliases.purs","end":[3,24]},[]],"tag":"TypeVar","contents":"b"}]}}},{"EDValue":{"edValueName":{"Ident":"test1"},"edValueType":{"annotation":[{"start":[7,25],"name":"src/TypeOpAliases.purs","end":[7,43]},[]],"tag":"ForAll","contents":["b",{"annotation":[{"start":[7,32],"name":"src/TypeOpAliases.purs","end":[7,43]},[]],"tag":"ForAll","contents":["a",{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeConstructor","contents":[["TypeOpAliases"],"AltFn"]},{"annotation":[{"start":[7,37],"name":"src/TypeOpAliases.purs","end":[7,38]},[]],"tag":"TypeVar","contents":"a"}]},{"annotation":[{"start":[7,42],"name":"src/TypeOpAliases.purs","end":[7,43]},[]],"tag":"TypeVar","contents":"b"}]},null]},null]}}},{"EDValue":{"edValueName":{"Ident":"test2"},"edValueType":{"annotation":[{"start":[8,25],"name":"src/TypeOpAliases.purs","end":[8,50]},[]],"tag":"ForAll","contents":["c",{"annotation":[{"start":[8,32],"name":"src/TypeOpAliases.purs","end":[8,50]},[]],"tag":"ForAll","contents":["b",{"annotation":[{"start":[8,32],"name":"src/TypeOpAliases.purs","end":[8,50]},[]],"tag":"ForAll","contents":["a",{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeConstructor","contents":[["TypeOpAliases"],"AltFn"]},{"annotation":[{"start":[8,39],"name":"src/TypeOpAliases.purs","end":[8,40]},[]],"tag":"TypeVar","contents":"a"}]},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeConstructor","contents":[["TypeOpAliases"],"AltFn"]},{"annotation":[{"start":[8,44],"name":"src/TypeOpAliases.purs","end":[8,45]},[]],"tag":"TypeVar","contents":"b"}]},{"annotation":[{"start":[8,49],"name":"src/TypeOpAliases.purs","end":[8,50]},[]],"tag":"TypeVar","contents":"c"}]}]},null]},null]},null]}}},{"EDValue":{"edValueName":{"Ident":"test3"},"edValueType":{"annotation":[{"start":[9,25],"name":"src/TypeOpAliases.purs","end":[9,59]},[]],"tag":"ForAll","contents":["d",{"annotation":[{"start":[9,32],"name":"src/TypeOpAliases.purs","end":[9,59]},[]],"tag":"ForAll","contents":["c",{"annotation":[{"start":[9,32],"name":"src/TypeOpAliases.purs","end":[9,59]},[]],"tag":"ForAll","contents":["b",{"annotation":[{"start":[9,32],"name":"src/TypeOpAliases.purs","end":[9,59]},[]],"tag":"ForAll","contents":["a",{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeConstructor","contents":[["TypeOpAliases"],"AltFn"]},{"annotation":[{"start":[9,41],"name":"src/TypeOpAliases.purs","end":[9,42]},[]],"tag":"TypeVar","contents":"a"}]},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeConstructor","contents":[["TypeOpAliases"],"AltFn"]},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeConstructor","contents":[["TypeOpAliases"],"AltFn"]},{"annotation":[{"start":[9,47],"name":"src/TypeOpAliases.purs","end":[9,48]},[]],"tag":"TypeVar","contents":"b"}]},{"annotation":[{"start":[9,52],"name":"src/TypeOpAliases.purs","end":[9,53]},[]],"tag":"TypeVar","contents":"c"}]}]},{"annotation":[{"start":[9,58],"name":"src/TypeOpAliases.purs","end":[9,59]},[]],"tag":"TypeVar","contents":"d"}]}]},null]},null]},null]},null]}}},{"EDValue":{"edValueName":{"Ident":"test4"},"edValueType":{"annotation":[{"start":[10,25],"name":"src/TypeOpAliases.purs","end":[10,61]},[]],"tag":"ForAll","contents":["d",{"annotation":[{"start":[10,32],"name":"src/TypeOpAliases.purs","end":[10,61]},[]],"tag":"ForAll","contents":["c",{"annotation":[{"start":[10,32],"name":"src/TypeOpAliases.purs","end":[10,61]},[]],"tag":"ForAll","contents":["b",{"annotation":[{"start":[10,32],"name":"src/TypeOpAliases.purs","end":[10,61]},[]],"tag":"ForAll","contents":["a",{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeConstructor","contents":[["TypeOpAliases"],"AltFn"]},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeConstructor","contents":[["TypeOpAliases"],"AltFn"]},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeConstructor","contents":[["TypeOpAliases"],"AltFn"]},{"annotation":[{"start":[10,43],"name":"src/TypeOpAliases.purs","end":[10,44]},[]],"tag":"TypeVar","contents":"a"}]},{"annotation":[{"start":[10,48],"name":"src/TypeOpAliases.purs","end":[10,49]},[]],"tag":"TypeVar","contents":"b"}]}]},{"annotation":[{"start":[10,54],"name":"src/TypeOpAliases.purs","end":[10,55]},[]],"tag":"TypeVar","contents":"c"}]}]},{"annotation":[{"start":[10,60],"name":"src/TypeOpAliases.purs","end":[10,61]},[]],"tag":"TypeVar","contents":"d"}]},null]},null]},null]},null]}}},{"EDType":{"edTypeName":"Tuple","edTypeKind":{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"FunKind","contents":[{"annotation":[{"start":[12,24],"name":"src/TypeOpAliases.purs","end":[12,25]},[]],"tag":"NamedKind","contents":[["Prim"],"Type"]},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"FunKind","contents":[{"annotation":[{"start":[12,26],"name":"src/TypeOpAliases.purs","end":[12,27]},[]],"tag":"NamedKind","contents":[["Prim"],"Type"]},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"NamedKind","contents":[["Prim"],"Type"]}]}]},"edTypeDeclarationKind":{"DataType":{"args":[["a",{"annotation":[{"start":[12,24],"name":"src/TypeOpAliases.purs","end":[12,25]},[]],"tag":"NamedKind","contents":[["Prim"],"Type"]}],["b",{"annotation":[{"start":[12,26],"name":"src/TypeOpAliases.purs","end":[12,27]},[]],"tag":"NamedKind","contents":[["Prim"],"Type"]}]],"ctors":[["Tuple",[{"annotation":[{"start":[12,24],"name":"src/TypeOpAliases.purs","end":[12,25]},[]],"tag":"TypeVar","contents":"a"},{"annotation":[{"start":[12,26],"name":"src/TypeOpAliases.purs","end":[12,27]},[]],"tag":"TypeVar","contents":"b"}]]]}}}},{"EDDataConstructor":{"edDataCtorName":"Tuple","edDataCtorOrigin":"data","edDataCtorTypeCtor":"Tuple","edDataCtorType":{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"ForAll","contents":["b",{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"ForAll","contents":["a",{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[12,24],"name":"src/TypeOpAliases.purs","end":[12,25]},[]],"tag":"TypeVar","contents":"a"}]},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[12,26],"name":"src/TypeOpAliases.purs","end":[12,27]},[]],"tag":"TypeVar","contents":"b"}]},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeConstructor","contents":[["TypeOpAliases"],"Tuple"]},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeVar","contents":"a"}]},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeVar","contents":"b"}]}]}]},null]},null]},"edDataCtorFields":[{"Ident":"value0"},{"Ident":"value1"}]}},{"EDType":{"edTypeName":"Either","edTypeKind":{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"FunKind","contents":[{"annotation":[{"start":[17,24],"name":"src/TypeOpAliases.purs","end":[17,25]},[]],"tag":"NamedKind","contents":[["Prim"],"Type"]},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"FunKind","contents":[{"annotation":[{"start":[17,34],"name":"src/TypeOpAliases.purs","end":[17,35]},[]],"tag":"NamedKind","contents":[["Prim"],"Type"]},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"NamedKind","contents":[["Prim"],"Type"]}]}]},"edTypeDeclarationKind":{"DataType":{"args":[["a",{"annotation":[{"start":[17,24],"name":"src/TypeOpAliases.purs","end":[17,25]},[]],"tag":"NamedKind","contents":[["Prim"],"Type"]}],["b",{"annotation":[{"start":[17,34],"name":"src/TypeOpAliases.purs","end":[17,35]},[]],"tag":"NamedKind","contents":[["Prim"],"Type"]}]],"ctors":[["Left",[{"annotation":[{"start":[17,24],"name":"src/TypeOpAliases.purs","end":[17,25]},[]],"tag":"TypeVar","contents":"a"}]],["Right",[{"annotation":[{"start":[17,34],"name":"src/TypeOpAliases.purs","end":[17,35]},[]],"tag":"TypeVar","contents":"b"}]]]}}}},{"EDDataConstructor":{"edDataCtorName":"Left","edDataCtorOrigin":"data","edDataCtorTypeCtor":"Either","edDataCtorType":{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"ForAll","contents":["b",{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"ForAll","contents":["a",{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[17,24],"name":"src/TypeOpAliases.purs","end":[17,25]},[]],"tag":"TypeVar","contents":"a"}]},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeConstructor","contents":[["TypeOpAliases"],"Either"]},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeVar","contents":"a"}]},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeVar","contents":"b"}]}]},null]},null]},"edDataCtorFields":[{"Ident":"value0"}]}},{"EDDataConstructor":{"edDataCtorName":"Right","edDataCtorOrigin":"data","edDataCtorTypeCtor":"Either","edDataCtorType":{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"ForAll","contents":["b",{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"ForAll","contents":["a",{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[17,34],"name":"src/TypeOpAliases.purs","end":[17,35]},[]],"tag":"TypeVar","contents":"b"}]},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeConstructor","contents":[["TypeOpAliases"],"Either"]},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeVar","contents":"a"}]},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeVar","contents":"b"}]}]},null]},null]},"edDataCtorFields":[{"Ident":"value0"}]}},{"EDValue":{"edValueName":{"Ident":"third"},"edValueType":{"annotation":[{"start":[21,9],"name":"src/TypeOpAliases.purs","end":[21,31]},[]],"tag":"ForAll","contents":["c",{"annotation":[{"start":[21,11],"name":"src/TypeOpAliases.purs","end":[21,31]},[]],"tag":"ForAll","contents":["b",{"annotation":[{"start":[21,11],"name":"src/TypeOpAliases.purs","end":[21,31]},[]],"tag":"ForAll","contents":["a",{"annotation":[{"start":[21,18],"name":"src/TypeOpAliases.purs","end":[21,31]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[21,18],"name":"src/TypeOpAliases.purs","end":[21,31]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[21,28],"name":"src/TypeOpAliases.purs","end":[21,29]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeConstructor","contents":[["TypeOpAliases"],"Tuple"]},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeConstructor","contents":[["TypeOpAliases"],"Tuple"]},{"annotation":[{"start":[21,18],"name":"src/TypeOpAliases.purs","end":[21,19]},[]],"tag":"TypeVar","contents":"a"}]},{"annotation":[{"start":[21,22],"name":"src/TypeOpAliases.purs","end":[21,23]},[]],"tag":"TypeVar","contents":"b"}]}]},{"annotation":[{"start":[21,26],"name":"src/TypeOpAliases.purs","end":[21,27]},[]],"tag":"TypeVar","contents":"c"}]}]},{"annotation":[{"start":[21,30],"name":"src/TypeOpAliases.purs","end":[21,31]},[]],"tag":"TypeVar","contents":"c"}]},0]},1]},2]}}},{"EDType":{"edTypeName":"Show","edTypeKind":{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"FunKind","contents":[{"annotation":[{"start":[25,13],"name":"src/TypeOpAliases.purs","end":[25,15]},[]],"tag":"NamedKind","contents":[["Prim"],"Type"]},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"NamedKind","contents":[["Prim"],"Type"]}]},"edTypeDeclarationKind":"TypeSynonym"}},{"EDTypeSynonym":{"edTypeSynonymName":"Show","edTypeSynonymArguments":[["a",null]],"edTypeSynonymType":{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Record"]},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"RCons","contents":["show",{"annotation":[{"start":[25,11],"name":"src/TypeOpAliases.purs","end":[25,22]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[25,11],"name":"src/TypeOpAliases.purs","end":[25,22]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[25,13],"name":"src/TypeOpAliases.purs","end":[25,15]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[25,11],"name":"src/TypeOpAliases.purs","end":[25,12]},[]],"tag":"TypeVar","contents":"a"}]},{"annotation":[{"start":[25,16],"name":"src/TypeOpAliases.purs","end":[25,22]},[]],"tag":"TypeConstructor","contents":[["Prim"],"String"]}]},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"REmpty"}]}]}}},{"EDClass":{"edClassName":"Show","edClassTypeArguments":[["a",null]],"edClassMembers":[[{"Ident":"show"},{"annotation":[{"start":[25,11],"name":"src/TypeOpAliases.purs","end":[25,22]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[25,11],"name":"src/TypeOpAliases.purs","end":[25,22]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[25,13],"name":"src/TypeOpAliases.purs","end":[25,15]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[25,11],"name":"src/TypeOpAliases.purs","end":[25,12]},[]],"tag":"TypeVar","contents":"a"}]},{"annotation":[{"start":[25,16],"name":"src/TypeOpAliases.purs","end":[25,22]},[]],"tag":"TypeConstructor","contents":[["Prim"],"String"]}]}]],"edClassConstraints":[],"edFunctionalDependencies":[]}},{"EDType":{"edTypeName":"TestL","edTypeKind":{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"FunKind","contents":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"NamedKind","contents":[["Prim"],"Type"]},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"NamedKind","contents":[["Prim"],"Type"]}]},"edTypeDeclarationKind":"TypeSynonym"}},{"EDTypeSynonym":{"edTypeSynonymName":"TestL","edTypeSynonymArguments":[["a",null]],"edTypeSynonymType":{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Record"]},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"RCons","contents":["testL",{"annotation":[{"start":[33,12],"name":"src/TypeOpAliases.purs","end":[33,13]},[]],"tag":"TypeVar","contents":"a"},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"REmpty"}]}]}}},{"EDClass":{"edClassName":"TestL","edClassTypeArguments":[["a",null]],"edClassMembers":[[{"Ident":"testL"},{"annotation":[{"start":[33,12],"name":"src/TypeOpAliases.purs","end":[33,13]},[]],"tag":"TypeVar","contents":"a"}]],"edClassConstraints":[],"edFunctionalDependencies":[]}},{"EDType":{"edTypeName":"TestR","edTypeKind":{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"FunKind","contents":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"NamedKind","contents":[["Prim"],"Type"]},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"NamedKind","contents":[["Prim"],"Type"]}]},"edTypeDeclarationKind":"TypeSynonym"}},{"EDTypeSynonym":{"edTypeSynonymName":"TestR","edTypeSynonymArguments":[["a",null]],"edTypeSynonymType":{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Record"]},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"RCons","contents":["testR",{"annotation":[{"start":[36,12],"name":"src/TypeOpAliases.purs","end":[36,13]},[]],"tag":"TypeVar","contents":"a"},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"REmpty"}]}]}}},{"EDClass":{"edClassName":"TestR","edClassTypeArguments":[["a",null]],"edClassMembers":[[{"Ident":"testR"},{"annotation":[{"start":[36,12],"name":"src/TypeOpAliases.purs","end":[36,13]},[]],"tag":"TypeVar","contents":"a"}]],"edClassConstraints":[],"edFunctionalDependencies":[]}},{"EDInstance":{"edInstanceClassName":[["TypeOpAliases"],"Show"],"edInstanceName":{"Ident":"showTuple"},"edInstanceTypes":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeConstructor","contents":[["TypeOpAliases"],"Tuple"]},{"annotation":[{"start":[27,39],"name":"src/TypeOpAliases.purs","end":[27,40]},[]],"tag":"TypeVar","contents":"a"}]},{"annotation":[{"start":[27,43],"name":"src/TypeOpAliases.purs","end":[27,44]},[]],"tag":"TypeVar","contents":"b"}]}],"edInstanceConstraints":[{"constraintAnn":[{"start":[27,23],"name":"src/TypeOpAliases.purs","end":[27,29]},[]],"constraintClass":[["TypeOpAliases"],"Show"],"constraintArgs":[{"annotation":[{"start":[27,28],"name":"src/TypeOpAliases.purs","end":[27,29]},[]],"tag":"TypeVar","contents":"a"}],"constraintData":null}],"edInstanceChain":[[["TypeOpAliases"],{"Ident":"showTuple"}]],"edInstanceChainIndex":0}},{"EDInstance":{"edInstanceClassName":[["TypeOpAliases"],"TestL"],"edInstanceName":{"Ident":"testLEither"},"edInstanceTypes":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeConstructor","contents":[["TypeOpAliases"],"Either"]},{"annotation":[{"start":[39,32],"name":"src/TypeOpAliases.purs","end":[39,35]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Int"]}]},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeConstructor","contents":[["TypeOpAliases"],"Tuple"]},{"annotation":[{"start":[39,38],"name":"src/TypeOpAliases.purs","end":[39,41]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Int"]}]},{"annotation":[{"start":[39,44],"name":"src/TypeOpAliases.purs","end":[39,50]},[]],"tag":"TypeConstructor","contents":[["Prim"],"String"]}]}]}],"edInstanceConstraints":[],"edInstanceChain":[[["TypeOpAliases"],{"Ident":"testLEither"}]],"edInstanceChainIndex":0}},{"EDInstance":{"edInstanceClassName":[["TypeOpAliases"],"TestR"],"edInstanceName":{"Ident":"testREither"},"edInstanceTypes":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeConstructor","contents":[["TypeOpAliases"],"Either"]},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeConstructor","contents":[["TypeOpAliases"],"Tuple"]},{"annotation":[{"start":[43,32],"name":"src/TypeOpAliases.purs","end":[43,35]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Int"]}]},{"annotation":[{"start":[43,38],"name":"src/TypeOpAliases.purs","end":[43,41]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Int"]}]}]},{"annotation":[{"start":[43,44],"name":"src/TypeOpAliases.purs","end":[43,50]},[]],"tag":"TypeConstructor","contents":[["Prim"],"String"]}]}],"edInstanceConstraints":[],"edInstanceChain":[[["TypeOpAliases"],{"Ident":"testREither"}]],"edInstanceChainIndex":0}}],"efSourceSpan":{"start":[1,1],"name":"src/TypeOpAliases.purs","end":[44,23]}} \ No newline at end of file
+{"efVersion":"0.13.2","efModuleName":["TypeOpAliases"],"efExports":[{"ValueRef":[{"start":[1,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/TypeOpAliases.purs","end":[44,23]},{"Ident":"show"}]},{"ValueRef":[{"start":[1,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/TypeOpAliases.purs","end":[44,23]},{"Ident":"testL"}]},{"ValueRef":[{"start":[1,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/TypeOpAliases.purs","end":[44,23]},{"Ident":"testR"}]},{"TypeRef":[{"start":[1,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/TypeOpAliases.purs","end":[44,23]},"AltFn",[]]},{"TypeOpRef":[{"start":[1,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/TypeOpAliases.purs","end":[44,23]},"~>"]},{"ValueRef":[{"start":[1,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/TypeOpAliases.purs","end":[44,23]},{"Ident":"test1"}]},{"ValueRef":[{"start":[1,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/TypeOpAliases.purs","end":[44,23]},{"Ident":"test2"}]},{"ValueRef":[{"start":[1,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/TypeOpAliases.purs","end":[44,23]},{"Ident":"test3"}]},{"ValueRef":[{"start":[1,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/TypeOpAliases.purs","end":[44,23]},{"Ident":"test4"}]},{"TypeRef":[{"start":[1,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/TypeOpAliases.purs","end":[44,23]},"Tuple",["Tuple"]]},{"ValueOpRef":[{"start":[1,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/TypeOpAliases.purs","end":[44,23]},"×"]},{"TypeOpRef":[{"start":[1,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/TypeOpAliases.purs","end":[44,23]},"×"]},{"TypeRef":[{"start":[1,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/TypeOpAliases.purs","end":[44,23]},"Either",["Left","Right"]]},{"TypeOpRef":[{"start":[1,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/TypeOpAliases.purs","end":[44,23]},"⊕"]},{"ValueRef":[{"start":[1,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/TypeOpAliases.purs","end":[44,23]},{"Ident":"third"}]},{"TypeClassRef":[{"start":[1,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/TypeOpAliases.purs","end":[44,23]},"Show"]},{"TypeClassRef":[{"start":[1,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/TypeOpAliases.purs","end":[44,23]},"TestL"]},{"TypeClassRef":[{"start":[1,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/TypeOpAliases.purs","end":[44,23]},"TestR"]},{"TypeInstanceRef":[{"start":[0,0],"name":"<generated>","end":[0,0]},{"Ident":"showTuple"}]},{"TypeInstanceRef":[{"start":[0,0],"name":"<generated>","end":[0,0]},{"Ident":"testLEither"}]},{"TypeInstanceRef":[{"start":[0,0],"name":"<generated>","end":[0,0]},{"Ident":"testREither"}]}],"efImports":[{"eiModule":["Prim"],"eiImportType":{"Implicit":[]},"eiImportedAs":["Prim"]},{"eiModule":["Prim"],"eiImportType":{"Implicit":[]},"eiImportedAs":null}],"efFixities":[{"efAssociativity":"infixl","efPrecedence":6,"efOperator":"×","efAlias":[["TypeOpAliases"],{"Right":"Tuple"}]}],"efTypeFixities":[{"efTypeAssociativity":"infixr","efTypePrecedence":6,"efTypeOperator":"~>","efTypeAlias":[["TypeOpAliases"],"AltFn"]},{"efTypeAssociativity":"infixl","efTypePrecedence":6,"efTypeOperator":"×","efTypeAlias":[["TypeOpAliases"],"Tuple"]},{"efTypeAssociativity":"infixl","efTypePrecedence":5,"efTypeOperator":"⊕","efTypeAlias":[["TypeOpAliases"],"Either"]}],"efDeclarations":[{"EDValue":{"edValueName":{"Ident":"show"},"edValueType":{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"ForAll","contents":["a",{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"ConstrainedType","contents":[{"constraintAnn":[{"start":[0,0],"name":"","end":[0,0]},[]],"constraintClass":[["TypeOpAliases"],"Show"],"constraintArgs":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeVar","contents":"a"}],"constraintData":null},{"annotation":[{"start":[25,11],"name":"/home/harry/code/purescript/tests/purs/docs/src/TypeOpAliases.purs","end":[25,22]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[25,11],"name":"/home/harry/code/purescript/tests/purs/docs/src/TypeOpAliases.purs","end":[25,22]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[25,13],"name":"/home/harry/code/purescript/tests/purs/docs/src/TypeOpAliases.purs","end":[25,15]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[25,11],"name":"/home/harry/code/purescript/tests/purs/docs/src/TypeOpAliases.purs","end":[25,12]},[]],"tag":"TypeVar","contents":"a"}]},{"annotation":[{"start":[25,16],"name":"/home/harry/code/purescript/tests/purs/docs/src/TypeOpAliases.purs","end":[25,22]},[]],"tag":"TypeConstructor","contents":[["Prim"],"String"]}]}]},8]}}},{"EDValue":{"edValueName":{"Ident":"testL"},"edValueType":{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"ForAll","contents":["a",{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"ConstrainedType","contents":[{"constraintAnn":[{"start":[0,0],"name":"","end":[0,0]},[]],"constraintClass":[["TypeOpAliases"],"TestL"],"constraintArgs":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeVar","contents":"a"}],"constraintData":null},{"annotation":[{"start":[33,12],"name":"/home/harry/code/purescript/tests/purs/docs/src/TypeOpAliases.purs","end":[33,13]},[]],"tag":"TypeVar","contents":"a"}]},7]}}},{"EDValue":{"edValueName":{"Ident":"testR"},"edValueType":{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"ForAll","contents":["a",{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"ConstrainedType","contents":[{"constraintAnn":[{"start":[0,0],"name":"","end":[0,0]},[]],"constraintClass":[["TypeOpAliases"],"TestR"],"constraintArgs":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeVar","contents":"a"}],"constraintData":null},{"annotation":[{"start":[36,12],"name":"/home/harry/code/purescript/tests/purs/docs/src/TypeOpAliases.purs","end":[36,13]},[]],"tag":"TypeVar","contents":"a"}]},6]}}},{"EDType":{"edTypeName":"AltFn","edTypeKind":{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"FunKind","contents":[{"annotation":[{"start":[3,20],"name":"/home/harry/code/purescript/tests/purs/docs/src/TypeOpAliases.purs","end":[3,22]},[]],"tag":"NamedKind","contents":[["Prim"],"Type"]},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"FunKind","contents":[{"annotation":[{"start":[3,20],"name":"/home/harry/code/purescript/tests/purs/docs/src/TypeOpAliases.purs","end":[3,22]},[]],"tag":"NamedKind","contents":[["Prim"],"Type"]},{"annotation":[{"start":[3,20],"name":"/home/harry/code/purescript/tests/purs/docs/src/TypeOpAliases.purs","end":[3,22]},[]],"tag":"NamedKind","contents":[["Prim"],"Type"]}]}]},"edTypeDeclarationKind":"TypeSynonym"}},{"EDTypeSynonym":{"edTypeSynonymName":"AltFn","edTypeSynonymArguments":[["a",{"annotation":[{"start":[3,20],"name":"/home/harry/code/purescript/tests/purs/docs/src/TypeOpAliases.purs","end":[3,22]},[]],"tag":"NamedKind","contents":[["Prim"],"Type"]}],["b",{"annotation":[{"start":[3,20],"name":"/home/harry/code/purescript/tests/purs/docs/src/TypeOpAliases.purs","end":[3,22]},[]],"tag":"NamedKind","contents":[["Prim"],"Type"]}]],"edTypeSynonymType":{"annotation":[{"start":[3,18],"name":"/home/harry/code/purescript/tests/purs/docs/src/TypeOpAliases.purs","end":[3,24]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[3,18],"name":"/home/harry/code/purescript/tests/purs/docs/src/TypeOpAliases.purs","end":[3,24]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[3,20],"name":"/home/harry/code/purescript/tests/purs/docs/src/TypeOpAliases.purs","end":[3,22]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[3,18],"name":"/home/harry/code/purescript/tests/purs/docs/src/TypeOpAliases.purs","end":[3,19]},[]],"tag":"TypeVar","contents":"a"}]},{"annotation":[{"start":[3,23],"name":"/home/harry/code/purescript/tests/purs/docs/src/TypeOpAliases.purs","end":[3,24]},[]],"tag":"TypeVar","contents":"b"}]}}},{"EDValue":{"edValueName":{"Ident":"test1"},"edValueType":{"annotation":[{"start":[7,25],"name":"/home/harry/code/purescript/tests/purs/docs/src/TypeOpAliases.purs","end":[7,43]},[]],"tag":"ForAll","contents":["b",{"annotation":[{"start":[7,32],"name":"/home/harry/code/purescript/tests/purs/docs/src/TypeOpAliases.purs","end":[7,43]},[]],"tag":"ForAll","contents":["a",{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeConstructor","contents":[["TypeOpAliases"],"AltFn"]},{"annotation":[{"start":[7,37],"name":"/home/harry/code/purescript/tests/purs/docs/src/TypeOpAliases.purs","end":[7,38]},[]],"tag":"TypeVar","contents":"a"}]},{"annotation":[{"start":[7,42],"name":"/home/harry/code/purescript/tests/purs/docs/src/TypeOpAliases.purs","end":[7,43]},[]],"tag":"TypeVar","contents":"b"}]},null]},null]}}},{"EDValue":{"edValueName":{"Ident":"test2"},"edValueType":{"annotation":[{"start":[8,25],"name":"/home/harry/code/purescript/tests/purs/docs/src/TypeOpAliases.purs","end":[8,50]},[]],"tag":"ForAll","contents":["c",{"annotation":[{"start":[8,32],"name":"/home/harry/code/purescript/tests/purs/docs/src/TypeOpAliases.purs","end":[8,50]},[]],"tag":"ForAll","contents":["b",{"annotation":[{"start":[8,32],"name":"/home/harry/code/purescript/tests/purs/docs/src/TypeOpAliases.purs","end":[8,50]},[]],"tag":"ForAll","contents":["a",{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeConstructor","contents":[["TypeOpAliases"],"AltFn"]},{"annotation":[{"start":[8,39],"name":"/home/harry/code/purescript/tests/purs/docs/src/TypeOpAliases.purs","end":[8,40]},[]],"tag":"TypeVar","contents":"a"}]},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeConstructor","contents":[["TypeOpAliases"],"AltFn"]},{"annotation":[{"start":[8,44],"name":"/home/harry/code/purescript/tests/purs/docs/src/TypeOpAliases.purs","end":[8,45]},[]],"tag":"TypeVar","contents":"b"}]},{"annotation":[{"start":[8,49],"name":"/home/harry/code/purescript/tests/purs/docs/src/TypeOpAliases.purs","end":[8,50]},[]],"tag":"TypeVar","contents":"c"}]}]},null]},null]},null]}}},{"EDValue":{"edValueName":{"Ident":"test3"},"edValueType":{"annotation":[{"start":[9,25],"name":"/home/harry/code/purescript/tests/purs/docs/src/TypeOpAliases.purs","end":[9,59]},[]],"tag":"ForAll","contents":["d",{"annotation":[{"start":[9,32],"name":"/home/harry/code/purescript/tests/purs/docs/src/TypeOpAliases.purs","end":[9,59]},[]],"tag":"ForAll","contents":["c",{"annotation":[{"start":[9,32],"name":"/home/harry/code/purescript/tests/purs/docs/src/TypeOpAliases.purs","end":[9,59]},[]],"tag":"ForAll","contents":["b",{"annotation":[{"start":[9,32],"name":"/home/harry/code/purescript/tests/purs/docs/src/TypeOpAliases.purs","end":[9,59]},[]],"tag":"ForAll","contents":["a",{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeConstructor","contents":[["TypeOpAliases"],"AltFn"]},{"annotation":[{"start":[9,41],"name":"/home/harry/code/purescript/tests/purs/docs/src/TypeOpAliases.purs","end":[9,42]},[]],"tag":"TypeVar","contents":"a"}]},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeConstructor","contents":[["TypeOpAliases"],"AltFn"]},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeConstructor","contents":[["TypeOpAliases"],"AltFn"]},{"annotation":[{"start":[9,47],"name":"/home/harry/code/purescript/tests/purs/docs/src/TypeOpAliases.purs","end":[9,48]},[]],"tag":"TypeVar","contents":"b"}]},{"annotation":[{"start":[9,52],"name":"/home/harry/code/purescript/tests/purs/docs/src/TypeOpAliases.purs","end":[9,53]},[]],"tag":"TypeVar","contents":"c"}]}]},{"annotation":[{"start":[9,58],"name":"/home/harry/code/purescript/tests/purs/docs/src/TypeOpAliases.purs","end":[9,59]},[]],"tag":"TypeVar","contents":"d"}]}]},null]},null]},null]},null]}}},{"EDValue":{"edValueName":{"Ident":"test4"},"edValueType":{"annotation":[{"start":[10,25],"name":"/home/harry/code/purescript/tests/purs/docs/src/TypeOpAliases.purs","end":[10,61]},[]],"tag":"ForAll","contents":["d",{"annotation":[{"start":[10,32],"name":"/home/harry/code/purescript/tests/purs/docs/src/TypeOpAliases.purs","end":[10,61]},[]],"tag":"ForAll","contents":["c",{"annotation":[{"start":[10,32],"name":"/home/harry/code/purescript/tests/purs/docs/src/TypeOpAliases.purs","end":[10,61]},[]],"tag":"ForAll","contents":["b",{"annotation":[{"start":[10,32],"name":"/home/harry/code/purescript/tests/purs/docs/src/TypeOpAliases.purs","end":[10,61]},[]],"tag":"ForAll","contents":["a",{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeConstructor","contents":[["TypeOpAliases"],"AltFn"]},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeConstructor","contents":[["TypeOpAliases"],"AltFn"]},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeConstructor","contents":[["TypeOpAliases"],"AltFn"]},{"annotation":[{"start":[10,43],"name":"/home/harry/code/purescript/tests/purs/docs/src/TypeOpAliases.purs","end":[10,44]},[]],"tag":"TypeVar","contents":"a"}]},{"annotation":[{"start":[10,48],"name":"/home/harry/code/purescript/tests/purs/docs/src/TypeOpAliases.purs","end":[10,49]},[]],"tag":"TypeVar","contents":"b"}]}]},{"annotation":[{"start":[10,54],"name":"/home/harry/code/purescript/tests/purs/docs/src/TypeOpAliases.purs","end":[10,55]},[]],"tag":"TypeVar","contents":"c"}]}]},{"annotation":[{"start":[10,60],"name":"/home/harry/code/purescript/tests/purs/docs/src/TypeOpAliases.purs","end":[10,61]},[]],"tag":"TypeVar","contents":"d"}]},null]},null]},null]},null]}}},{"EDType":{"edTypeName":"Tuple","edTypeKind":{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"FunKind","contents":[{"annotation":[{"start":[12,24],"name":"/home/harry/code/purescript/tests/purs/docs/src/TypeOpAliases.purs","end":[12,25]},[]],"tag":"NamedKind","contents":[["Prim"],"Type"]},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"FunKind","contents":[{"annotation":[{"start":[12,26],"name":"/home/harry/code/purescript/tests/purs/docs/src/TypeOpAliases.purs","end":[12,27]},[]],"tag":"NamedKind","contents":[["Prim"],"Type"]},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"NamedKind","contents":[["Prim"],"Type"]}]}]},"edTypeDeclarationKind":{"DataType":{"args":[["a",{"annotation":[{"start":[12,24],"name":"/home/harry/code/purescript/tests/purs/docs/src/TypeOpAliases.purs","end":[12,25]},[]],"tag":"NamedKind","contents":[["Prim"],"Type"]}],["b",{"annotation":[{"start":[12,26],"name":"/home/harry/code/purescript/tests/purs/docs/src/TypeOpAliases.purs","end":[12,27]},[]],"tag":"NamedKind","contents":[["Prim"],"Type"]}]],"ctors":[["Tuple",[{"annotation":[{"start":[12,24],"name":"/home/harry/code/purescript/tests/purs/docs/src/TypeOpAliases.purs","end":[12,25]},[]],"tag":"TypeVar","contents":"a"},{"annotation":[{"start":[12,26],"name":"/home/harry/code/purescript/tests/purs/docs/src/TypeOpAliases.purs","end":[12,27]},[]],"tag":"TypeVar","contents":"b"}]]]}}}},{"EDDataConstructor":{"edDataCtorName":"Tuple","edDataCtorOrigin":"data","edDataCtorTypeCtor":"Tuple","edDataCtorType":{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"ForAll","contents":["b",{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"ForAll","contents":["a",{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[12,24],"name":"/home/harry/code/purescript/tests/purs/docs/src/TypeOpAliases.purs","end":[12,25]},[]],"tag":"TypeVar","contents":"a"}]},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[12,26],"name":"/home/harry/code/purescript/tests/purs/docs/src/TypeOpAliases.purs","end":[12,27]},[]],"tag":"TypeVar","contents":"b"}]},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeConstructor","contents":[["TypeOpAliases"],"Tuple"]},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeVar","contents":"a"}]},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeVar","contents":"b"}]}]}]},null]},null]},"edDataCtorFields":[{"Ident":"value0"},{"Ident":"value1"}]}},{"EDType":{"edTypeName":"Either","edTypeKind":{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"FunKind","contents":[{"annotation":[{"start":[17,24],"name":"/home/harry/code/purescript/tests/purs/docs/src/TypeOpAliases.purs","end":[17,25]},[]],"tag":"NamedKind","contents":[["Prim"],"Type"]},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"FunKind","contents":[{"annotation":[{"start":[17,34],"name":"/home/harry/code/purescript/tests/purs/docs/src/TypeOpAliases.purs","end":[17,35]},[]],"tag":"NamedKind","contents":[["Prim"],"Type"]},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"NamedKind","contents":[["Prim"],"Type"]}]}]},"edTypeDeclarationKind":{"DataType":{"args":[["a",{"annotation":[{"start":[17,24],"name":"/home/harry/code/purescript/tests/purs/docs/src/TypeOpAliases.purs","end":[17,25]},[]],"tag":"NamedKind","contents":[["Prim"],"Type"]}],["b",{"annotation":[{"start":[17,34],"name":"/home/harry/code/purescript/tests/purs/docs/src/TypeOpAliases.purs","end":[17,35]},[]],"tag":"NamedKind","contents":[["Prim"],"Type"]}]],"ctors":[["Left",[{"annotation":[{"start":[17,24],"name":"/home/harry/code/purescript/tests/purs/docs/src/TypeOpAliases.purs","end":[17,25]},[]],"tag":"TypeVar","contents":"a"}]],["Right",[{"annotation":[{"start":[17,34],"name":"/home/harry/code/purescript/tests/purs/docs/src/TypeOpAliases.purs","end":[17,35]},[]],"tag":"TypeVar","contents":"b"}]]]}}}},{"EDDataConstructor":{"edDataCtorName":"Left","edDataCtorOrigin":"data","edDataCtorTypeCtor":"Either","edDataCtorType":{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"ForAll","contents":["b",{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"ForAll","contents":["a",{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[17,24],"name":"/home/harry/code/purescript/tests/purs/docs/src/TypeOpAliases.purs","end":[17,25]},[]],"tag":"TypeVar","contents":"a"}]},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeConstructor","contents":[["TypeOpAliases"],"Either"]},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeVar","contents":"a"}]},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeVar","contents":"b"}]}]},null]},null]},"edDataCtorFields":[{"Ident":"value0"}]}},{"EDDataConstructor":{"edDataCtorName":"Right","edDataCtorOrigin":"data","edDataCtorTypeCtor":"Either","edDataCtorType":{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"ForAll","contents":["b",{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"ForAll","contents":["a",{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[17,34],"name":"/home/harry/code/purescript/tests/purs/docs/src/TypeOpAliases.purs","end":[17,35]},[]],"tag":"TypeVar","contents":"b"}]},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeConstructor","contents":[["TypeOpAliases"],"Either"]},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeVar","contents":"a"}]},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeVar","contents":"b"}]}]},null]},null]},"edDataCtorFields":[{"Ident":"value0"}]}},{"EDValue":{"edValueName":{"Ident":"third"},"edValueType":{"annotation":[{"start":[21,9],"name":"/home/harry/code/purescript/tests/purs/docs/src/TypeOpAliases.purs","end":[21,31]},[]],"tag":"ForAll","contents":["c",{"annotation":[{"start":[21,11],"name":"/home/harry/code/purescript/tests/purs/docs/src/TypeOpAliases.purs","end":[21,31]},[]],"tag":"ForAll","contents":["b",{"annotation":[{"start":[21,11],"name":"/home/harry/code/purescript/tests/purs/docs/src/TypeOpAliases.purs","end":[21,31]},[]],"tag":"ForAll","contents":["a",{"annotation":[{"start":[21,18],"name":"/home/harry/code/purescript/tests/purs/docs/src/TypeOpAliases.purs","end":[21,31]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[21,18],"name":"/home/harry/code/purescript/tests/purs/docs/src/TypeOpAliases.purs","end":[21,31]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[21,28],"name":"/home/harry/code/purescript/tests/purs/docs/src/TypeOpAliases.purs","end":[21,29]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeConstructor","contents":[["TypeOpAliases"],"Tuple"]},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeConstructor","contents":[["TypeOpAliases"],"Tuple"]},{"annotation":[{"start":[21,18],"name":"/home/harry/code/purescript/tests/purs/docs/src/TypeOpAliases.purs","end":[21,19]},[]],"tag":"TypeVar","contents":"a"}]},{"annotation":[{"start":[21,22],"name":"/home/harry/code/purescript/tests/purs/docs/src/TypeOpAliases.purs","end":[21,23]},[]],"tag":"TypeVar","contents":"b"}]}]},{"annotation":[{"start":[21,26],"name":"/home/harry/code/purescript/tests/purs/docs/src/TypeOpAliases.purs","end":[21,27]},[]],"tag":"TypeVar","contents":"c"}]}]},{"annotation":[{"start":[21,30],"name":"/home/harry/code/purescript/tests/purs/docs/src/TypeOpAliases.purs","end":[21,31]},[]],"tag":"TypeVar","contents":"c"}]},0]},1]},2]}}},{"EDType":{"edTypeName":"Show","edTypeKind":{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"FunKind","contents":[{"annotation":[{"start":[25,13],"name":"/home/harry/code/purescript/tests/purs/docs/src/TypeOpAliases.purs","end":[25,15]},[]],"tag":"NamedKind","contents":[["Prim"],"Type"]},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"NamedKind","contents":[["Prim"],"Type"]}]},"edTypeDeclarationKind":"TypeSynonym"}},{"EDTypeSynonym":{"edTypeSynonymName":"Show","edTypeSynonymArguments":[["a",null]],"edTypeSynonymType":{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Record"]},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"RCons","contents":["show",{"annotation":[{"start":[25,11],"name":"/home/harry/code/purescript/tests/purs/docs/src/TypeOpAliases.purs","end":[25,22]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[25,11],"name":"/home/harry/code/purescript/tests/purs/docs/src/TypeOpAliases.purs","end":[25,22]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[25,13],"name":"/home/harry/code/purescript/tests/purs/docs/src/TypeOpAliases.purs","end":[25,15]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[25,11],"name":"/home/harry/code/purescript/tests/purs/docs/src/TypeOpAliases.purs","end":[25,12]},[]],"tag":"TypeVar","contents":"a"}]},{"annotation":[{"start":[25,16],"name":"/home/harry/code/purescript/tests/purs/docs/src/TypeOpAliases.purs","end":[25,22]},[]],"tag":"TypeConstructor","contents":[["Prim"],"String"]}]},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"REmpty"}]}]}}},{"EDClass":{"edClassName":"Show","edClassTypeArguments":[["a",null]],"edClassMembers":[[{"Ident":"show"},{"annotation":[{"start":[25,11],"name":"/home/harry/code/purescript/tests/purs/docs/src/TypeOpAliases.purs","end":[25,22]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[25,11],"name":"/home/harry/code/purescript/tests/purs/docs/src/TypeOpAliases.purs","end":[25,22]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[25,13],"name":"/home/harry/code/purescript/tests/purs/docs/src/TypeOpAliases.purs","end":[25,15]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[25,11],"name":"/home/harry/code/purescript/tests/purs/docs/src/TypeOpAliases.purs","end":[25,12]},[]],"tag":"TypeVar","contents":"a"}]},{"annotation":[{"start":[25,16],"name":"/home/harry/code/purescript/tests/purs/docs/src/TypeOpAliases.purs","end":[25,22]},[]],"tag":"TypeConstructor","contents":[["Prim"],"String"]}]}]],"edClassConstraints":[],"edFunctionalDependencies":[],"edIsEmpty":false}},{"EDType":{"edTypeName":"TestL","edTypeKind":{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"FunKind","contents":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"NamedKind","contents":[["Prim"],"Type"]},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"NamedKind","contents":[["Prim"],"Type"]}]},"edTypeDeclarationKind":"TypeSynonym"}},{"EDTypeSynonym":{"edTypeSynonymName":"TestL","edTypeSynonymArguments":[["a",null]],"edTypeSynonymType":{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Record"]},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"RCons","contents":["testL",{"annotation":[{"start":[33,12],"name":"/home/harry/code/purescript/tests/purs/docs/src/TypeOpAliases.purs","end":[33,13]},[]],"tag":"TypeVar","contents":"a"},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"REmpty"}]}]}}},{"EDClass":{"edClassName":"TestL","edClassTypeArguments":[["a",null]],"edClassMembers":[[{"Ident":"testL"},{"annotation":[{"start":[33,12],"name":"/home/harry/code/purescript/tests/purs/docs/src/TypeOpAliases.purs","end":[33,13]},[]],"tag":"TypeVar","contents":"a"}]],"edClassConstraints":[],"edFunctionalDependencies":[],"edIsEmpty":false}},{"EDType":{"edTypeName":"TestR","edTypeKind":{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"FunKind","contents":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"NamedKind","contents":[["Prim"],"Type"]},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"NamedKind","contents":[["Prim"],"Type"]}]},"edTypeDeclarationKind":"TypeSynonym"}},{"EDTypeSynonym":{"edTypeSynonymName":"TestR","edTypeSynonymArguments":[["a",null]],"edTypeSynonymType":{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Record"]},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"RCons","contents":["testR",{"annotation":[{"start":[36,12],"name":"/home/harry/code/purescript/tests/purs/docs/src/TypeOpAliases.purs","end":[36,13]},[]],"tag":"TypeVar","contents":"a"},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"REmpty"}]}]}}},{"EDClass":{"edClassName":"TestR","edClassTypeArguments":[["a",null]],"edClassMembers":[[{"Ident":"testR"},{"annotation":[{"start":[36,12],"name":"/home/harry/code/purescript/tests/purs/docs/src/TypeOpAliases.purs","end":[36,13]},[]],"tag":"TypeVar","contents":"a"}]],"edClassConstraints":[],"edFunctionalDependencies":[],"edIsEmpty":false}},{"EDInstance":{"edInstanceClassName":[["TypeOpAliases"],"Show"],"edInstanceName":{"Ident":"showTuple"},"edInstanceTypes":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeConstructor","contents":[["TypeOpAliases"],"Tuple"]},{"annotation":[{"start":[27,39],"name":"/home/harry/code/purescript/tests/purs/docs/src/TypeOpAliases.purs","end":[27,40]},[]],"tag":"TypeVar","contents":"a"}]},{"annotation":[{"start":[27,43],"name":"/home/harry/code/purescript/tests/purs/docs/src/TypeOpAliases.purs","end":[27,44]},[]],"tag":"TypeVar","contents":"b"}]}],"edInstanceConstraints":[{"constraintAnn":[{"start":[27,23],"name":"/home/harry/code/purescript/tests/purs/docs/src/TypeOpAliases.purs","end":[27,29]},[]],"constraintClass":[["TypeOpAliases"],"Show"],"constraintArgs":[{"annotation":[{"start":[27,28],"name":"/home/harry/code/purescript/tests/purs/docs/src/TypeOpAliases.purs","end":[27,29]},[]],"tag":"TypeVar","contents":"a"}],"constraintData":null}],"edInstanceChain":[[["TypeOpAliases"],{"Ident":"showTuple"}]],"edInstanceChainIndex":0}},{"EDInstance":{"edInstanceClassName":[["TypeOpAliases"],"TestL"],"edInstanceName":{"Ident":"testLEither"},"edInstanceTypes":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeConstructor","contents":[["TypeOpAliases"],"Either"]},{"annotation":[{"start":[39,32],"name":"/home/harry/code/purescript/tests/purs/docs/src/TypeOpAliases.purs","end":[39,35]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Int"]}]},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeConstructor","contents":[["TypeOpAliases"],"Tuple"]},{"annotation":[{"start":[39,38],"name":"/home/harry/code/purescript/tests/purs/docs/src/TypeOpAliases.purs","end":[39,41]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Int"]}]},{"annotation":[{"start":[39,44],"name":"/home/harry/code/purescript/tests/purs/docs/src/TypeOpAliases.purs","end":[39,50]},[]],"tag":"TypeConstructor","contents":[["Prim"],"String"]}]}]}],"edInstanceConstraints":[],"edInstanceChain":[[["TypeOpAliases"],{"Ident":"testLEither"}]],"edInstanceChainIndex":0}},{"EDInstance":{"edInstanceClassName":[["TypeOpAliases"],"TestR"],"edInstanceName":{"Ident":"testREither"},"edInstanceTypes":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeConstructor","contents":[["TypeOpAliases"],"Either"]},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeConstructor","contents":[["TypeOpAliases"],"Tuple"]},{"annotation":[{"start":[43,32],"name":"/home/harry/code/purescript/tests/purs/docs/src/TypeOpAliases.purs","end":[43,35]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Int"]}]},{"annotation":[{"start":[43,38],"name":"/home/harry/code/purescript/tests/purs/docs/src/TypeOpAliases.purs","end":[43,41]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Int"]}]}]},{"annotation":[{"start":[43,44],"name":"/home/harry/code/purescript/tests/purs/docs/src/TypeOpAliases.purs","end":[43,50]},[]],"tag":"TypeConstructor","contents":[["Prim"],"String"]}]}],"edInstanceConstraints":[],"edInstanceChain":[[["TypeOpAliases"],{"Ident":"testREither"}]],"edInstanceChainIndex":0}}],"efSourceSpan":{"start":[1,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/TypeOpAliases.purs","end":[44,23]}} \ No newline at end of file
diff --git a/tests/purs/docs/output/TypeSynonym/docs.json b/tests/purs/docs/output/TypeSynonym/docs.json
index 3935418..a681ffc 100644
--- a/tests/purs/docs/output/TypeSynonym/docs.json
+++ b/tests/purs/docs/output/TypeSynonym/docs.json
@@ -1 +1 @@
-{"reExports":[],"name":"TypeSynonym","comments":null,"declarations":[{"children":[],"comments":null,"title":"MyInt","info":{"arguments":[],"declType":"typeSynonym","type":{"annotation":[],"tag":"TypeConstructor","contents":[["Prim"],"Int"]}},"sourceSpan":{"start":[3,1],"name":"src/TypeSynonym.purs","end":[3,17]}}]} \ No newline at end of file
+{"reExports":[],"name":"TypeSynonym","comments":null,"declarations":[{"children":[],"comments":null,"title":"MyInt","info":{"arguments":[],"declType":"typeSynonym","type":{"annotation":[],"tag":"TypeConstructor","contents":[["Prim"],"Int"]}},"sourceSpan":{"start":[3,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/TypeSynonym.purs","end":[3,17]}}]} \ No newline at end of file
diff --git a/tests/purs/docs/output/TypeSynonym/externs.json b/tests/purs/docs/output/TypeSynonym/externs.json
index cb2a4ff..a5c9f52 100644
--- a/tests/purs/docs/output/TypeSynonym/externs.json
+++ b/tests/purs/docs/output/TypeSynonym/externs.json
@@ -1 +1 @@
-{"efVersion":"0.12.5","efModuleName":["TypeSynonym"],"efExports":[{"TypeRef":[{"start":[1,1],"name":"src/TypeSynonym.purs","end":[3,17]},"MyInt",[]]}],"efImports":[{"eiModule":["Prim"],"eiImportType":{"Implicit":[]},"eiImportedAs":["Prim"]},{"eiModule":["Prim"],"eiImportType":{"Implicit":[]},"eiImportedAs":null}],"efFixities":[],"efTypeFixities":[],"efDeclarations":[{"EDType":{"edTypeName":"MyInt","edTypeKind":{"annotation":[{"start":[3,14],"name":"src/TypeSynonym.purs","end":[3,17]},[]],"tag":"NamedKind","contents":[["Prim"],"Type"]},"edTypeDeclarationKind":"TypeSynonym"}},{"EDTypeSynonym":{"edTypeSynonymName":"MyInt","edTypeSynonymArguments":[],"edTypeSynonymType":{"annotation":[{"start":[3,14],"name":"src/TypeSynonym.purs","end":[3,17]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Int"]}}}],"efSourceSpan":{"start":[1,1],"name":"src/TypeSynonym.purs","end":[3,17]}} \ No newline at end of file
+{"efVersion":"0.13.2","efModuleName":["TypeSynonym"],"efExports":[{"TypeRef":[{"start":[1,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/TypeSynonym.purs","end":[3,17]},"MyInt",[]]}],"efImports":[{"eiModule":["Prim"],"eiImportType":{"Implicit":[]},"eiImportedAs":["Prim"]},{"eiModule":["Prim"],"eiImportType":{"Implicit":[]},"eiImportedAs":null}],"efFixities":[],"efTypeFixities":[],"efDeclarations":[{"EDType":{"edTypeName":"MyInt","edTypeKind":{"annotation":[{"start":[3,14],"name":"/home/harry/code/purescript/tests/purs/docs/src/TypeSynonym.purs","end":[3,17]},[]],"tag":"NamedKind","contents":[["Prim"],"Type"]},"edTypeDeclarationKind":"TypeSynonym"}},{"EDTypeSynonym":{"edTypeSynonymName":"MyInt","edTypeSynonymArguments":[],"edTypeSynonymType":{"annotation":[{"start":[3,14],"name":"/home/harry/code/purescript/tests/purs/docs/src/TypeSynonym.purs","end":[3,17]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Int"]}}}],"efSourceSpan":{"start":[1,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/TypeSynonym.purs","end":[3,17]}} \ No newline at end of file
diff --git a/tests/purs/docs/output/TypeSynonymInstance/docs.json b/tests/purs/docs/output/TypeSynonymInstance/docs.json
index 150bb1d..b367149 100644
--- a/tests/purs/docs/output/TypeSynonymInstance/docs.json
+++ b/tests/purs/docs/output/TypeSynonymInstance/docs.json
@@ -1 +1 @@
-{"reExports":[],"name":"TypeSynonymInstance","comments":null,"declarations":[{"children":[{"comments":null,"title":"MyNT","info":{"arguments":[{"annotation":[],"tag":"TypeConstructor","contents":[["TypeSynonym"],"MyInt"]}],"declType":"dataConstructor"},"sourceSpan":null},{"comments":null,"title":"ntMyNT","info":{"declType":"instance","dependencies":[],"type":{"annotation":[],"tag":"TypeApp","contents":[{"annotation":[],"tag":"TypeApp","contents":[{"annotation":[],"tag":"TypeConstructor","contents":[["Data","Newtype"],"Newtype"]},{"annotation":[],"tag":"TypeConstructor","contents":[["TypeSynonymInstance"],"MyNT"]}]},{"annotation":[],"tag":"TypeWildcard","contents":null}]}},"sourceSpan":{"start":[9,1],"name":"src/TypeSynonymInstance.purs","end":[9,41]}}],"comments":null,"title":"MyNT","info":{"declType":"data","dataDeclType":"newtype","typeArguments":[]},"sourceSpan":{"start":[7,1],"name":"src/TypeSynonymInstance.purs","end":[7,26]}},{"children":[],"comments":null,"title":"foo","info":{"declType":"value","type":{"annotation":[],"tag":"TypeConstructor","contents":[["Prim"],"Int"]}},"sourceSpan":{"start":[11,1],"name":"src/TypeSynonymInstance.purs","end":[11,8]}}]} \ No newline at end of file
+{"reExports":[],"name":"TypeSynonymInstance","comments":null,"declarations":[{"children":[{"comments":null,"title":"MyNT","info":{"arguments":[{"annotation":[],"tag":"TypeConstructor","contents":[["TypeSynonym"],"MyInt"]}],"declType":"dataConstructor"},"sourceSpan":null},{"comments":null,"title":"ntMyNT","info":{"declType":"instance","dependencies":[],"type":{"annotation":[],"tag":"TypeApp","contents":[{"annotation":[],"tag":"TypeApp","contents":[{"annotation":[],"tag":"TypeConstructor","contents":[["Data","Newtype"],"Newtype"]},{"annotation":[],"tag":"TypeConstructor","contents":[["TypeSynonymInstance"],"MyNT"]}]},{"annotation":[],"tag":"TypeWildcard","contents":null}]}},"sourceSpan":{"start":[9,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/TypeSynonymInstance.purs","end":[9,41]}}],"comments":null,"title":"MyNT","info":{"declType":"data","dataDeclType":"newtype","typeArguments":[]},"sourceSpan":{"start":[7,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/TypeSynonymInstance.purs","end":[7,26]}},{"children":[],"comments":null,"title":"foo","info":{"declType":"value","type":{"annotation":[],"tag":"TypeConstructor","contents":[["Prim"],"Int"]}},"sourceSpan":{"start":[11,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/TypeSynonymInstance.purs","end":[11,8]}}]} \ No newline at end of file
diff --git a/tests/purs/docs/output/TypeSynonymInstance/externs.json b/tests/purs/docs/output/TypeSynonymInstance/externs.json
index 7c54ce9..a2af387 100644
--- a/tests/purs/docs/output/TypeSynonymInstance/externs.json
+++ b/tests/purs/docs/output/TypeSynonymInstance/externs.json
@@ -1 +1 @@
-{"efVersion":"0.12.5","efModuleName":["TypeSynonymInstance"],"efExports":[{"TypeRef":[{"start":[2,1],"name":"src/TypeSynonymInstance.purs","end":[11,8]},"MyNT",["MyNT"]]},{"ValueRef":[{"start":[2,1],"name":"src/TypeSynonymInstance.purs","end":[11,8]},{"Ident":"foo"}]},{"TypeInstanceRef":[{"start":[0,0],"name":"<generated>","end":[0,0]},{"Ident":"ntMyNT"}]}],"efImports":[{"eiModule":["Prim"],"eiImportType":{"Implicit":[]},"eiImportedAs":["Prim"]},{"eiModule":["Prim"],"eiImportType":{"Implicit":[]},"eiImportedAs":null},{"eiModule":["Data","Newtype"],"eiImportType":{"Explicit":[{"TypeClassRef":[{"start":[4,22],"name":"src/TypeSynonymInstance.purs","end":[4,35]},"Newtype"]}]},"eiImportedAs":null},{"eiModule":["TypeSynonym"],"eiImportType":{"Explicit":[{"TypeRef":[{"start":[5,21],"name":"src/TypeSynonymInstance.purs","end":[5,26]},"MyInt",[]]}]},"eiImportedAs":null}],"efFixities":[],"efTypeFixities":[],"efDeclarations":[{"EDType":{"edTypeName":"MyNT","edTypeKind":{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"NamedKind","contents":[["Prim"],"Type"]},"edTypeDeclarationKind":{"DataType":{"args":[],"ctors":[["MyNT",[{"annotation":[{"start":[7,21],"name":"src/TypeSynonymInstance.purs","end":[7,26]},[]],"tag":"TypeConstructor","contents":[["TypeSynonym"],"MyInt"]}]]]}}}},{"EDDataConstructor":{"edDataCtorName":"MyNT","edDataCtorOrigin":"newtype","edDataCtorTypeCtor":"MyNT","edDataCtorType":{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[7,21],"name":"src/TypeSynonymInstance.purs","end":[7,26]},[]],"tag":"TypeConstructor","contents":[["TypeSynonym"],"MyInt"]}]},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeConstructor","contents":[["TypeSynonymInstance"],"MyNT"]}]},"edDataCtorFields":[{"Ident":"value0"}]}},{"EDValue":{"edValueName":{"Ident":"foo"},"edValueType":{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Int"]}}},{"EDInstance":{"edInstanceClassName":[["Data","Newtype"],"Newtype"],"edInstanceName":{"Ident":"ntMyNT"},"edInstanceTypes":[{"annotation":[{"start":[9,35],"name":"src/TypeSynonymInstance.purs","end":[9,39]},[]],"tag":"TypeConstructor","contents":[["TypeSynonymInstance"],"MyNT"]},{"annotation":[{"start":[3,14],"name":"src/TypeSynonym.purs","end":[3,17]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Int"]}],"edInstanceConstraints":[],"edInstanceChain":[[["TypeSynonymInstance"],{"Ident":"ntMyNT"}]],"edInstanceChainIndex":0}}],"efSourceSpan":{"start":[2,1],"name":"src/TypeSynonymInstance.purs","end":[11,8]}} \ No newline at end of file
+{"efVersion":"0.13.2","efModuleName":["TypeSynonymInstance"],"efExports":[{"TypeRef":[{"start":[2,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/TypeSynonymInstance.purs","end":[11,8]},"MyNT",["MyNT"]]},{"ValueRef":[{"start":[2,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/TypeSynonymInstance.purs","end":[11,8]},{"Ident":"foo"}]},{"TypeInstanceRef":[{"start":[0,0],"name":"<generated>","end":[0,0]},{"Ident":"ntMyNT"}]}],"efImports":[{"eiModule":["Prim"],"eiImportType":{"Implicit":[]},"eiImportedAs":["Prim"]},{"eiModule":["Prim"],"eiImportType":{"Implicit":[]},"eiImportedAs":null},{"eiModule":["Data","Newtype"],"eiImportType":{"Explicit":[{"TypeClassRef":[{"start":[4,22],"name":"/home/harry/code/purescript/tests/purs/docs/src/TypeSynonymInstance.purs","end":[4,35]},"Newtype"]}]},"eiImportedAs":null},{"eiModule":["TypeSynonym"],"eiImportType":{"Explicit":[{"TypeRef":[{"start":[5,21],"name":"/home/harry/code/purescript/tests/purs/docs/src/TypeSynonymInstance.purs","end":[5,26]},"MyInt",[]]}]},"eiImportedAs":null}],"efFixities":[],"efTypeFixities":[],"efDeclarations":[{"EDType":{"edTypeName":"MyNT","edTypeKind":{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"NamedKind","contents":[["Prim"],"Type"]},"edTypeDeclarationKind":{"DataType":{"args":[],"ctors":[["MyNT",[{"annotation":[{"start":[7,21],"name":"/home/harry/code/purescript/tests/purs/docs/src/TypeSynonymInstance.purs","end":[7,26]},[]],"tag":"TypeConstructor","contents":[["TypeSynonym"],"MyInt"]}]]]}}}},{"EDDataConstructor":{"edDataCtorName":"MyNT","edDataCtorOrigin":"newtype","edDataCtorTypeCtor":"MyNT","edDataCtorType":{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[7,21],"name":"/home/harry/code/purescript/tests/purs/docs/src/TypeSynonymInstance.purs","end":[7,26]},[]],"tag":"TypeConstructor","contents":[["TypeSynonym"],"MyInt"]}]},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeConstructor","contents":[["TypeSynonymInstance"],"MyNT"]}]},"edDataCtorFields":[{"Ident":"value0"}]}},{"EDValue":{"edValueName":{"Ident":"foo"},"edValueType":{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Int"]}}},{"EDInstance":{"edInstanceClassName":[["Data","Newtype"],"Newtype"],"edInstanceName":{"Ident":"ntMyNT"},"edInstanceTypes":[{"annotation":[{"start":[9,35],"name":"/home/harry/code/purescript/tests/purs/docs/src/TypeSynonymInstance.purs","end":[9,39]},[]],"tag":"TypeConstructor","contents":[["TypeSynonymInstance"],"MyNT"]},{"annotation":[{"start":[3,14],"name":"/home/harry/code/purescript/tests/purs/docs/src/TypeSynonym.purs","end":[3,17]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Int"]}],"edInstanceConstraints":[],"edInstanceChain":[[["TypeSynonymInstance"],{"Ident":"ntMyNT"}]],"edInstanceChainIndex":0}}],"efSourceSpan":{"start":[2,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/TypeSynonymInstance.purs","end":[11,8]}} \ No newline at end of file
diff --git a/tests/purs/docs/output/TypeSynonymInstance/index.js b/tests/purs/docs/output/TypeSynonymInstance/index.js
deleted file mode 100644
index 3e9a2f1..0000000
--- a/tests/purs/docs/output/TypeSynonymInstance/index.js
+++ /dev/null
@@ -1,16 +0,0 @@
-
-// see #3624
-"use strict";
-var Data_Newtype = require("../Data.Newtype/index.js");
-var MyNT = function (x) {
- return x;
-};
-var ntMyNT = new Data_Newtype.Newtype(function (n) {
- return n;
-}, MyNT);
-var foo = 0;
-module.exports = {
- MyNT: MyNT,
- foo: foo,
- ntMyNT: ntMyNT
-};
diff --git a/tests/purs/docs/output/UTF8/docs.json b/tests/purs/docs/output/UTF8/docs.json
index 86520fc..71fe2a6 100644
--- a/tests/purs/docs/output/UTF8/docs.json
+++ b/tests/purs/docs/output/UTF8/docs.json
@@ -1 +1 @@
-{"reExports":[],"name":"UTF8","comments":null,"declarations":[{"children":[],"comments":"üÜäÄ 😰\n","title":"thing","info":{"declType":"value","type":{"annotation":[],"tag":"TypeConstructor","contents":[["Prelude"],"Unit"]}},"sourceSpan":{"start":[6,1],"name":"src/UTF8.purs","end":[6,14]}}]} \ No newline at end of file
+{"reExports":[],"name":"UTF8","comments":null,"declarations":[{"children":[],"comments":"üÜäÄ 😰\n","title":"thing","info":{"declType":"value","type":{"annotation":[],"tag":"TypeConstructor","contents":[["Prelude"],"Unit"]}},"sourceSpan":{"start":[6,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/UTF8.purs","end":[6,14]}}]} \ No newline at end of file
diff --git a/tests/purs/docs/output/UTF8/externs.json b/tests/purs/docs/output/UTF8/externs.json
index 06d3d6c..c662c74 100644
--- a/tests/purs/docs/output/UTF8/externs.json
+++ b/tests/purs/docs/output/UTF8/externs.json
@@ -1 +1 @@
-{"efVersion":"0.12.5","efModuleName":["UTF8"],"efExports":[{"ValueRef":[{"start":[1,1],"name":"src/UTF8.purs","end":[7,13]},{"Ident":"thing"}]}],"efImports":[{"eiModule":["Prim"],"eiImportType":{"Implicit":[]},"eiImportedAs":["Prim"]},{"eiModule":["Prim"],"eiImportType":{"Implicit":[]},"eiImportedAs":null},{"eiModule":["Prelude"],"eiImportType":{"Explicit":[{"TypeRef":[{"start":[3,17],"name":"src/UTF8.purs","end":[3,21]},"Unit",[]]},{"ValueRef":[{"start":[3,23],"name":"src/UTF8.purs","end":[3,27]},{"Ident":"unit"}]}]},"eiImportedAs":null}],"efFixities":[],"efTypeFixities":[],"efDeclarations":[{"EDValue":{"edValueName":{"Ident":"thing"},"edValueType":{"annotation":[{"start":[6,10],"name":"src/UTF8.purs","end":[6,14]},[]],"tag":"TypeConstructor","contents":[["Prelude"],"Unit"]}}}],"efSourceSpan":{"start":[1,1],"name":"src/UTF8.purs","end":[7,13]}} \ No newline at end of file
+{"efVersion":"0.13.2","efModuleName":["UTF8"],"efExports":[{"ValueRef":[{"start":[1,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/UTF8.purs","end":[7,13]},{"Ident":"thing"}]}],"efImports":[{"eiModule":["Prim"],"eiImportType":{"Implicit":[]},"eiImportedAs":["Prim"]},{"eiModule":["Prim"],"eiImportType":{"Implicit":[]},"eiImportedAs":null},{"eiModule":["Prelude"],"eiImportType":{"Explicit":[{"TypeRef":[{"start":[3,17],"name":"/home/harry/code/purescript/tests/purs/docs/src/UTF8.purs","end":[3,21]},"Unit",[]]},{"ValueRef":[{"start":[3,23],"name":"/home/harry/code/purescript/tests/purs/docs/src/UTF8.purs","end":[3,27]},{"Ident":"unit"}]}]},"eiImportedAs":null}],"efFixities":[],"efTypeFixities":[],"efDeclarations":[{"EDValue":{"edValueName":{"Ident":"thing"},"edValueType":{"annotation":[{"start":[6,10],"name":"/home/harry/code/purescript/tests/purs/docs/src/UTF8.purs","end":[6,14]},[]],"tag":"TypeConstructor","contents":[["Prelude"],"Unit"]}}}],"efSourceSpan":{"start":[1,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/UTF8.purs","end":[7,13]}} \ No newline at end of file
diff --git a/tests/purs/docs/output/Virtual/externs.json b/tests/purs/docs/output/Virtual/externs.json
index ee9e378..30efa91 100644
--- a/tests/purs/docs/output/Virtual/externs.json
+++ b/tests/purs/docs/output/Virtual/externs.json
@@ -1 +1 @@
-{"efVersion":"0.12.5","efModuleName":["Virtual"],"efExports":[{"ReExportRef":[{"start":[1,1],"name":"src/Virtual.purs","end":[5,33]},{"exportSourceImportedFrom":["Prelude"],"exportSourceDefinedIn":["Prelude"]},{"TypeRef":[{"start":[1,1],"name":"src/Virtual.purs","end":[5,33]},"Boolean2",["False","True"]]}]},{"ReExportRef":[{"start":[1,1],"name":"src/Virtual.purs","end":[5,33]},{"exportSourceImportedFrom":["Prelude"],"exportSourceDefinedIn":["Prelude"]},{"TypeRef":[{"start":[1,1],"name":"src/Virtual.purs","end":[5,33]},"Unit",["Unit"]]}]},{"ReExportRef":[{"start":[1,1],"name":"src/Virtual.purs","end":[5,33]},{"exportSourceImportedFrom":["Prelude"],"exportSourceDefinedIn":["Prelude"]},{"ValueRef":[{"start":[1,1],"name":"src/Virtual.purs","end":[5,33]},{"Ident":"unit"}]}]},{"ModuleRef":[{"start":[2,5],"name":"src/Virtual.purs","end":[2,26]},["VirtualPrelude"]]}],"efImports":[{"eiModule":["Prim"],"eiImportType":{"Implicit":[]},"eiImportedAs":["Prim"]},{"eiModule":["Prim"],"eiImportType":{"Implicit":[]},"eiImportedAs":null},{"eiModule":["Prelude"],"eiImportType":{"Implicit":[]},"eiImportedAs":["VirtualPrelude"]}],"efFixities":[],"efTypeFixities":[],"efDeclarations":[],"efSourceSpan":{"start":[1,1],"name":"src/Virtual.purs","end":[5,33]}} \ No newline at end of file
+{"efVersion":"0.13.2","efModuleName":["Virtual"],"efExports":[{"ReExportRef":[{"start":[1,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/Virtual.purs","end":[5,33]},{"exportSourceImportedFrom":["Prelude"],"exportSourceDefinedIn":["Prelude"]},{"TypeRef":[{"start":[1,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/Virtual.purs","end":[5,33]},"Boolean2",["False","True"]]}]},{"ReExportRef":[{"start":[1,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/Virtual.purs","end":[5,33]},{"exportSourceImportedFrom":["Prelude"],"exportSourceDefinedIn":["Prelude"]},{"TypeRef":[{"start":[1,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/Virtual.purs","end":[5,33]},"Unit",["Unit"]]}]},{"ReExportRef":[{"start":[1,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/Virtual.purs","end":[5,33]},{"exportSourceImportedFrom":["Prelude"],"exportSourceDefinedIn":["Prelude"]},{"ValueRef":[{"start":[1,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/Virtual.purs","end":[5,33]},{"Ident":"unit"}]}]},{"ModuleRef":[{"start":[2,5],"name":"/home/harry/code/purescript/tests/purs/docs/src/Virtual.purs","end":[2,26]},["VirtualPrelude"]]}],"efImports":[{"eiModule":["Prim"],"eiImportType":{"Implicit":[]},"eiImportedAs":["Prim"]},{"eiModule":["Prim"],"eiImportType":{"Implicit":[]},"eiImportedAs":null},{"eiModule":["Prelude"],"eiImportType":{"Implicit":[]},"eiImportedAs":["VirtualPrelude"]}],"efFixities":[],"efTypeFixities":[],"efDeclarations":[],"efSourceSpan":{"start":[1,1],"name":"/home/harry/code/purescript/tests/purs/docs/src/Virtual.purs","end":[5,33]}} \ No newline at end of file
diff --git a/tests/purs/docs/src/DocCommentsClassMethod.purs b/tests/purs/docs/src/DocCommentsClassMethod.purs
new file mode 100644
index 0000000..99d1375
--- /dev/null
+++ b/tests/purs/docs/src/DocCommentsClassMethod.purs
@@ -0,0 +1,6 @@
+module DocCommentsClassMethod where
+
+class Foo a where
+ -- | class method comment
+ bar :: a
+ baz :: String -> a
diff --git a/tests/purs/docs/src/DocCommentsDataConstructor.purs b/tests/purs/docs/src/DocCommentsDataConstructor.purs
new file mode 100644
index 0000000..34823bc
--- /dev/null
+++ b/tests/purs/docs/src/DocCommentsDataConstructor.purs
@@ -0,0 +1,15 @@
+module DocCommentsDataConstructor where
+
+data Foo
+ -- | data constructor comment
+ = Bar
+ | Baz
+
+data ComplexFoo a b
+ = ComplexBar a
+ -- | another data constructor comment
+ | ComplexBaz a b
+
+newtype NewtypeFoo
+ -- | newtype data constructor comment
+ = NewtypeFoo { newtypeBar :: String }
diff --git a/tests/purs/layout/LetGuards.purs b/tests/purs/layout/LetGuards.purs
new file mode 100644
index 0000000..8555a75
--- /dev/null
+++ b/tests/purs/layout/LetGuards.purs
@@ -0,0 +1,29 @@
+module Test where
+
+test =
+ let
+ foo
+ | bar
+ , baz =
+ 42
+ | otherwise = 100
+ in
+ foo
+
+test = do
+ let
+ foo
+ | bar
+ , baz =
+ 42
+ | otherwise = 100
+ foo
+
+test = ado
+ let
+ foo
+ | bar
+ , baz =
+ 42
+ | otherwise = 100
+ foo
diff --git a/tests/purs/passing/EmptyDicts.purs b/tests/purs/passing/EmptyDicts.purs
new file mode 100644
index 0000000..157af7b
--- /dev/null
+++ b/tests/purs/passing/EmptyDicts.purs
@@ -0,0 +1,77 @@
+-- |
+-- The purpose of this test is to make sure that the empty type class
+-- dictionary elimination code doesn't change semantics.
+module Main where
+
+import Prelude
+import Effect.Console (log)
+
+-- |
+-- Data type to check that the result of expressions with eliminated
+-- dictionaries are as expected.
+data Check = Check
+derive instance eqCheck :: Eq Check
+
+-- |
+-- This type class has no constraints and no members.
+-- Is is therefore considered empty.
+class EmptyClass
+instance emptyDictInst :: EmptyClass
+
+-- |
+-- This type class is not empty as it has members, but it has an empty super
+-- class.
+class EmptyClass <= HasEmptySuper where
+ hasEmptySuper :: Check
+instance hasEmptySuperInst :: HasEmptySuper where
+ hasEmptySuper = Check
+
+-- |
+-- This type class has no members, but has a non-empty super class.
+-- It is therefore not empty.
+class HasEmptySuper <= HasNonEmptySuper
+instance hasNonEmptySuperInst :: HasEmptySuper => HasNonEmptySuper
+
+-- |
+-- This type class is empty because all it's super classes are empty and it
+-- has no members.
+class EmptyClass <= AliasEmptyClass
+instance aliasEmptyClassInst :: AliasEmptyClass
+
+whenEmpty :: Check
+whenEmpty = Check :: EmptyClass => Check
+
+whenHasEmptySuper :: Check
+whenHasEmptySuper = Check :: HasEmptySuper => Check
+
+whenHasNonEmptySuper :: Check
+whenHasNonEmptySuper = Check :: HasNonEmptySuper => Check
+
+whenAliasEmptyClass :: Check
+whenAliasEmptyClass = Check :: AliasEmptyClass => Check
+
+class WithArgEmpty t
+instance withArgEmptyCheck :: WithArgEmpty Check
+class WithArgEmpty t <= WithArgHasEmptySuper t where
+ withArgHasEmptySuper :: t
+instance withArgHasEmptySuperCheck :: WithArgHasEmptySuper Check where
+ withArgHasEmptySuper = Check
+
+whenAccessingSuperDict :: Check
+whenAccessingSuperDict = foo Check where
+
+ bar :: forall t . WithArgEmpty t => t -> t
+ bar x = x
+
+ foo :: forall t . WithArgHasEmptySuper t => t -> t
+ foo x = bar x
+
+main =
+ if Check == whenEmpty &&
+ Check == whenHasEmptySuper &&
+ Check == whenHasNonEmptySuper &&
+ Check == whenAliasEmptyClass &&
+ Check == whenAccessingSuperDict
+ then log "Done"
+ else pure unit
+
diff --git a/tests/purs/publish/basic-example/output/Control.Alt/docs.json b/tests/purs/publish/basic-example/output/Control.Alt/docs.json
deleted file mode 100644
index 651b08c..0000000
--- a/tests/purs/publish/basic-example/output/Control.Alt/docs.json
+++ /dev/null
@@ -1 +0,0 @@
-{"reExports":[],"name":"Control.Alt","comments":null,"declarations":[{"children":[{"comments":null,"title":"alt","info":{"declType":"typeClassMember","type":{"annotation":[],"tag":"ForAll","contents":["a",{"annotation":[],"tag":"TypeApp","contents":[{"annotation":[],"tag":"TypeApp","contents":[{"annotation":[],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[],"tag":"TypeApp","contents":[{"annotation":[],"tag":"TypeVar","contents":"f"},{"annotation":[],"tag":"TypeVar","contents":"a"}]}]},{"annotation":[],"tag":"TypeApp","contents":[{"annotation":[],"tag":"TypeApp","contents":[{"annotation":[],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[],"tag":"TypeApp","contents":[{"annotation":[],"tag":"TypeVar","contents":"f"},{"annotation":[],"tag":"TypeVar","contents":"a"}]}]},{"annotation":[],"tag":"TypeApp","contents":[{"annotation":[],"tag":"TypeVar","contents":"f"},{"annotation":[],"tag":"TypeVar","contents":"a"}]}]}]},null]}},"sourceSpan":{"start":[22,3],"name":"../../../support/bower_components/purescript-control/src/Control/Alt.purs","end":[22,37]}},{"comments":null,"title":"altArray","info":{"declType":"instance","dependencies":[],"type":{"annotation":[],"tag":"TypeApp","contents":[{"annotation":[],"tag":"TypeConstructor","contents":[["Control","Alt"],"Alt"]},{"annotation":[],"tag":"TypeConstructor","contents":[["Prim"],"Array"]}]}},"sourceSpan":{"start":[26,1],"name":"../../../support/bower_components/purescript-control/src/Control/Alt.purs","end":[27,15]}}],"comments":"The `Alt` type class identifies an associative operation on a type\nconstructor. It is similar to `Semigroup`, except that it applies to\ntypes of kind `* -> *`, like `Array` or `List`, rather than concrete types\n`String` or `Number`.\n\n`Alt` instances are required to satisfy the following laws:\n\n- Associativity: `(x <|> y) <|> z == x <|> (y <|> z)`\n- Distributivity: `f <$> (x <|> y) == (f <$> x) <|> (f <$> y)`\n\nFor example, the `Array` (`[]`) type is an instance of `Alt`, where\n`(<|>)` is defined to be concatenation.\n","title":"Alt","info":{"fundeps":[],"arguments":[["f",null]],"declType":"typeClass","superclasses":[{"constraintAnn":[],"constraintClass":[["Data","Functor"],"Functor"],"constraintArgs":[{"annotation":[],"tag":"TypeVar","contents":"f"}],"constraintData":null}]},"sourceSpan":{"start":[21,1],"name":"../../../support/bower_components/purescript-control/src/Control/Alt.purs","end":[22,37]}},{"children":[],"comments":null,"title":"(<|>)","info":{"declType":"alias","alias":[["Control","Alt"],{"Right":{"Left":{"Ident":"alt"}}}],"fixity":{"associativity":"infixl","precedence":3}},"sourceSpan":{"start":[24,1],"name":"../../../support/bower_components/purescript-control/src/Control/Alt.purs","end":[24,20]}}]} \ No newline at end of file
diff --git a/tests/purs/publish/basic-example/output/Control.Alt/externs.json b/tests/purs/publish/basic-example/output/Control.Alt/externs.json
deleted file mode 100644
index 8ca42dd..0000000
--- a/tests/purs/publish/basic-example/output/Control.Alt/externs.json
+++ /dev/null
@@ -1 +0,0 @@
-{"efVersion":"0.12.5","efModuleName":["Control","Alt"],"efExports":[{"ReExportRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-control/src/Control/Alt.purs","end":[27,15]},{"exportSourceImportedFrom":["Data","Functor"],"exportSourceDefinedIn":["Data","Functor"]},{"TypeClassRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-control/src/Control/Alt.purs","end":[27,15]},"Functor"]}]},{"ReExportRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-control/src/Control/Alt.purs","end":[27,15]},{"exportSourceImportedFrom":["Data","Functor"],"exportSourceDefinedIn":["Data","Functor"]},{"ValueRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-control/src/Control/Alt.purs","end":[27,15]},{"Ident":"map"}]}]},{"ReExportRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-control/src/Control/Alt.purs","end":[27,15]},{"exportSourceImportedFrom":["Data","Functor"],"exportSourceDefinedIn":["Data","Functor"]},{"ValueRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-control/src/Control/Alt.purs","end":[27,15]},{"Ident":"void"}]}]},{"ReExportRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-control/src/Control/Alt.purs","end":[27,15]},{"exportSourceImportedFrom":["Data","Functor"],"exportSourceDefinedIn":["Data","Functor"]},{"ValueOpRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-control/src/Control/Alt.purs","end":[27,15]},"$>"]}]},{"ReExportRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-control/src/Control/Alt.purs","end":[27,15]},{"exportSourceImportedFrom":["Data","Functor"],"exportSourceDefinedIn":["Data","Functor"]},{"ValueOpRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-control/src/Control/Alt.purs","end":[27,15]},"<#>"]}]},{"ReExportRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-control/src/Control/Alt.purs","end":[27,15]},{"exportSourceImportedFrom":["Data","Functor"],"exportSourceDefinedIn":["Data","Functor"]},{"ValueOpRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-control/src/Control/Alt.purs","end":[27,15]},"<$"]}]},{"ReExportRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-control/src/Control/Alt.purs","end":[27,15]},{"exportSourceImportedFrom":["Data","Functor"],"exportSourceDefinedIn":["Data","Functor"]},{"ValueOpRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-control/src/Control/Alt.purs","end":[27,15]},"<$>"]}]},{"TypeClassRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-control/src/Control/Alt.purs","end":[27,15]},"Alt"]},{"ValueRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-control/src/Control/Alt.purs","end":[27,15]},{"Ident":"alt"}]},{"ValueOpRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-control/src/Control/Alt.purs","end":[27,15]},"<|>"]},{"ModuleRef":[{"start":[3,5],"name":"../../../support/bower_components/purescript-control/src/Control/Alt.purs","end":[3,24]},["Data","Functor"]]},{"TypeInstanceRef":[{"start":[0,0],"name":"<generated>","end":[0,0]},{"Ident":"altArray"}]}],"efImports":[{"eiModule":["Prim"],"eiImportType":{"Implicit":[]},"eiImportedAs":["Prim"]},{"eiModule":["Prim"],"eiImportType":{"Implicit":[]},"eiImportedAs":null},{"eiModule":["Data","Functor"],"eiImportType":{"Explicit":[{"TypeClassRef":[{"start":[6,22],"name":"../../../support/bower_components/purescript-control/src/Control/Alt.purs","end":[6,35]},"Functor"]},{"ValueRef":[{"start":[6,37],"name":"../../../support/bower_components/purescript-control/src/Control/Alt.purs","end":[6,40]},{"Ident":"map"}]},{"ValueRef":[{"start":[6,42],"name":"../../../support/bower_components/purescript-control/src/Control/Alt.purs","end":[6,46]},{"Ident":"void"}]},{"ValueOpRef":[{"start":[6,48],"name":"../../../support/bower_components/purescript-control/src/Control/Alt.purs","end":[6,52]},"$>"]},{"ValueOpRef":[{"start":[6,54],"name":"../../../support/bower_components/purescript-control/src/Control/Alt.purs","end":[6,59]},"<#>"]},{"ValueOpRef":[{"start":[6,61],"name":"../../../support/bower_components/purescript-control/src/Control/Alt.purs","end":[6,65]},"<$"]},{"ValueOpRef":[{"start":[6,67],"name":"../../../support/bower_components/purescript-control/src/Control/Alt.purs","end":[6,72]},"<$>"]}]},"eiImportedAs":null},{"eiModule":["Data","Semigroup"],"eiImportType":{"Explicit":[{"ValueRef":[{"start":[7,24],"name":"../../../support/bower_components/purescript-control/src/Control/Alt.purs","end":[7,30]},{"Ident":"append"}]}]},"eiImportedAs":null}],"efFixities":[{"efAssociativity":"infixl","efPrecedence":3,"efOperator":"<|>","efAlias":[["Control","Alt"],{"Left":{"Ident":"alt"}}]}],"efTypeFixities":[],"efDeclarations":[{"EDType":{"edTypeName":"Alt","edTypeKind":{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"FunKind","contents":[{"annotation":[{"start":[22,20],"name":"../../../support/bower_components/purescript-control/src/Control/Alt.purs","end":[22,23]},[]],"tag":"FunKind","contents":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"NamedKind","contents":[["Prim"],"Type"]},{"annotation":[{"start":[22,24],"name":"../../../support/bower_components/purescript-control/src/Control/Alt.purs","end":[22,26]},[]],"tag":"NamedKind","contents":[["Prim"],"Type"]}]},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"NamedKind","contents":[["Prim"],"Type"]}]},"edTypeDeclarationKind":"TypeSynonym"}},{"EDTypeSynonym":{"edTypeSynonymName":"Alt","edTypeSynonymArguments":[["f",null]],"edTypeSynonymType":{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Record"]},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"RCons","contents":["alt",{"annotation":[{"start":[22,10],"name":"../../../support/bower_components/purescript-control/src/Control/Alt.purs","end":[22,37]},[]],"tag":"ForAll","contents":["a",{"annotation":[{"start":[22,20],"name":"../../../support/bower_components/purescript-control/src/Control/Alt.purs","end":[22,37]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[22,20],"name":"../../../support/bower_components/purescript-control/src/Control/Alt.purs","end":[22,37]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[22,24],"name":"../../../support/bower_components/purescript-control/src/Control/Alt.purs","end":[22,26]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[22,20],"name":"../../../support/bower_components/purescript-control/src/Control/Alt.purs","end":[22,23]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[22,20],"name":"../../../support/bower_components/purescript-control/src/Control/Alt.purs","end":[22,21]},[]],"tag":"TypeVar","contents":"f"},{"annotation":[{"start":[22,22],"name":"../../../support/bower_components/purescript-control/src/Control/Alt.purs","end":[22,23]},[]],"tag":"TypeVar","contents":"a"}]}]},{"annotation":[{"start":[22,27],"name":"../../../support/bower_components/purescript-control/src/Control/Alt.purs","end":[22,37]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[22,27],"name":"../../../support/bower_components/purescript-control/src/Control/Alt.purs","end":[22,37]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[22,31],"name":"../../../support/bower_components/purescript-control/src/Control/Alt.purs","end":[22,33]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[22,27],"name":"../../../support/bower_components/purescript-control/src/Control/Alt.purs","end":[22,30]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[22,27],"name":"../../../support/bower_components/purescript-control/src/Control/Alt.purs","end":[22,28]},[]],"tag":"TypeVar","contents":"f"},{"annotation":[{"start":[22,29],"name":"../../../support/bower_components/purescript-control/src/Control/Alt.purs","end":[22,30]},[]],"tag":"TypeVar","contents":"a"}]}]},{"annotation":[{"start":[22,34],"name":"../../../support/bower_components/purescript-control/src/Control/Alt.purs","end":[22,37]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[22,34],"name":"../../../support/bower_components/purescript-control/src/Control/Alt.purs","end":[22,35]},[]],"tag":"TypeVar","contents":"f"},{"annotation":[{"start":[22,36],"name":"../../../support/bower_components/purescript-control/src/Control/Alt.purs","end":[22,37]},[]],"tag":"TypeVar","contents":"a"}]}]}]},null]},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"RCons","contents":["Functor0",{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Record"]},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"REmpty"}]}]},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeConstructor","contents":[["Data","Functor"],"Functor"]},{"annotation":[{"start":[21,15],"name":"../../../support/bower_components/purescript-control/src/Control/Alt.purs","end":[21,16]},[]],"tag":"TypeVar","contents":"f"}]}]},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"REmpty"}]}]}]}}},{"EDClass":{"edClassName":"Alt","edClassTypeArguments":[["f",null]],"edClassMembers":[[{"Ident":"alt"},{"annotation":[{"start":[22,10],"name":"../../../support/bower_components/purescript-control/src/Control/Alt.purs","end":[22,37]},[]],"tag":"ForAll","contents":["a",{"annotation":[{"start":[22,20],"name":"../../../support/bower_components/purescript-control/src/Control/Alt.purs","end":[22,37]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[22,20],"name":"../../../support/bower_components/purescript-control/src/Control/Alt.purs","end":[22,37]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[22,24],"name":"../../../support/bower_components/purescript-control/src/Control/Alt.purs","end":[22,26]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[22,20],"name":"../../../support/bower_components/purescript-control/src/Control/Alt.purs","end":[22,23]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[22,20],"name":"../../../support/bower_components/purescript-control/src/Control/Alt.purs","end":[22,21]},[]],"tag":"TypeVar","contents":"f"},{"annotation":[{"start":[22,22],"name":"../../../support/bower_components/purescript-control/src/Control/Alt.purs","end":[22,23]},[]],"tag":"TypeVar","contents":"a"}]}]},{"annotation":[{"start":[22,27],"name":"../../../support/bower_components/purescript-control/src/Control/Alt.purs","end":[22,37]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[22,27],"name":"../../../support/bower_components/purescript-control/src/Control/Alt.purs","end":[22,37]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[22,31],"name":"../../../support/bower_components/purescript-control/src/Control/Alt.purs","end":[22,33]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[22,27],"name":"../../../support/bower_components/purescript-control/src/Control/Alt.purs","end":[22,30]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[22,27],"name":"../../../support/bower_components/purescript-control/src/Control/Alt.purs","end":[22,28]},[]],"tag":"TypeVar","contents":"f"},{"annotation":[{"start":[22,29],"name":"../../../support/bower_components/purescript-control/src/Control/Alt.purs","end":[22,30]},[]],"tag":"TypeVar","contents":"a"}]}]},{"annotation":[{"start":[22,34],"name":"../../../support/bower_components/purescript-control/src/Control/Alt.purs","end":[22,37]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[22,34],"name":"../../../support/bower_components/purescript-control/src/Control/Alt.purs","end":[22,35]},[]],"tag":"TypeVar","contents":"f"},{"annotation":[{"start":[22,36],"name":"../../../support/bower_components/purescript-control/src/Control/Alt.purs","end":[22,37]},[]],"tag":"TypeVar","contents":"a"}]}]}]},null]}]],"edClassConstraints":[{"constraintAnn":[{"start":[21,7],"name":"../../../support/bower_components/purescript-control/src/Control/Alt.purs","end":[21,16]},[]],"constraintClass":[["Data","Functor"],"Functor"],"constraintArgs":[{"annotation":[{"start":[21,15],"name":"../../../support/bower_components/purescript-control/src/Control/Alt.purs","end":[21,16]},[]],"tag":"TypeVar","contents":"f"}],"constraintData":null}],"edFunctionalDependencies":[]}},{"EDValue":{"edValueName":{"Ident":"alt"},"edValueType":{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"ForAll","contents":["f",{"annotation":[{"start":[22,10],"name":"../../../support/bower_components/purescript-control/src/Control/Alt.purs","end":[22,37]},[]],"tag":"ForAll","contents":["a",{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"ConstrainedType","contents":[{"constraintAnn":[{"start":[0,0],"name":"","end":[0,0]},[]],"constraintClass":[["Control","Alt"],"Alt"],"constraintArgs":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeVar","contents":"f"}],"constraintData":null},{"annotation":[{"start":[22,20],"name":"../../../support/bower_components/purescript-control/src/Control/Alt.purs","end":[22,37]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[22,20],"name":"../../../support/bower_components/purescript-control/src/Control/Alt.purs","end":[22,37]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[22,24],"name":"../../../support/bower_components/purescript-control/src/Control/Alt.purs","end":[22,26]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[22,20],"name":"../../../support/bower_components/purescript-control/src/Control/Alt.purs","end":[22,23]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[22,20],"name":"../../../support/bower_components/purescript-control/src/Control/Alt.purs","end":[22,21]},[]],"tag":"TypeVar","contents":"f"},{"annotation":[{"start":[22,22],"name":"../../../support/bower_components/purescript-control/src/Control/Alt.purs","end":[22,23]},[]],"tag":"TypeVar","contents":"a"}]}]},{"annotation":[{"start":[22,27],"name":"../../../support/bower_components/purescript-control/src/Control/Alt.purs","end":[22,37]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[22,27],"name":"../../../support/bower_components/purescript-control/src/Control/Alt.purs","end":[22,37]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[22,31],"name":"../../../support/bower_components/purescript-control/src/Control/Alt.purs","end":[22,33]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[22,27],"name":"../../../support/bower_components/purescript-control/src/Control/Alt.purs","end":[22,30]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[22,27],"name":"../../../support/bower_components/purescript-control/src/Control/Alt.purs","end":[22,28]},[]],"tag":"TypeVar","contents":"f"},{"annotation":[{"start":[22,29],"name":"../../../support/bower_components/purescript-control/src/Control/Alt.purs","end":[22,30]},[]],"tag":"TypeVar","contents":"a"}]}]},{"annotation":[{"start":[22,34],"name":"../../../support/bower_components/purescript-control/src/Control/Alt.purs","end":[22,37]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[22,34],"name":"../../../support/bower_components/purescript-control/src/Control/Alt.purs","end":[22,35]},[]],"tag":"TypeVar","contents":"f"},{"annotation":[{"start":[22,36],"name":"../../../support/bower_components/purescript-control/src/Control/Alt.purs","end":[22,37]},[]],"tag":"TypeVar","contents":"a"}]}]}]}]},4]},5]}}},{"EDInstance":{"edInstanceClassName":[["Control","Alt"],"Alt"],"edInstanceName":{"Ident":"altArray"},"edInstanceTypes":[{"annotation":[{"start":[26,26],"name":"../../../support/bower_components/purescript-control/src/Control/Alt.purs","end":[26,31]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Array"]}],"edInstanceConstraints":[],"edInstanceChain":[[["Control","Alt"],{"Ident":"altArray"}]],"edInstanceChainIndex":0}}],"efSourceSpan":{"start":[1,1],"name":"../../../support/bower_components/purescript-control/src/Control/Alt.purs","end":[27,15]}} \ No newline at end of file
diff --git a/tests/purs/publish/basic-example/output/Control.Alternative/docs.json b/tests/purs/publish/basic-example/output/Control.Alternative/docs.json
deleted file mode 100644
index 4e35245..0000000
--- a/tests/purs/publish/basic-example/output/Control.Alternative/docs.json
+++ /dev/null
@@ -1 +0,0 @@
-{"reExports":[],"name":"Control.Alternative","comments":null,"declarations":[{"children":[{"comments":null,"title":"alternativeArray","info":{"declType":"instance","dependencies":[],"type":{"annotation":[],"tag":"TypeApp","contents":[{"annotation":[],"tag":"TypeConstructor","contents":[["Control","Alternative"],"Alternative"]},{"annotation":[],"tag":"TypeConstructor","contents":[["Prim"],"Array"]}]}},"sourceSpan":{"start":[27,1],"name":"../../../support/bower_components/purescript-control/src/Control/Alternative.purs","end":[27,47]}}],"comments":"The `Alternative` type class has no members of its own; it just specifies\nthat the type constructor has both `Applicative` and `Plus` instances.\n\nTypes which have `Alternative` instances should also satisfy the following\nlaws:\n\n- Distributivity: `(f <|> g) <*> x == (f <*> x) <|> (g <*> x)`\n- Annihilation: `empty <*> f = empty`\n","title":"Alternative","info":{"fundeps":[],"arguments":[["f",null]],"declType":"typeClass","superclasses":[{"constraintAnn":[],"constraintClass":[["Control","Applicative"],"Applicative"],"constraintArgs":[{"annotation":[],"tag":"TypeVar","contents":"f"}],"constraintData":null},{"constraintAnn":[],"constraintClass":[["Control","Plus"],"Plus"],"constraintArgs":[{"annotation":[],"tag":"TypeVar","contents":"f"}],"constraintData":null}]},"sourceSpan":{"start":[25,1],"name":"../../../support/bower_components/purescript-control/src/Control/Alternative.purs","end":[25,47]}}]} \ No newline at end of file
diff --git a/tests/purs/publish/basic-example/output/Control.Alternative/externs.json b/tests/purs/publish/basic-example/output/Control.Alternative/externs.json
deleted file mode 100644
index 766c97f..0000000
--- a/tests/purs/publish/basic-example/output/Control.Alternative/externs.json
+++ /dev/null
@@ -1 +0,0 @@
-{"efVersion":"0.12.5","efModuleName":["Control","Alternative"],"efExports":[{"ReExportRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-control/src/Control/Alternative.purs","end":[27,47]},{"exportSourceImportedFrom":["Control","Alt"],"exportSourceDefinedIn":["Control","Alt"]},{"TypeClassRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-control/src/Control/Alternative.purs","end":[27,47]},"Alt"]}]},{"ReExportRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-control/src/Control/Alternative.purs","end":[27,47]},{"exportSourceImportedFrom":["Control","Applicative"],"exportSourceDefinedIn":["Control","Applicative"]},{"TypeClassRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-control/src/Control/Alternative.purs","end":[27,47]},"Applicative"]}]},{"ReExportRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-control/src/Control/Alternative.purs","end":[27,47]},{"exportSourceImportedFrom":["Control","Apply"],"exportSourceDefinedIn":["Control","Apply"]},{"TypeClassRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-control/src/Control/Alternative.purs","end":[27,47]},"Apply"]}]},{"ReExportRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-control/src/Control/Alternative.purs","end":[27,47]},{"exportSourceImportedFrom":["Data","Functor"],"exportSourceDefinedIn":["Data","Functor"]},{"TypeClassRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-control/src/Control/Alternative.purs","end":[27,47]},"Functor"]}]},{"ReExportRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-control/src/Control/Alternative.purs","end":[27,47]},{"exportSourceImportedFrom":["Control","Plus"],"exportSourceDefinedIn":["Control","Plus"]},{"TypeClassRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-control/src/Control/Alternative.purs","end":[27,47]},"Plus"]}]},{"ReExportRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-control/src/Control/Alternative.purs","end":[27,47]},{"exportSourceImportedFrom":["Control","Alt"],"exportSourceDefinedIn":["Control","Alt"]},{"ValueRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-control/src/Control/Alternative.purs","end":[27,47]},{"Ident":"alt"}]}]},{"ReExportRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-control/src/Control/Alternative.purs","end":[27,47]},{"exportSourceImportedFrom":["Control","Apply"],"exportSourceDefinedIn":["Control","Apply"]},{"ValueRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-control/src/Control/Alternative.purs","end":[27,47]},{"Ident":"apply"}]}]},{"ReExportRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-control/src/Control/Alternative.purs","end":[27,47]},{"exportSourceImportedFrom":["Control","Plus"],"exportSourceDefinedIn":["Control","Plus"]},{"ValueRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-control/src/Control/Alternative.purs","end":[27,47]},{"Ident":"empty"}]}]},{"ReExportRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-control/src/Control/Alternative.purs","end":[27,47]},{"exportSourceImportedFrom":["Control","Applicative"],"exportSourceDefinedIn":["Control","Applicative"]},{"ValueRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-control/src/Control/Alternative.purs","end":[27,47]},{"Ident":"liftA1"}]}]},{"ReExportRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-control/src/Control/Alternative.purs","end":[27,47]},{"exportSourceImportedFrom":["Data","Functor"],"exportSourceDefinedIn":["Data","Functor"]},{"ValueRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-control/src/Control/Alternative.purs","end":[27,47]},{"Ident":"map"}]}]},{"ReExportRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-control/src/Control/Alternative.purs","end":[27,47]},{"exportSourceImportedFrom":["Control","Applicative"],"exportSourceDefinedIn":["Control","Applicative"]},{"ValueRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-control/src/Control/Alternative.purs","end":[27,47]},{"Ident":"pure"}]}]},{"ReExportRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-control/src/Control/Alternative.purs","end":[27,47]},{"exportSourceImportedFrom":["Control","Applicative"],"exportSourceDefinedIn":["Control","Applicative"]},{"ValueRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-control/src/Control/Alternative.purs","end":[27,47]},{"Ident":"unless"}]}]},{"ReExportRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-control/src/Control/Alternative.purs","end":[27,47]},{"exportSourceImportedFrom":["Data","Functor"],"exportSourceDefinedIn":["Data","Functor"]},{"ValueRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-control/src/Control/Alternative.purs","end":[27,47]},{"Ident":"void"}]}]},{"ReExportRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-control/src/Control/Alternative.purs","end":[27,47]},{"exportSourceImportedFrom":["Control","Applicative"],"exportSourceDefinedIn":["Control","Applicative"]},{"ValueRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-control/src/Control/Alternative.purs","end":[27,47]},{"Ident":"when"}]}]},{"ReExportRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-control/src/Control/Alternative.purs","end":[27,47]},{"exportSourceImportedFrom":["Data","Functor"],"exportSourceDefinedIn":["Data","Functor"]},{"ValueOpRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-control/src/Control/Alternative.purs","end":[27,47]},"$>"]}]},{"ReExportRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-control/src/Control/Alternative.purs","end":[27,47]},{"exportSourceImportedFrom":["Control","Apply"],"exportSourceDefinedIn":["Control","Apply"]},{"ValueOpRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-control/src/Control/Alternative.purs","end":[27,47]},"*>"]}]},{"ReExportRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-control/src/Control/Alternative.purs","end":[27,47]},{"exportSourceImportedFrom":["Data","Functor"],"exportSourceDefinedIn":["Data","Functor"]},{"ValueOpRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-control/src/Control/Alternative.purs","end":[27,47]},"<#>"]}]},{"ReExportRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-control/src/Control/Alternative.purs","end":[27,47]},{"exportSourceImportedFrom":["Data","Functor"],"exportSourceDefinedIn":["Data","Functor"]},{"ValueOpRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-control/src/Control/Alternative.purs","end":[27,47]},"<$"]}]},{"ReExportRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-control/src/Control/Alternative.purs","end":[27,47]},{"exportSourceImportedFrom":["Data","Functor"],"exportSourceDefinedIn":["Data","Functor"]},{"ValueOpRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-control/src/Control/Alternative.purs","end":[27,47]},"<$>"]}]},{"ReExportRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-control/src/Control/Alternative.purs","end":[27,47]},{"exportSourceImportedFrom":["Control","Apply"],"exportSourceDefinedIn":["Control","Apply"]},{"ValueOpRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-control/src/Control/Alternative.purs","end":[27,47]},"<*"]}]},{"ReExportRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-control/src/Control/Alternative.purs","end":[27,47]},{"exportSourceImportedFrom":["Control","Apply"],"exportSourceDefinedIn":["Control","Apply"]},{"ValueOpRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-control/src/Control/Alternative.purs","end":[27,47]},"<*>"]}]},{"ReExportRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-control/src/Control/Alternative.purs","end":[27,47]},{"exportSourceImportedFrom":["Control","Alt"],"exportSourceDefinedIn":["Control","Alt"]},{"ValueOpRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-control/src/Control/Alternative.purs","end":[27,47]},"<|>"]}]},{"TypeClassRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-control/src/Control/Alternative.purs","end":[27,47]},"Alternative"]},{"ModuleRef":[{"start":[3,5],"name":"../../../support/bower_components/purescript-control/src/Control/Alternative.purs","end":[3,23]},["Control","Alt"]]},{"ModuleRef":[{"start":[4,5],"name":"../../../support/bower_components/purescript-control/src/Control/Alternative.purs","end":[4,31]},["Control","Applicative"]]},{"ModuleRef":[{"start":[5,5],"name":"../../../support/bower_components/purescript-control/src/Control/Alternative.purs","end":[5,25]},["Control","Apply"]]},{"ModuleRef":[{"start":[6,5],"name":"../../../support/bower_components/purescript-control/src/Control/Alternative.purs","end":[6,24]},["Control","Plus"]]},{"ModuleRef":[{"start":[7,5],"name":"../../../support/bower_components/purescript-control/src/Control/Alternative.purs","end":[7,24]},["Data","Functor"]]},{"TypeInstanceRef":[{"start":[0,0],"name":"<generated>","end":[0,0]},{"Ident":"alternativeArray"}]}],"efImports":[{"eiModule":["Prim"],"eiImportType":{"Implicit":[]},"eiImportedAs":["Prim"]},{"eiModule":["Prim"],"eiImportType":{"Implicit":[]},"eiImportedAs":null},{"eiModule":["Control","Alt"],"eiImportType":{"Explicit":[{"TypeClassRef":[{"start":[10,21],"name":"../../../support/bower_components/purescript-control/src/Control/Alternative.purs","end":[10,30]},"Alt"]},{"ValueRef":[{"start":[10,32],"name":"../../../support/bower_components/purescript-control/src/Control/Alternative.purs","end":[10,35]},{"Ident":"alt"}]},{"ValueOpRef":[{"start":[10,37],"name":"../../../support/bower_components/purescript-control/src/Control/Alternative.purs","end":[10,42]},"<|>"]}]},"eiImportedAs":null},{"eiModule":["Control","Applicative"],"eiImportType":{"Explicit":[{"TypeClassRef":[{"start":[11,29],"name":"../../../support/bower_components/purescript-control/src/Control/Alternative.purs","end":[11,46]},"Applicative"]},{"ValueRef":[{"start":[11,48],"name":"../../../support/bower_components/purescript-control/src/Control/Alternative.purs","end":[11,52]},{"Ident":"pure"}]},{"ValueRef":[{"start":[11,54],"name":"../../../support/bower_components/purescript-control/src/Control/Alternative.purs","end":[11,60]},{"Ident":"liftA1"}]},{"ValueRef":[{"start":[11,62],"name":"../../../support/bower_components/purescript-control/src/Control/Alternative.purs","end":[11,68]},{"Ident":"unless"}]},{"ValueRef":[{"start":[11,70],"name":"../../../support/bower_components/purescript-control/src/Control/Alternative.purs","end":[11,74]},{"Ident":"when"}]}]},"eiImportedAs":null},{"eiModule":["Control","Apply"],"eiImportType":{"Explicit":[{"TypeClassRef":[{"start":[12,23],"name":"../../../support/bower_components/purescript-control/src/Control/Alternative.purs","end":[12,34]},"Apply"]},{"ValueRef":[{"start":[12,36],"name":"../../../support/bower_components/purescript-control/src/Control/Alternative.purs","end":[12,41]},{"Ident":"apply"}]},{"ValueOpRef":[{"start":[12,43],"name":"../../../support/bower_components/purescript-control/src/Control/Alternative.purs","end":[12,47]},"*>"]},{"ValueOpRef":[{"start":[12,49],"name":"../../../support/bower_components/purescript-control/src/Control/Alternative.purs","end":[12,53]},"<*"]},{"ValueOpRef":[{"start":[12,55],"name":"../../../support/bower_components/purescript-control/src/Control/Alternative.purs","end":[12,60]},"<*>"]}]},"eiImportedAs":null},{"eiModule":["Control","Plus"],"eiImportType":{"Explicit":[{"TypeClassRef":[{"start":[13,22],"name":"../../../support/bower_components/purescript-control/src/Control/Alternative.purs","end":[13,32]},"Plus"]},{"ValueRef":[{"start":[13,34],"name":"../../../support/bower_components/purescript-control/src/Control/Alternative.purs","end":[13,39]},{"Ident":"empty"}]}]},"eiImportedAs":null},{"eiModule":["Data","Functor"],"eiImportType":{"Explicit":[{"TypeClassRef":[{"start":[15,22],"name":"../../../support/bower_components/purescript-control/src/Control/Alternative.purs","end":[15,35]},"Functor"]},{"ValueRef":[{"start":[15,37],"name":"../../../support/bower_components/purescript-control/src/Control/Alternative.purs","end":[15,40]},{"Ident":"map"}]},{"ValueRef":[{"start":[15,42],"name":"../../../support/bower_components/purescript-control/src/Control/Alternative.purs","end":[15,46]},{"Ident":"void"}]},{"ValueOpRef":[{"start":[15,48],"name":"../../../support/bower_components/purescript-control/src/Control/Alternative.purs","end":[15,52]},"$>"]},{"ValueOpRef":[{"start":[15,54],"name":"../../../support/bower_components/purescript-control/src/Control/Alternative.purs","end":[15,59]},"<#>"]},{"ValueOpRef":[{"start":[15,61],"name":"../../../support/bower_components/purescript-control/src/Control/Alternative.purs","end":[15,65]},"<$"]},{"ValueOpRef":[{"start":[15,67],"name":"../../../support/bower_components/purescript-control/src/Control/Alternative.purs","end":[15,72]},"<$>"]}]},"eiImportedAs":null}],"efFixities":[],"efTypeFixities":[],"efDeclarations":[{"EDType":{"edTypeName":"Alternative","edTypeKind":{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"FunKind","contents":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"FunKind","contents":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"NamedKind","contents":[["Prim"],"Type"]},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"NamedKind","contents":[["Prim"],"Type"]}]},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"NamedKind","contents":[["Prim"],"Type"]}]},"edTypeDeclarationKind":"TypeSynonym"}},{"EDTypeSynonym":{"edTypeSynonymName":"Alternative","edTypeSynonymArguments":[["f",null]],"edTypeSynonymType":{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Record"]},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"RCons","contents":["Applicative0",{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Record"]},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"REmpty"}]}]},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeConstructor","contents":[["Control","Applicative"],"Applicative"]},{"annotation":[{"start":[25,20],"name":"../../../support/bower_components/purescript-control/src/Control/Alternative.purs","end":[25,21]},[]],"tag":"TypeVar","contents":"f"}]}]},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"RCons","contents":["Plus1",{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Record"]},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"REmpty"}]}]},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeConstructor","contents":[["Control","Plus"],"Plus"]},{"annotation":[{"start":[25,28],"name":"../../../support/bower_components/purescript-control/src/Control/Alternative.purs","end":[25,29]},[]],"tag":"TypeVar","contents":"f"}]}]},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"REmpty"}]}]}]}}},{"EDClass":{"edClassName":"Alternative","edClassTypeArguments":[["f",null]],"edClassMembers":[],"edClassConstraints":[{"constraintAnn":[{"start":[25,8],"name":"../../../support/bower_components/purescript-control/src/Control/Alternative.purs","end":[25,21]},[]],"constraintClass":[["Control","Applicative"],"Applicative"],"constraintArgs":[{"annotation":[{"start":[25,20],"name":"../../../support/bower_components/purescript-control/src/Control/Alternative.purs","end":[25,21]},[]],"tag":"TypeVar","contents":"f"}],"constraintData":null},{"constraintAnn":[{"start":[25,23],"name":"../../../support/bower_components/purescript-control/src/Control/Alternative.purs","end":[25,29]},[]],"constraintClass":[["Control","Plus"],"Plus"],"constraintArgs":[{"annotation":[{"start":[25,28],"name":"../../../support/bower_components/purescript-control/src/Control/Alternative.purs","end":[25,29]},[]],"tag":"TypeVar","contents":"f"}],"constraintData":null}],"edFunctionalDependencies":[]}},{"EDInstance":{"edInstanceClassName":[["Control","Alternative"],"Alternative"],"edInstanceName":{"Ident":"alternativeArray"},"edInstanceTypes":[{"annotation":[{"start":[27,42],"name":"../../../support/bower_components/purescript-control/src/Control/Alternative.purs","end":[27,47]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Array"]}],"edInstanceConstraints":[],"edInstanceChain":[[["Control","Alternative"],{"Ident":"alternativeArray"}]],"edInstanceChainIndex":0}}],"efSourceSpan":{"start":[1,1],"name":"../../../support/bower_components/purescript-control/src/Control/Alternative.purs","end":[27,47]}} \ No newline at end of file
diff --git a/tests/purs/publish/basic-example/output/Control.Applicative/externs.json b/tests/purs/publish/basic-example/output/Control.Applicative/externs.json
index 1db2ad7..1d8a5f6 100644
--- a/tests/purs/publish/basic-example/output/Control.Applicative/externs.json
+++ b/tests/purs/publish/basic-example/output/Control.Applicative/externs.json
@@ -1 +1 @@
-{"efVersion":"0.12.5","efModuleName":["Control","Applicative"],"efExports":[{"ReExportRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[64,26]},{"exportSourceImportedFrom":["Control","Apply"],"exportSourceDefinedIn":["Control","Apply"]},{"TypeClassRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[64,26]},"Apply"]}]},{"ReExportRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[64,26]},{"exportSourceImportedFrom":["Data","Functor"],"exportSourceDefinedIn":["Data","Functor"]},{"TypeClassRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[64,26]},"Functor"]}]},{"ReExportRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[64,26]},{"exportSourceImportedFrom":["Control","Apply"],"exportSourceDefinedIn":["Control","Apply"]},{"ValueRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[64,26]},{"Ident":"apply"}]}]},{"ReExportRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[64,26]},{"exportSourceImportedFrom":["Data","Functor"],"exportSourceDefinedIn":["Data","Functor"]},{"ValueRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[64,26]},{"Ident":"map"}]}]},{"ReExportRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[64,26]},{"exportSourceImportedFrom":["Data","Functor"],"exportSourceDefinedIn":["Data","Functor"]},{"ValueRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[64,26]},{"Ident":"void"}]}]},{"ReExportRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[64,26]},{"exportSourceImportedFrom":["Data","Functor"],"exportSourceDefinedIn":["Data","Functor"]},{"ValueOpRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[64,26]},"$>"]}]},{"ReExportRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[64,26]},{"exportSourceImportedFrom":["Control","Apply"],"exportSourceDefinedIn":["Control","Apply"]},{"ValueOpRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[64,26]},"*>"]}]},{"ReExportRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[64,26]},{"exportSourceImportedFrom":["Data","Functor"],"exportSourceDefinedIn":["Data","Functor"]},{"ValueOpRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[64,26]},"<#>"]}]},{"ReExportRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[64,26]},{"exportSourceImportedFrom":["Data","Functor"],"exportSourceDefinedIn":["Data","Functor"]},{"ValueOpRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[64,26]},"<$"]}]},{"ReExportRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[64,26]},{"exportSourceImportedFrom":["Data","Functor"],"exportSourceDefinedIn":["Data","Functor"]},{"ValueOpRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[64,26]},"<$>"]}]},{"ReExportRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[64,26]},{"exportSourceImportedFrom":["Control","Apply"],"exportSourceDefinedIn":["Control","Apply"]},{"ValueOpRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[64,26]},"<*"]}]},{"ReExportRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[64,26]},{"exportSourceImportedFrom":["Control","Apply"],"exportSourceDefinedIn":["Control","Apply"]},{"ValueOpRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[64,26]},"<*>"]}]},{"TypeClassRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[64,26]},"Applicative"]},{"ValueRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[64,26]},{"Ident":"pure"}]},{"ValueRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[64,26]},{"Ident":"liftA1"}]},{"ValueRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[64,26]},{"Ident":"unless"}]},{"ValueRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[64,26]},{"Ident":"when"}]},{"ModuleRef":[{"start":[5,5],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[5,25]},["Control","Apply"]]},{"ModuleRef":[{"start":[6,5],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[6,24]},["Data","Functor"]]},{"TypeInstanceRef":[{"start":[0,0],"name":"<generated>","end":[0,0]},{"Ident":"applicativeFn"}]},{"TypeInstanceRef":[{"start":[0,0],"name":"<generated>","end":[0,0]},{"Ident":"applicativeArray"}]}],"efImports":[{"eiModule":["Prim"],"eiImportType":{"Implicit":[]},"eiImportedAs":["Prim"]},{"eiModule":["Prim"],"eiImportType":{"Implicit":[]},"eiImportedAs":null},{"eiModule":["Control","Apply"],"eiImportType":{"Explicit":[{"TypeClassRef":[{"start":[9,23],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[9,34]},"Apply"]},{"ValueRef":[{"start":[9,36],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[9,41]},{"Ident":"apply"}]},{"ValueOpRef":[{"start":[9,43],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[9,47]},"*>"]},{"ValueOpRef":[{"start":[9,49],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[9,53]},"<*"]},{"ValueOpRef":[{"start":[9,55],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[9,60]},"<*>"]}]},"eiImportedAs":null},{"eiModule":["Data","Functor"],"eiImportType":{"Explicit":[{"TypeClassRef":[{"start":[11,22],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[11,35]},"Functor"]},{"ValueRef":[{"start":[11,37],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[11,40]},{"Ident":"map"}]},{"ValueRef":[{"start":[11,42],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[11,46]},{"Ident":"void"}]},{"ValueOpRef":[{"start":[11,48],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[11,52]},"$>"]},{"ValueOpRef":[{"start":[11,54],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[11,59]},"<#>"]},{"ValueOpRef":[{"start":[11,61],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[11,65]},"<$"]},{"ValueOpRef":[{"start":[11,67],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[11,72]},"<$>"]}]},"eiImportedAs":null},{"eiModule":["Data","Unit"],"eiImportType":{"Explicit":[{"TypeRef":[{"start":[12,19],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[12,23]},"Unit",[]]},{"ValueRef":[{"start":[12,25],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[12,29]},{"Ident":"unit"}]}]},"eiImportedAs":null}],"efFixities":[],"efTypeFixities":[],"efDeclarations":[{"EDType":{"edTypeName":"Applicative","edTypeKind":{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"FunKind","contents":[{"annotation":[{"start":[33,26],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[33,29]},[]],"tag":"FunKind","contents":[{"annotation":[{"start":[33,23],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[33,25]},[]],"tag":"NamedKind","contents":[["Prim"],"Type"]},{"annotation":[{"start":[33,23],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[33,25]},[]],"tag":"NamedKind","contents":[["Prim"],"Type"]}]},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"NamedKind","contents":[["Prim"],"Type"]}]},"edTypeDeclarationKind":"TypeSynonym"}},{"EDTypeSynonym":{"edTypeSynonymName":"Applicative","edTypeSynonymArguments":[["f",null]],"edTypeSynonymType":{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Record"]},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"RCons","contents":["pure",{"annotation":[{"start":[33,11],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[33,29]},[]],"tag":"ForAll","contents":["a",{"annotation":[{"start":[33,21],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[33,29]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[33,21],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[33,29]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[33,23],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[33,25]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[33,21],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[33,22]},[]],"tag":"TypeVar","contents":"a"}]},{"annotation":[{"start":[33,26],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[33,29]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[33,26],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[33,27]},[]],"tag":"TypeVar","contents":"f"},{"annotation":[{"start":[33,28],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[33,29]},[]],"tag":"TypeVar","contents":"a"}]}]},null]},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"RCons","contents":["Apply0",{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Record"]},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"REmpty"}]}]},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeConstructor","contents":[["Control","Apply"],"Apply"]},{"annotation":[{"start":[32,13],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[32,14]},[]],"tag":"TypeVar","contents":"f"}]}]},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"REmpty"}]}]}]}}},{"EDClass":{"edClassName":"Applicative","edClassTypeArguments":[["f",null]],"edClassMembers":[[{"Ident":"pure"},{"annotation":[{"start":[33,11],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[33,29]},[]],"tag":"ForAll","contents":["a",{"annotation":[{"start":[33,21],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[33,29]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[33,21],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[33,29]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[33,23],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[33,25]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[33,21],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[33,22]},[]],"tag":"TypeVar","contents":"a"}]},{"annotation":[{"start":[33,26],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[33,29]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[33,26],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[33,27]},[]],"tag":"TypeVar","contents":"f"},{"annotation":[{"start":[33,28],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[33,29]},[]],"tag":"TypeVar","contents":"a"}]}]},null]}]],"edClassConstraints":[{"constraintAnn":[{"start":[32,7],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[32,14]},[]],"constraintClass":[["Control","Apply"],"Apply"],"constraintArgs":[{"annotation":[{"start":[32,13],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[32,14]},[]],"tag":"TypeVar","contents":"f"}],"constraintData":null}],"edFunctionalDependencies":[]}},{"EDValue":{"edValueName":{"Ident":"pure"},"edValueType":{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"ForAll","contents":["f",{"annotation":[{"start":[33,11],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[33,29]},[]],"tag":"ForAll","contents":["a",{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"ConstrainedType","contents":[{"constraintAnn":[{"start":[0,0],"name":"","end":[0,0]},[]],"constraintClass":[["Control","Applicative"],"Applicative"],"constraintArgs":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeVar","contents":"f"}],"constraintData":null},{"annotation":[{"start":[33,21],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[33,29]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[33,21],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[33,29]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[33,23],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[33,25]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[33,21],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[33,22]},[]],"tag":"TypeVar","contents":"a"}]},{"annotation":[{"start":[33,26],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[33,29]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[33,26],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[33,27]},[]],"tag":"TypeVar","contents":"f"},{"annotation":[{"start":[33,28],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[33,29]},[]],"tag":"TypeVar","contents":"a"}]}]}]},0]},1]}}},{"EDValue":{"edValueName":{"Ident":"liftA1"},"edValueType":{"annotation":[{"start":[53,11],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[53,64]},[]],"tag":"ForAll","contents":["b",{"annotation":[{"start":[53,18],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[53,64]},[]],"tag":"ForAll","contents":["a",{"annotation":[{"start":[53,18],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[53,64]},[]],"tag":"ForAll","contents":["f",{"annotation":[{"start":[53,25],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[53,64]},[]],"tag":"ConstrainedType","contents":[{"constraintAnn":[{"start":[53,25],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[53,38]},[]],"constraintClass":[["Control","Applicative"],"Applicative"],"constraintArgs":[{"annotation":[{"start":[53,37],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[53,38]},[]],"tag":"TypeVar","contents":"f"}],"constraintData":null},{"annotation":[{"start":[53,42],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[53,64]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[53,42],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[53,64]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[53,51],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[53,53]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[53,43],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[53,49]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[53,43],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[53,49]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[53,45],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[53,47]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[53,43],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[53,44]},[]],"tag":"TypeVar","contents":"a"}]},{"annotation":[{"start":[53,48],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[53,49]},[]],"tag":"TypeVar","contents":"b"}]}]},{"annotation":[{"start":[53,54],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[53,64]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[53,54],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[53,64]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[53,58],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[53,60]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[53,54],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[53,57]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[53,54],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[53,55]},[]],"tag":"TypeVar","contents":"f"},{"annotation":[{"start":[53,56],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[53,57]},[]],"tag":"TypeVar","contents":"a"}]}]},{"annotation":[{"start":[53,61],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[53,64]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[53,61],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[53,62]},[]],"tag":"TypeVar","contents":"f"},{"annotation":[{"start":[53,63],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[53,64]},[]],"tag":"TypeVar","contents":"b"}]}]}]}]},6]},7]},8]}}},{"EDValue":{"edValueName":{"Ident":"unless"},"edValueType":{"annotation":[{"start":[62,11],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[62,65]},[]],"tag":"ForAll","contents":["m",{"annotation":[{"start":[62,21],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[62,65]},[]],"tag":"ConstrainedType","contents":[{"constraintAnn":[{"start":[62,21],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[62,34]},[]],"constraintClass":[["Control","Applicative"],"Applicative"],"constraintArgs":[{"annotation":[{"start":[62,33],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[62,34]},[]],"tag":"TypeVar","contents":"m"}],"constraintData":null},{"annotation":[{"start":[62,38],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[62,65]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[62,38],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[62,65]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[62,46],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[62,48]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[62,38],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[62,45]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Boolean"]}]},{"annotation":[{"start":[62,49],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[62,65]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[62,49],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[62,65]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[62,56],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[62,58]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[62,49],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[62,55]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[62,49],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[62,50]},[]],"tag":"TypeVar","contents":"m"},{"annotation":[{"start":[62,51],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[62,55]},[]],"tag":"TypeConstructor","contents":[["Data","Unit"],"Unit"]}]}]},{"annotation":[{"start":[62,59],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[62,65]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[62,59],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[62,60]},[]],"tag":"TypeVar","contents":"m"},{"annotation":[{"start":[62,61],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[62,65]},[]],"tag":"TypeConstructor","contents":[["Data","Unit"],"Unit"]}]}]}]}]},2]}}},{"EDValue":{"edValueName":{"Ident":"when"},"edValueType":{"annotation":[{"start":[57,9],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[57,63]},[]],"tag":"ForAll","contents":["m",{"annotation":[{"start":[57,19],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[57,63]},[]],"tag":"ConstrainedType","contents":[{"constraintAnn":[{"start":[57,19],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[57,32]},[]],"constraintClass":[["Control","Applicative"],"Applicative"],"constraintArgs":[{"annotation":[{"start":[57,31],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[57,32]},[]],"tag":"TypeVar","contents":"m"}],"constraintData":null},{"annotation":[{"start":[57,36],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[57,63]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[57,36],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[57,63]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[57,44],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[57,46]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[57,36],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[57,43]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Boolean"]}]},{"annotation":[{"start":[57,47],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[57,63]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[57,47],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[57,63]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[57,54],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[57,56]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[57,47],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[57,53]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[57,47],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[57,48]},[]],"tag":"TypeVar","contents":"m"},{"annotation":[{"start":[57,49],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[57,53]},[]],"tag":"TypeConstructor","contents":[["Data","Unit"],"Unit"]}]}]},{"annotation":[{"start":[57,57],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[57,63]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[57,57],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[57,58]},[]],"tag":"TypeVar","contents":"m"},{"annotation":[{"start":[57,59],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[57,63]},[]],"tag":"TypeConstructor","contents":[["Data","Unit"],"Unit"]}]}]}]}]},4]}}},{"EDInstance":{"edInstanceClassName":[["Control","Applicative"],"Applicative"],"edInstanceName":{"Ident":"applicativeFn"},"edInstanceTypes":[{"annotation":[{"start":[35,40],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[35,46]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[35,40],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[35,44]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[35,45],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[35,46]},[]],"tag":"TypeVar","contents":"r"}]}],"edInstanceConstraints":[],"edInstanceChain":[[["Control","Applicative"],{"Ident":"applicativeFn"}]],"edInstanceChainIndex":0}},{"EDInstance":{"edInstanceClassName":[["Control","Applicative"],"Applicative"],"edInstanceName":{"Ident":"applicativeArray"},"edInstanceTypes":[{"annotation":[{"start":[38,42],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[38,47]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Array"]}],"edInstanceConstraints":[],"edInstanceChain":[[["Control","Applicative"],{"Ident":"applicativeArray"}]],"edInstanceChainIndex":0}}],"efSourceSpan":{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[64,26]}} \ No newline at end of file
+{"efVersion":"0.13.2","efModuleName":["Control","Applicative"],"efExports":[{"ReExportRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[64,26]},{"exportSourceImportedFrom":["Control","Apply"],"exportSourceDefinedIn":["Control","Apply"]},{"TypeClassRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[64,26]},"Apply"]}]},{"ReExportRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[64,26]},{"exportSourceImportedFrom":["Data","Functor"],"exportSourceDefinedIn":["Data","Functor"]},{"TypeClassRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[64,26]},"Functor"]}]},{"ReExportRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[64,26]},{"exportSourceImportedFrom":["Control","Apply"],"exportSourceDefinedIn":["Control","Apply"]},{"ValueRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[64,26]},{"Ident":"apply"}]}]},{"ReExportRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[64,26]},{"exportSourceImportedFrom":["Data","Functor"],"exportSourceDefinedIn":["Data","Functor"]},{"ValueRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[64,26]},{"Ident":"map"}]}]},{"ReExportRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[64,26]},{"exportSourceImportedFrom":["Data","Functor"],"exportSourceDefinedIn":["Data","Functor"]},{"ValueRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[64,26]},{"Ident":"void"}]}]},{"ReExportRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[64,26]},{"exportSourceImportedFrom":["Data","Functor"],"exportSourceDefinedIn":["Data","Functor"]},{"ValueOpRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[64,26]},"$>"]}]},{"ReExportRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[64,26]},{"exportSourceImportedFrom":["Control","Apply"],"exportSourceDefinedIn":["Control","Apply"]},{"ValueOpRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[64,26]},"*>"]}]},{"ReExportRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[64,26]},{"exportSourceImportedFrom":["Data","Functor"],"exportSourceDefinedIn":["Data","Functor"]},{"ValueOpRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[64,26]},"<#>"]}]},{"ReExportRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[64,26]},{"exportSourceImportedFrom":["Data","Functor"],"exportSourceDefinedIn":["Data","Functor"]},{"ValueOpRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[64,26]},"<$"]}]},{"ReExportRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[64,26]},{"exportSourceImportedFrom":["Data","Functor"],"exportSourceDefinedIn":["Data","Functor"]},{"ValueOpRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[64,26]},"<$>"]}]},{"ReExportRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[64,26]},{"exportSourceImportedFrom":["Control","Apply"],"exportSourceDefinedIn":["Control","Apply"]},{"ValueOpRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[64,26]},"<*"]}]},{"ReExportRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[64,26]},{"exportSourceImportedFrom":["Control","Apply"],"exportSourceDefinedIn":["Control","Apply"]},{"ValueOpRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[64,26]},"<*>"]}]},{"TypeClassRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[64,26]},"Applicative"]},{"ValueRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[64,26]},{"Ident":"pure"}]},{"ValueRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[64,26]},{"Ident":"liftA1"}]},{"ValueRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[64,26]},{"Ident":"unless"}]},{"ValueRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[64,26]},{"Ident":"when"}]},{"ModuleRef":[{"start":[5,5],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[5,25]},["Control","Apply"]]},{"ModuleRef":[{"start":[6,5],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[6,24]},["Data","Functor"]]},{"TypeInstanceRef":[{"start":[0,0],"name":"<generated>","end":[0,0]},{"Ident":"applicativeFn"}]},{"TypeInstanceRef":[{"start":[0,0],"name":"<generated>","end":[0,0]},{"Ident":"applicativeArray"}]}],"efImports":[{"eiModule":["Prim"],"eiImportType":{"Implicit":[]},"eiImportedAs":["Prim"]},{"eiModule":["Prim"],"eiImportType":{"Implicit":[]},"eiImportedAs":null},{"eiModule":["Control","Apply"],"eiImportType":{"Explicit":[{"TypeClassRef":[{"start":[9,23],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[9,34]},"Apply"]},{"ValueRef":[{"start":[9,36],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[9,41]},{"Ident":"apply"}]},{"ValueOpRef":[{"start":[9,43],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[9,47]},"*>"]},{"ValueOpRef":[{"start":[9,49],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[9,53]},"<*"]},{"ValueOpRef":[{"start":[9,55],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[9,60]},"<*>"]}]},"eiImportedAs":null},{"eiModule":["Data","Functor"],"eiImportType":{"Explicit":[{"TypeClassRef":[{"start":[11,22],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[11,35]},"Functor"]},{"ValueRef":[{"start":[11,37],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[11,40]},{"Ident":"map"}]},{"ValueRef":[{"start":[11,42],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[11,46]},{"Ident":"void"}]},{"ValueOpRef":[{"start":[11,48],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[11,52]},"$>"]},{"ValueOpRef":[{"start":[11,54],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[11,59]},"<#>"]},{"ValueOpRef":[{"start":[11,61],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[11,65]},"<$"]},{"ValueOpRef":[{"start":[11,67],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[11,72]},"<$>"]}]},"eiImportedAs":null},{"eiModule":["Data","Unit"],"eiImportType":{"Explicit":[{"TypeRef":[{"start":[12,19],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[12,23]},"Unit",[]]},{"ValueRef":[{"start":[12,25],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[12,29]},{"Ident":"unit"}]}]},"eiImportedAs":null}],"efFixities":[],"efTypeFixities":[],"efDeclarations":[{"EDType":{"edTypeName":"Applicative","edTypeKind":{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"FunKind","contents":[{"annotation":[{"start":[33,26],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[33,29]},[]],"tag":"FunKind","contents":[{"annotation":[{"start":[33,23],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[33,25]},[]],"tag":"NamedKind","contents":[["Prim"],"Type"]},{"annotation":[{"start":[33,23],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[33,25]},[]],"tag":"NamedKind","contents":[["Prim"],"Type"]}]},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"NamedKind","contents":[["Prim"],"Type"]}]},"edTypeDeclarationKind":"TypeSynonym"}},{"EDTypeSynonym":{"edTypeSynonymName":"Applicative","edTypeSynonymArguments":[["f",null]],"edTypeSynonymType":{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Record"]},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"RCons","contents":["pure",{"annotation":[{"start":[33,11],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[33,29]},[]],"tag":"ForAll","contents":["a",{"annotation":[{"start":[33,21],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[33,29]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[33,21],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[33,29]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[33,23],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[33,25]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[33,21],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[33,22]},[]],"tag":"TypeVar","contents":"a"}]},{"annotation":[{"start":[33,26],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[33,29]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[33,26],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[33,27]},[]],"tag":"TypeVar","contents":"f"},{"annotation":[{"start":[33,28],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[33,29]},[]],"tag":"TypeVar","contents":"a"}]}]},null]},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"RCons","contents":["Apply0",{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Record"]},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"REmpty"}]}]},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeConstructor","contents":[["Control","Apply"],"Apply"]},{"annotation":[{"start":[32,13],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[32,14]},[]],"tag":"TypeVar","contents":"f"}]}]},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"REmpty"}]}]}]}}},{"EDClass":{"edClassName":"Applicative","edClassTypeArguments":[["f",null]],"edClassMembers":[[{"Ident":"pure"},{"annotation":[{"start":[33,11],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[33,29]},[]],"tag":"ForAll","contents":["a",{"annotation":[{"start":[33,21],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[33,29]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[33,21],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[33,29]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[33,23],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[33,25]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[33,21],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[33,22]},[]],"tag":"TypeVar","contents":"a"}]},{"annotation":[{"start":[33,26],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[33,29]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[33,26],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[33,27]},[]],"tag":"TypeVar","contents":"f"},{"annotation":[{"start":[33,28],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[33,29]},[]],"tag":"TypeVar","contents":"a"}]}]},null]}]],"edClassConstraints":[{"constraintAnn":[{"start":[32,7],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[32,14]},[]],"constraintClass":[["Control","Apply"],"Apply"],"constraintArgs":[{"annotation":[{"start":[32,13],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[32,14]},[]],"tag":"TypeVar","contents":"f"}],"constraintData":null}],"edFunctionalDependencies":[],"edIsEmpty":false}},{"EDValue":{"edValueName":{"Ident":"pure"},"edValueType":{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"ForAll","contents":["f",{"annotation":[{"start":[33,11],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[33,29]},[]],"tag":"ForAll","contents":["a",{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"ConstrainedType","contents":[{"constraintAnn":[{"start":[0,0],"name":"","end":[0,0]},[]],"constraintClass":[["Control","Applicative"],"Applicative"],"constraintArgs":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeVar","contents":"f"}],"constraintData":null},{"annotation":[{"start":[33,21],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[33,29]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[33,21],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[33,29]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[33,23],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[33,25]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[33,21],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[33,22]},[]],"tag":"TypeVar","contents":"a"}]},{"annotation":[{"start":[33,26],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[33,29]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[33,26],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[33,27]},[]],"tag":"TypeVar","contents":"f"},{"annotation":[{"start":[33,28],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[33,29]},[]],"tag":"TypeVar","contents":"a"}]}]}]},0]},1]}}},{"EDValue":{"edValueName":{"Ident":"liftA1"},"edValueType":{"annotation":[{"start":[53,11],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[53,64]},[]],"tag":"ForAll","contents":["b",{"annotation":[{"start":[53,18],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[53,64]},[]],"tag":"ForAll","contents":["a",{"annotation":[{"start":[53,18],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[53,64]},[]],"tag":"ForAll","contents":["f",{"annotation":[{"start":[53,25],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[53,64]},[]],"tag":"ConstrainedType","contents":[{"constraintAnn":[{"start":[53,25],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[53,38]},[]],"constraintClass":[["Control","Applicative"],"Applicative"],"constraintArgs":[{"annotation":[{"start":[53,37],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[53,38]},[]],"tag":"TypeVar","contents":"f"}],"constraintData":null},{"annotation":[{"start":[53,42],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[53,64]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[53,42],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[53,64]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[53,51],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[53,53]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[53,43],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[53,49]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[53,43],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[53,49]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[53,45],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[53,47]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[53,43],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[53,44]},[]],"tag":"TypeVar","contents":"a"}]},{"annotation":[{"start":[53,48],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[53,49]},[]],"tag":"TypeVar","contents":"b"}]}]},{"annotation":[{"start":[53,54],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[53,64]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[53,54],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[53,64]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[53,58],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[53,60]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[53,54],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[53,57]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[53,54],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[53,55]},[]],"tag":"TypeVar","contents":"f"},{"annotation":[{"start":[53,56],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[53,57]},[]],"tag":"TypeVar","contents":"a"}]}]},{"annotation":[{"start":[53,61],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[53,64]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[53,61],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[53,62]},[]],"tag":"TypeVar","contents":"f"},{"annotation":[{"start":[53,63],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[53,64]},[]],"tag":"TypeVar","contents":"b"}]}]}]}]},6]},7]},8]}}},{"EDValue":{"edValueName":{"Ident":"unless"},"edValueType":{"annotation":[{"start":[62,11],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[62,65]},[]],"tag":"ForAll","contents":["m",{"annotation":[{"start":[62,21],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[62,65]},[]],"tag":"ConstrainedType","contents":[{"constraintAnn":[{"start":[62,21],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[62,34]},[]],"constraintClass":[["Control","Applicative"],"Applicative"],"constraintArgs":[{"annotation":[{"start":[62,33],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[62,34]},[]],"tag":"TypeVar","contents":"m"}],"constraintData":null},{"annotation":[{"start":[62,38],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[62,65]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[62,38],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[62,65]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[62,46],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[62,48]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[62,38],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[62,45]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Boolean"]}]},{"annotation":[{"start":[62,49],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[62,65]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[62,49],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[62,65]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[62,56],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[62,58]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[62,49],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[62,55]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[62,49],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[62,50]},[]],"tag":"TypeVar","contents":"m"},{"annotation":[{"start":[62,51],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[62,55]},[]],"tag":"TypeConstructor","contents":[["Data","Unit"],"Unit"]}]}]},{"annotation":[{"start":[62,59],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[62,65]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[62,59],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[62,60]},[]],"tag":"TypeVar","contents":"m"},{"annotation":[{"start":[62,61],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[62,65]},[]],"tag":"TypeConstructor","contents":[["Data","Unit"],"Unit"]}]}]}]}]},2]}}},{"EDValue":{"edValueName":{"Ident":"when"},"edValueType":{"annotation":[{"start":[57,9],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[57,63]},[]],"tag":"ForAll","contents":["m",{"annotation":[{"start":[57,19],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[57,63]},[]],"tag":"ConstrainedType","contents":[{"constraintAnn":[{"start":[57,19],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[57,32]},[]],"constraintClass":[["Control","Applicative"],"Applicative"],"constraintArgs":[{"annotation":[{"start":[57,31],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[57,32]},[]],"tag":"TypeVar","contents":"m"}],"constraintData":null},{"annotation":[{"start":[57,36],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[57,63]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[57,36],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[57,63]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[57,44],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[57,46]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[57,36],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[57,43]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Boolean"]}]},{"annotation":[{"start":[57,47],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[57,63]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[57,47],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[57,63]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[57,54],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[57,56]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[57,47],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[57,53]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[57,47],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[57,48]},[]],"tag":"TypeVar","contents":"m"},{"annotation":[{"start":[57,49],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[57,53]},[]],"tag":"TypeConstructor","contents":[["Data","Unit"],"Unit"]}]}]},{"annotation":[{"start":[57,57],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[57,63]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[57,57],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[57,58]},[]],"tag":"TypeVar","contents":"m"},{"annotation":[{"start":[57,59],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[57,63]},[]],"tag":"TypeConstructor","contents":[["Data","Unit"],"Unit"]}]}]}]}]},4]}}},{"EDInstance":{"edInstanceClassName":[["Control","Applicative"],"Applicative"],"edInstanceName":{"Ident":"applicativeFn"},"edInstanceTypes":[{"annotation":[{"start":[35,40],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[35,46]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[35,40],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[35,44]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[35,45],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[35,46]},[]],"tag":"TypeVar","contents":"r"}]}],"edInstanceConstraints":[],"edInstanceChain":[[["Control","Applicative"],{"Ident":"applicativeFn"}]],"edInstanceChainIndex":0}},{"EDInstance":{"edInstanceClassName":[["Control","Applicative"],"Applicative"],"edInstanceName":{"Ident":"applicativeArray"},"edInstanceTypes":[{"annotation":[{"start":[38,42],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[38,47]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Array"]}],"edInstanceConstraints":[],"edInstanceChain":[[["Control","Applicative"],{"Ident":"applicativeArray"}]],"edInstanceChainIndex":0}}],"efSourceSpan":{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Control/Applicative.purs","end":[64,26]}} \ No newline at end of file
diff --git a/tests/purs/publish/basic-example/output/Control.Apply/externs.json b/tests/purs/publish/basic-example/output/Control.Apply/externs.json
index 03f0473..19f27a0 100644
--- a/tests/purs/publish/basic-example/output/Control.Apply/externs.json
+++ b/tests/purs/publish/basic-example/output/Control.Apply/externs.json
@@ -1 +1 @@
-{"efVersion":"0.12.5","efModuleName":["Control","Apply"],"efExports":[{"ReExportRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[78,52]},{"exportSourceImportedFrom":["Data","Functor"],"exportSourceDefinedIn":["Data","Functor"]},{"TypeClassRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[78,52]},"Functor"]}]},{"ReExportRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[78,52]},{"exportSourceImportedFrom":["Data","Functor"],"exportSourceDefinedIn":["Data","Functor"]},{"ValueRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[78,52]},{"Ident":"map"}]}]},{"ReExportRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[78,52]},{"exportSourceImportedFrom":["Data","Functor"],"exportSourceDefinedIn":["Data","Functor"]},{"ValueRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[78,52]},{"Ident":"void"}]}]},{"ReExportRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[78,52]},{"exportSourceImportedFrom":["Data","Functor"],"exportSourceDefinedIn":["Data","Functor"]},{"ValueOpRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[78,52]},"$>"]}]},{"ReExportRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[78,52]},{"exportSourceImportedFrom":["Data","Functor"],"exportSourceDefinedIn":["Data","Functor"]},{"ValueOpRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[78,52]},"<#>"]}]},{"ReExportRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[78,52]},{"exportSourceImportedFrom":["Data","Functor"],"exportSourceDefinedIn":["Data","Functor"]},{"ValueOpRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[78,52]},"<$"]}]},{"ReExportRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[78,52]},{"exportSourceImportedFrom":["Data","Functor"],"exportSourceDefinedIn":["Data","Functor"]},{"ValueOpRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[78,52]},"<$>"]}]},{"TypeClassRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[78,52]},"Apply"]},{"ValueRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[78,52]},{"Ident":"apply"}]},{"ValueOpRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[78,52]},"<*>"]},{"ValueRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[78,52]},{"Ident":"applyFirst"}]},{"ValueOpRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[78,52]},"<*"]},{"ValueRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[78,52]},{"Ident":"applySecond"}]},{"ValueOpRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[78,52]},"*>"]},{"ValueRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[78,52]},{"Ident":"lift2"}]},{"ValueRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[78,52]},{"Ident":"lift3"}]},{"ValueRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[78,52]},{"Ident":"lift4"}]},{"ValueRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[78,52]},{"Ident":"lift5"}]},{"ModuleRef":[{"start":[6,5],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[6,24]},["Data","Functor"]]},{"TypeInstanceRef":[{"start":[0,0],"name":"<generated>","end":[0,0]},{"Ident":"applyFn"}]},{"TypeInstanceRef":[{"start":[0,0],"name":"<generated>","end":[0,0]},{"Ident":"applyArray"}]}],"efImports":[{"eiModule":["Prim"],"eiImportType":{"Implicit":[]},"eiImportedAs":["Prim"]},{"eiModule":["Prim"],"eiImportType":{"Implicit":[]},"eiImportedAs":null},{"eiModule":["Data","Functor"],"eiImportType":{"Explicit":[{"TypeClassRef":[{"start":[9,22],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[9,35]},"Functor"]},{"ValueRef":[{"start":[9,37],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[9,40]},{"Ident":"map"}]},{"ValueRef":[{"start":[9,42],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[9,46]},{"Ident":"void"}]},{"ValueOpRef":[{"start":[9,48],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[9,52]},"$>"]},{"ValueOpRef":[{"start":[9,54],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[9,59]},"<#>"]},{"ValueOpRef":[{"start":[9,61],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[9,65]},"<$"]},{"ValueOpRef":[{"start":[9,67],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[9,72]},"<$>"]}]},"eiImportedAs":null},{"eiModule":["Data","Function"],"eiImportType":{"Explicit":[{"ValueRef":[{"start":[10,23],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[10,28]},{"Ident":"const"}]}]},"eiImportedAs":null},{"eiModule":["Control","Category"],"eiImportType":{"Explicit":[{"ValueRef":[{"start":[11,26],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[11,34]},{"Ident":"identity"}]}]},"eiImportedAs":null}],"efFixities":[{"efAssociativity":"infixl","efPrecedence":4,"efOperator":"<*>","efAlias":[["Control","Apply"],{"Left":{"Ident":"apply"}}]},{"efAssociativity":"infixl","efPrecedence":4,"efOperator":"<*","efAlias":[["Control","Apply"],{"Left":{"Ident":"applyFirst"}}]},{"efAssociativity":"infixl","efPrecedence":4,"efOperator":"*>","efAlias":[["Control","Apply"],{"Left":{"Ident":"applySecond"}}]}],"efTypeFixities":[],"efDeclarations":[{"EDType":{"edTypeName":"Apply","edTypeKind":{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"FunKind","contents":[{"annotation":[{"start":[36,24],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[36,34]},[]],"tag":"FunKind","contents":[{"annotation":[{"start":[36,29],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[36,31]},[]],"tag":"NamedKind","contents":[["Prim"],"Type"]},{"annotation":[{"start":[36,35],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[36,37]},[]],"tag":"NamedKind","contents":[["Prim"],"Type"]}]},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"NamedKind","contents":[["Prim"],"Type"]}]},"edTypeDeclarationKind":"TypeSynonym"}},{"EDTypeSynonym":{"edTypeSynonymName":"Apply","edTypeSynonymArguments":[["f",null]],"edTypeSynonymType":{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Record"]},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"RCons","contents":["apply",{"annotation":[{"start":[36,12],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[36,48]},[]],"tag":"ForAll","contents":["b",{"annotation":[{"start":[36,19],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[36,48]},[]],"tag":"ForAll","contents":["a",{"annotation":[{"start":[36,24],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[36,48]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[36,24],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[36,48]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[36,35],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[36,37]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[36,24],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[36,34]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[36,24],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[36,25]},[]],"tag":"TypeVar","contents":"f"},{"annotation":[{"start":[36,27],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[36,33]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[36,27],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[36,33]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[36,29],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[36,31]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[36,27],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[36,28]},[]],"tag":"TypeVar","contents":"a"}]},{"annotation":[{"start":[36,32],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[36,33]},[]],"tag":"TypeVar","contents":"b"}]}]}]},{"annotation":[{"start":[36,38],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[36,48]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[36,38],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[36,48]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[36,42],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[36,44]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[36,38],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[36,41]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[36,38],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[36,39]},[]],"tag":"TypeVar","contents":"f"},{"annotation":[{"start":[36,40],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[36,41]},[]],"tag":"TypeVar","contents":"a"}]}]},{"annotation":[{"start":[36,45],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[36,48]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[36,45],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[36,46]},[]],"tag":"TypeVar","contents":"f"},{"annotation":[{"start":[36,47],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[36,48]},[]],"tag":"TypeVar","contents":"b"}]}]}]},null]},null]},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"RCons","contents":["Functor0",{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Record"]},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"REmpty"}]}]},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeConstructor","contents":[["Data","Functor"],"Functor"]},{"annotation":[{"start":[35,15],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[35,16]},[]],"tag":"TypeVar","contents":"f"}]}]},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"REmpty"}]}]}]}}},{"EDClass":{"edClassName":"Apply","edClassTypeArguments":[["f",null]],"edClassMembers":[[{"Ident":"apply"},{"annotation":[{"start":[36,12],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[36,48]},[]],"tag":"ForAll","contents":["b",{"annotation":[{"start":[36,19],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[36,48]},[]],"tag":"ForAll","contents":["a",{"annotation":[{"start":[36,24],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[36,48]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[36,24],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[36,48]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[36,35],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[36,37]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[36,24],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[36,34]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[36,24],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[36,25]},[]],"tag":"TypeVar","contents":"f"},{"annotation":[{"start":[36,27],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[36,33]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[36,27],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[36,33]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[36,29],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[36,31]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[36,27],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[36,28]},[]],"tag":"TypeVar","contents":"a"}]},{"annotation":[{"start":[36,32],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[36,33]},[]],"tag":"TypeVar","contents":"b"}]}]}]},{"annotation":[{"start":[36,38],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[36,48]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[36,38],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[36,48]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[36,42],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[36,44]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[36,38],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[36,41]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[36,38],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[36,39]},[]],"tag":"TypeVar","contents":"f"},{"annotation":[{"start":[36,40],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[36,41]},[]],"tag":"TypeVar","contents":"a"}]}]},{"annotation":[{"start":[36,45],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[36,48]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[36,45],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[36,46]},[]],"tag":"TypeVar","contents":"f"},{"annotation":[{"start":[36,47],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[36,48]},[]],"tag":"TypeVar","contents":"b"}]}]}]},null]},null]}]],"edClassConstraints":[{"constraintAnn":[{"start":[35,7],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[35,16]},[]],"constraintClass":[["Data","Functor"],"Functor"],"constraintArgs":[{"annotation":[{"start":[35,15],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[35,16]},[]],"tag":"TypeVar","contents":"f"}],"constraintData":null}],"edFunctionalDependencies":[]}},{"EDValue":{"edValueName":{"Ident":"apply"},"edValueType":{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"ForAll","contents":["f",{"annotation":[{"start":[36,12],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[36,48]},[]],"tag":"ForAll","contents":["b",{"annotation":[{"start":[36,19],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[36,48]},[]],"tag":"ForAll","contents":["a",{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"ConstrainedType","contents":[{"constraintAnn":[{"start":[0,0],"name":"","end":[0,0]},[]],"constraintClass":[["Control","Apply"],"Apply"],"constraintArgs":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeVar","contents":"f"}],"constraintData":null},{"annotation":[{"start":[36,24],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[36,48]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[36,24],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[36,48]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[36,35],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[36,37]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[36,24],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[36,34]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[36,24],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[36,25]},[]],"tag":"TypeVar","contents":"f"},{"annotation":[{"start":[36,27],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[36,33]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[36,27],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[36,33]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[36,29],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[36,31]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[36,27],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[36,28]},[]],"tag":"TypeVar","contents":"a"}]},{"annotation":[{"start":[36,32],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[36,33]},[]],"tag":"TypeVar","contents":"b"}]}]}]},{"annotation":[{"start":[36,38],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[36,48]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[36,38],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[36,48]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[36,42],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[36,44]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[36,38],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[36,41]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[36,38],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[36,39]},[]],"tag":"TypeVar","contents":"f"},{"annotation":[{"start":[36,40],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[36,41]},[]],"tag":"TypeVar","contents":"a"}]}]},{"annotation":[{"start":[36,45],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[36,48]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[36,45],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[36,46]},[]],"tag":"TypeVar","contents":"f"},{"annotation":[{"start":[36,47],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[36,48]},[]],"tag":"TypeVar","contents":"b"}]}]}]}]},16]},17]},18]}}},{"EDValue":{"edValueName":{"Ident":"applyFirst"},"edValueType":{"annotation":[{"start":[49,15],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[49,57]},[]],"tag":"ForAll","contents":["f",{"annotation":[{"start":[49,22],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[49,57]},[]],"tag":"ForAll","contents":["b",{"annotation":[{"start":[49,22],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[49,57]},[]],"tag":"ForAll","contents":["a",{"annotation":[{"start":[49,29],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[49,57]},[]],"tag":"ConstrainedType","contents":[{"constraintAnn":[{"start":[49,29],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[49,36]},[]],"constraintClass":[["Control","Apply"],"Apply"],"constraintArgs":[{"annotation":[{"start":[49,35],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[49,36]},[]],"tag":"TypeVar","contents":"f"}],"constraintData":null},{"annotation":[{"start":[49,40],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[49,57]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[49,40],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[49,57]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[49,44],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[49,46]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[49,40],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[49,43]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[49,40],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[49,41]},[]],"tag":"TypeVar","contents":"f"},{"annotation":[{"start":[49,42],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[49,43]},[]],"tag":"TypeVar","contents":"a"}]}]},{"annotation":[{"start":[49,47],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[49,57]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[49,47],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[49,57]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[49,51],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[49,53]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[49,47],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[49,50]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[49,47],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[49,48]},[]],"tag":"TypeVar","contents":"f"},{"annotation":[{"start":[49,49],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[49,50]},[]],"tag":"TypeVar","contents":"b"}]}]},{"annotation":[{"start":[49,54],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[49,57]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[49,54],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[49,55]},[]],"tag":"TypeVar","contents":"f"},{"annotation":[{"start":[49,56],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[49,57]},[]],"tag":"TypeVar","contents":"a"}]}]}]}]},19]},20]},21]}}},{"EDValue":{"edValueName":{"Ident":"applySecond"},"edValueType":{"annotation":[{"start":[55,16],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[55,58]},[]],"tag":"ForAll","contents":["f",{"annotation":[{"start":[55,23],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[55,58]},[]],"tag":"ForAll","contents":["b",{"annotation":[{"start":[55,23],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[55,58]},[]],"tag":"ForAll","contents":["a",{"annotation":[{"start":[55,30],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[55,58]},[]],"tag":"ConstrainedType","contents":[{"constraintAnn":[{"start":[55,30],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[55,37]},[]],"constraintClass":[["Control","Apply"],"Apply"],"constraintArgs":[{"annotation":[{"start":[55,36],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[55,37]},[]],"tag":"TypeVar","contents":"f"}],"constraintData":null},{"annotation":[{"start":[55,41],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[55,58]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[55,41],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[55,58]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[55,45],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[55,47]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[55,41],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[55,44]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[55,41],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[55,42]},[]],"tag":"TypeVar","contents":"f"},{"annotation":[{"start":[55,43],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[55,44]},[]],"tag":"TypeVar","contents":"a"}]}]},{"annotation":[{"start":[55,48],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[55,58]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[55,48],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[55,58]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[55,52],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[55,54]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[55,48],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[55,51]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[55,48],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[55,49]},[]],"tag":"TypeVar","contents":"f"},{"annotation":[{"start":[55,50],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[55,51]},[]],"tag":"TypeVar","contents":"b"}]}]},{"annotation":[{"start":[55,55],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[55,58]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[55,55],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[55,56]},[]],"tag":"TypeVar","contents":"f"},{"annotation":[{"start":[55,57],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[55,58]},[]],"tag":"TypeVar","contents":"b"}]}]}]}]},25]},26]},27]}}},{"EDValue":{"edValueName":{"Ident":"lift2"},"edValueType":{"annotation":[{"start":[62,10],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[62,71]},[]],"tag":"ForAll","contents":["f",{"annotation":[{"start":[62,17],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[62,71]},[]],"tag":"ForAll","contents":["c",{"annotation":[{"start":[62,17],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[62,71]},[]],"tag":"ForAll","contents":["b",{"annotation":[{"start":[62,17],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[62,71]},[]],"tag":"ForAll","contents":["a",{"annotation":[{"start":[62,26],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[62,71]},[]],"tag":"ConstrainedType","contents":[{"constraintAnn":[{"start":[62,26],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[62,33]},[]],"constraintClass":[["Control","Apply"],"Apply"],"constraintArgs":[{"annotation":[{"start":[62,32],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[62,33]},[]],"tag":"TypeVar","contents":"f"}],"constraintData":null},{"annotation":[{"start":[62,37],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[62,71]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[62,37],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[62,71]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[62,51],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[62,53]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[62,38],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[62,49]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[62,38],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[62,49]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[62,40],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[62,42]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[62,38],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[62,39]},[]],"tag":"TypeVar","contents":"a"}]},{"annotation":[{"start":[62,43],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[62,49]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[62,43],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[62,49]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[62,45],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[62,47]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[62,43],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[62,44]},[]],"tag":"TypeVar","contents":"b"}]},{"annotation":[{"start":[62,48],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[62,49]},[]],"tag":"TypeVar","contents":"c"}]}]}]},{"annotation":[{"start":[62,54],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[62,71]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[62,54],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[62,71]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[62,58],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[62,60]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[62,54],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[62,57]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[62,54],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[62,55]},[]],"tag":"TypeVar","contents":"f"},{"annotation":[{"start":[62,56],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[62,57]},[]],"tag":"TypeVar","contents":"a"}]}]},{"annotation":[{"start":[62,61],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[62,71]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[62,61],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[62,71]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[62,65],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[62,67]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[62,61],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[62,64]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[62,61],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[62,62]},[]],"tag":"TypeVar","contents":"f"},{"annotation":[{"start":[62,63],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[62,64]},[]],"tag":"TypeVar","contents":"b"}]}]},{"annotation":[{"start":[62,68],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[62,71]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[62,68],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[62,69]},[]],"tag":"TypeVar","contents":"f"},{"annotation":[{"start":[62,70],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[62,71]},[]],"tag":"TypeVar","contents":"c"}]}]}]}]}]},31]},32]},33]},34]}}},{"EDValue":{"edValueName":{"Ident":"lift3"},"edValueType":{"annotation":[{"start":[67,10],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[67,85]},[]],"tag":"ForAll","contents":["f",{"annotation":[{"start":[67,17],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[67,85]},[]],"tag":"ForAll","contents":["d",{"annotation":[{"start":[67,17],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[67,85]},[]],"tag":"ForAll","contents":["c",{"annotation":[{"start":[67,17],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[67,85]},[]],"tag":"ForAll","contents":["b",{"annotation":[{"start":[67,17],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[67,85]},[]],"tag":"ForAll","contents":["a",{"annotation":[{"start":[67,28],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[67,85]},[]],"tag":"ConstrainedType","contents":[{"constraintAnn":[{"start":[67,28],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[67,35]},[]],"constraintClass":[["Control","Apply"],"Apply"],"constraintArgs":[{"annotation":[{"start":[67,34],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[67,35]},[]],"tag":"TypeVar","contents":"f"}],"constraintData":null},{"annotation":[{"start":[67,39],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[67,85]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[67,39],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[67,85]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[67,58],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[67,60]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[67,40],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[67,56]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[67,40],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[67,56]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[67,42],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[67,44]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[67,40],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[67,41]},[]],"tag":"TypeVar","contents":"a"}]},{"annotation":[{"start":[67,45],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[67,56]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[67,45],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[67,56]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[67,47],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[67,49]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[67,45],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[67,46]},[]],"tag":"TypeVar","contents":"b"}]},{"annotation":[{"start":[67,50],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[67,56]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[67,50],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[67,56]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[67,52],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[67,54]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[67,50],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[67,51]},[]],"tag":"TypeVar","contents":"c"}]},{"annotation":[{"start":[67,55],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[67,56]},[]],"tag":"TypeVar","contents":"d"}]}]}]}]},{"annotation":[{"start":[67,61],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[67,85]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[67,61],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[67,85]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[67,65],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[67,67]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[67,61],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[67,64]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[67,61],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[67,62]},[]],"tag":"TypeVar","contents":"f"},{"annotation":[{"start":[67,63],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[67,64]},[]],"tag":"TypeVar","contents":"a"}]}]},{"annotation":[{"start":[67,68],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[67,85]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[67,68],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[67,85]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[67,72],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[67,74]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[67,68],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[67,71]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[67,68],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[67,69]},[]],"tag":"TypeVar","contents":"f"},{"annotation":[{"start":[67,70],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[67,71]},[]],"tag":"TypeVar","contents":"b"}]}]},{"annotation":[{"start":[67,75],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[67,85]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[67,75],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[67,85]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[67,79],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[67,81]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[67,75],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[67,78]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[67,75],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[67,76]},[]],"tag":"TypeVar","contents":"f"},{"annotation":[{"start":[67,77],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[67,78]},[]],"tag":"TypeVar","contents":"c"}]}]},{"annotation":[{"start":[67,82],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[67,85]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[67,82],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[67,83]},[]],"tag":"TypeVar","contents":"f"},{"annotation":[{"start":[67,84],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[67,85]},[]],"tag":"TypeVar","contents":"d"}]}]}]}]}]}]},39]},40]},41]},42]},43]}}},{"EDValue":{"edValueName":{"Ident":"lift4"},"edValueType":{"annotation":[{"start":[72,10],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[72,99]},[]],"tag":"ForAll","contents":["f",{"annotation":[{"start":[72,17],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[72,99]},[]],"tag":"ForAll","contents":["e",{"annotation":[{"start":[72,17],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[72,99]},[]],"tag":"ForAll","contents":["d",{"annotation":[{"start":[72,17],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[72,99]},[]],"tag":"ForAll","contents":["c",{"annotation":[{"start":[72,17],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[72,99]},[]],"tag":"ForAll","contents":["b",{"annotation":[{"start":[72,17],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[72,99]},[]],"tag":"ForAll","contents":["a",{"annotation":[{"start":[72,30],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[72,99]},[]],"tag":"ConstrainedType","contents":[{"constraintAnn":[{"start":[72,30],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[72,37]},[]],"constraintClass":[["Control","Apply"],"Apply"],"constraintArgs":[{"annotation":[{"start":[72,36],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[72,37]},[]],"tag":"TypeVar","contents":"f"}],"constraintData":null},{"annotation":[{"start":[72,41],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[72,99]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[72,41],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[72,99]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[72,65],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[72,67]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[72,42],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[72,63]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[72,42],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[72,63]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[72,44],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[72,46]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[72,42],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[72,43]},[]],"tag":"TypeVar","contents":"a"}]},{"annotation":[{"start":[72,47],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[72,63]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[72,47],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[72,63]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[72,49],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[72,51]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[72,47],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[72,48]},[]],"tag":"TypeVar","contents":"b"}]},{"annotation":[{"start":[72,52],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[72,63]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[72,52],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[72,63]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[72,54],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[72,56]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[72,52],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[72,53]},[]],"tag":"TypeVar","contents":"c"}]},{"annotation":[{"start":[72,57],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[72,63]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[72,57],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[72,63]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[72,59],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[72,61]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[72,57],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[72,58]},[]],"tag":"TypeVar","contents":"d"}]},{"annotation":[{"start":[72,62],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[72,63]},[]],"tag":"TypeVar","contents":"e"}]}]}]}]}]},{"annotation":[{"start":[72,68],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[72,99]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[72,68],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[72,99]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[72,72],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[72,74]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[72,68],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[72,71]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[72,68],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[72,69]},[]],"tag":"TypeVar","contents":"f"},{"annotation":[{"start":[72,70],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[72,71]},[]],"tag":"TypeVar","contents":"a"}]}]},{"annotation":[{"start":[72,75],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[72,99]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[72,75],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[72,99]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[72,79],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[72,81]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[72,75],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[72,78]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[72,75],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[72,76]},[]],"tag":"TypeVar","contents":"f"},{"annotation":[{"start":[72,77],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[72,78]},[]],"tag":"TypeVar","contents":"b"}]}]},{"annotation":[{"start":[72,82],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[72,99]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[72,82],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[72,99]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[72,86],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[72,88]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[72,82],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[72,85]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[72,82],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[72,83]},[]],"tag":"TypeVar","contents":"f"},{"annotation":[{"start":[72,84],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[72,85]},[]],"tag":"TypeVar","contents":"c"}]}]},{"annotation":[{"start":[72,89],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[72,99]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[72,89],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[72,99]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[72,93],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[72,95]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[72,89],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[72,92]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[72,89],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[72,90]},[]],"tag":"TypeVar","contents":"f"},{"annotation":[{"start":[72,91],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[72,92]},[]],"tag":"TypeVar","contents":"d"}]}]},{"annotation":[{"start":[72,96],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[72,99]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[72,96],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[72,97]},[]],"tag":"TypeVar","contents":"f"},{"annotation":[{"start":[72,98],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[72,99]},[]],"tag":"TypeVar","contents":"e"}]}]}]}]}]}]}]},49]},50]},51]},52]},53]},54]}}},{"EDValue":{"edValueName":{"Ident":"lift5"},"edValueType":{"annotation":[{"start":[77,10],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[77,113]},[]],"tag":"ForAll","contents":["g",{"annotation":[{"start":[77,17],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[77,113]},[]],"tag":"ForAll","contents":["f",{"annotation":[{"start":[77,17],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[77,113]},[]],"tag":"ForAll","contents":["e",{"annotation":[{"start":[77,17],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[77,113]},[]],"tag":"ForAll","contents":["d",{"annotation":[{"start":[77,17],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[77,113]},[]],"tag":"ForAll","contents":["c",{"annotation":[{"start":[77,17],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[77,113]},[]],"tag":"ForAll","contents":["b",{"annotation":[{"start":[77,17],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[77,113]},[]],"tag":"ForAll","contents":["a",{"annotation":[{"start":[77,32],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[77,113]},[]],"tag":"ConstrainedType","contents":[{"constraintAnn":[{"start":[77,32],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[77,39]},[]],"constraintClass":[["Control","Apply"],"Apply"],"constraintArgs":[{"annotation":[{"start":[77,38],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[77,39]},[]],"tag":"TypeVar","contents":"f"}],"constraintData":null},{"annotation":[{"start":[77,43],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[77,113]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[77,43],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[77,113]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[77,72],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[77,74]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[77,44],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[77,70]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[77,44],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[77,70]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[77,46],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[77,48]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[77,44],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[77,45]},[]],"tag":"TypeVar","contents":"a"}]},{"annotation":[{"start":[77,49],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[77,70]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[77,49],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[77,70]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[77,51],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[77,53]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[77,49],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[77,50]},[]],"tag":"TypeVar","contents":"b"}]},{"annotation":[{"start":[77,54],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[77,70]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[77,54],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[77,70]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[77,56],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[77,58]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[77,54],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[77,55]},[]],"tag":"TypeVar","contents":"c"}]},{"annotation":[{"start":[77,59],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[77,70]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[77,59],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[77,70]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[77,61],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[77,63]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[77,59],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[77,60]},[]],"tag":"TypeVar","contents":"d"}]},{"annotation":[{"start":[77,64],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[77,70]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[77,64],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[77,70]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[77,66],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[77,68]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[77,64],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[77,65]},[]],"tag":"TypeVar","contents":"e"}]},{"annotation":[{"start":[77,69],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[77,70]},[]],"tag":"TypeVar","contents":"g"}]}]}]}]}]}]},{"annotation":[{"start":[77,75],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[77,113]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[77,75],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[77,113]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[77,79],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[77,81]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[77,75],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[77,78]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[77,75],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[77,76]},[]],"tag":"TypeVar","contents":"f"},{"annotation":[{"start":[77,77],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[77,78]},[]],"tag":"TypeVar","contents":"a"}]}]},{"annotation":[{"start":[77,82],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[77,113]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[77,82],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[77,113]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[77,86],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[77,88]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[77,82],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[77,85]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[77,82],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[77,83]},[]],"tag":"TypeVar","contents":"f"},{"annotation":[{"start":[77,84],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[77,85]},[]],"tag":"TypeVar","contents":"b"}]}]},{"annotation":[{"start":[77,89],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[77,113]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[77,89],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[77,113]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[77,93],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[77,95]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[77,89],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[77,92]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[77,89],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[77,90]},[]],"tag":"TypeVar","contents":"f"},{"annotation":[{"start":[77,91],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[77,92]},[]],"tag":"TypeVar","contents":"c"}]}]},{"annotation":[{"start":[77,96],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[77,113]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[77,96],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[77,113]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[77,100],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[77,102]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[77,96],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[77,99]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[77,96],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[77,97]},[]],"tag":"TypeVar","contents":"f"},{"annotation":[{"start":[77,98],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[77,99]},[]],"tag":"TypeVar","contents":"d"}]}]},{"annotation":[{"start":[77,103],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[77,113]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[77,103],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[77,113]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[77,107],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[77,109]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[77,103],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[77,106]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[77,103],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[77,104]},[]],"tag":"TypeVar","contents":"f"},{"annotation":[{"start":[77,105],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[77,106]},[]],"tag":"TypeVar","contents":"e"}]}]},{"annotation":[{"start":[77,110],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[77,113]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[77,110],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[77,111]},[]],"tag":"TypeVar","contents":"f"},{"annotation":[{"start":[77,112],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[77,113]},[]],"tag":"TypeVar","contents":"g"}]}]}]}]}]}]}]}]},61]},62]},63]},64]},65]},66]},67]}}},{"EDInstance":{"edInstanceClassName":[["Control","Apply"],"Apply"],"edInstanceName":{"Ident":"applyFn"},"edInstanceTypes":[{"annotation":[{"start":[40,28],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[40,34]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[40,28],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[40,32]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[40,33],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[40,34]},[]],"tag":"TypeVar","contents":"r"}]}],"edInstanceConstraints":[],"edInstanceChain":[[["Control","Apply"],{"Ident":"applyFn"}]],"edInstanceChainIndex":0}},{"EDInstance":{"edInstanceClassName":[["Control","Apply"],"Apply"],"edInstanceName":{"Ident":"applyArray"},"edInstanceTypes":[{"annotation":[{"start":[43,30],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[43,35]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Array"]}],"edInstanceConstraints":[],"edInstanceChain":[[["Control","Apply"],{"Ident":"applyArray"}]],"edInstanceChainIndex":0}}],"efSourceSpan":{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[78,52]}} \ No newline at end of file
+{"efVersion":"0.13.2","efModuleName":["Control","Apply"],"efExports":[{"ReExportRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[78,52]},{"exportSourceImportedFrom":["Data","Functor"],"exportSourceDefinedIn":["Data","Functor"]},{"TypeClassRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[78,52]},"Functor"]}]},{"ReExportRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[78,52]},{"exportSourceImportedFrom":["Data","Functor"],"exportSourceDefinedIn":["Data","Functor"]},{"ValueRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[78,52]},{"Ident":"map"}]}]},{"ReExportRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[78,52]},{"exportSourceImportedFrom":["Data","Functor"],"exportSourceDefinedIn":["Data","Functor"]},{"ValueRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[78,52]},{"Ident":"void"}]}]},{"ReExportRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[78,52]},{"exportSourceImportedFrom":["Data","Functor"],"exportSourceDefinedIn":["Data","Functor"]},{"ValueOpRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[78,52]},"$>"]}]},{"ReExportRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[78,52]},{"exportSourceImportedFrom":["Data","Functor"],"exportSourceDefinedIn":["Data","Functor"]},{"ValueOpRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[78,52]},"<#>"]}]},{"ReExportRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[78,52]},{"exportSourceImportedFrom":["Data","Functor"],"exportSourceDefinedIn":["Data","Functor"]},{"ValueOpRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[78,52]},"<$"]}]},{"ReExportRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[78,52]},{"exportSourceImportedFrom":["Data","Functor"],"exportSourceDefinedIn":["Data","Functor"]},{"ValueOpRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[78,52]},"<$>"]}]},{"TypeClassRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[78,52]},"Apply"]},{"ValueRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[78,52]},{"Ident":"apply"}]},{"ValueOpRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[78,52]},"<*>"]},{"ValueRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[78,52]},{"Ident":"applyFirst"}]},{"ValueOpRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[78,52]},"<*"]},{"ValueRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[78,52]},{"Ident":"applySecond"}]},{"ValueOpRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[78,52]},"*>"]},{"ValueRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[78,52]},{"Ident":"lift2"}]},{"ValueRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[78,52]},{"Ident":"lift3"}]},{"ValueRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[78,52]},{"Ident":"lift4"}]},{"ValueRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[78,52]},{"Ident":"lift5"}]},{"ModuleRef":[{"start":[6,5],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[6,24]},["Data","Functor"]]},{"TypeInstanceRef":[{"start":[0,0],"name":"<generated>","end":[0,0]},{"Ident":"applyFn"}]},{"TypeInstanceRef":[{"start":[0,0],"name":"<generated>","end":[0,0]},{"Ident":"applyArray"}]}],"efImports":[{"eiModule":["Prim"],"eiImportType":{"Implicit":[]},"eiImportedAs":["Prim"]},{"eiModule":["Prim"],"eiImportType":{"Implicit":[]},"eiImportedAs":null},{"eiModule":["Data","Functor"],"eiImportType":{"Explicit":[{"TypeClassRef":[{"start":[9,22],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[9,35]},"Functor"]},{"ValueRef":[{"start":[9,37],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[9,40]},{"Ident":"map"}]},{"ValueRef":[{"start":[9,42],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[9,46]},{"Ident":"void"}]},{"ValueOpRef":[{"start":[9,48],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[9,52]},"$>"]},{"ValueOpRef":[{"start":[9,54],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[9,59]},"<#>"]},{"ValueOpRef":[{"start":[9,61],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[9,65]},"<$"]},{"ValueOpRef":[{"start":[9,67],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[9,72]},"<$>"]}]},"eiImportedAs":null},{"eiModule":["Data","Function"],"eiImportType":{"Explicit":[{"ValueRef":[{"start":[10,23],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[10,28]},{"Ident":"const"}]}]},"eiImportedAs":null},{"eiModule":["Control","Category"],"eiImportType":{"Explicit":[{"ValueRef":[{"start":[11,26],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[11,34]},{"Ident":"identity"}]}]},"eiImportedAs":null}],"efFixities":[{"efAssociativity":"infixl","efPrecedence":4,"efOperator":"<*>","efAlias":[["Control","Apply"],{"Left":{"Ident":"apply"}}]},{"efAssociativity":"infixl","efPrecedence":4,"efOperator":"<*","efAlias":[["Control","Apply"],{"Left":{"Ident":"applyFirst"}}]},{"efAssociativity":"infixl","efPrecedence":4,"efOperator":"*>","efAlias":[["Control","Apply"],{"Left":{"Ident":"applySecond"}}]}],"efTypeFixities":[],"efDeclarations":[{"EDType":{"edTypeName":"Apply","edTypeKind":{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"FunKind","contents":[{"annotation":[{"start":[36,24],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[36,34]},[]],"tag":"FunKind","contents":[{"annotation":[{"start":[36,29],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[36,31]},[]],"tag":"NamedKind","contents":[["Prim"],"Type"]},{"annotation":[{"start":[36,35],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[36,37]},[]],"tag":"NamedKind","contents":[["Prim"],"Type"]}]},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"NamedKind","contents":[["Prim"],"Type"]}]},"edTypeDeclarationKind":"TypeSynonym"}},{"EDTypeSynonym":{"edTypeSynonymName":"Apply","edTypeSynonymArguments":[["f",null]],"edTypeSynonymType":{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Record"]},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"RCons","contents":["apply",{"annotation":[{"start":[36,12],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[36,48]},[]],"tag":"ForAll","contents":["b",{"annotation":[{"start":[36,19],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[36,48]},[]],"tag":"ForAll","contents":["a",{"annotation":[{"start":[36,24],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[36,48]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[36,24],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[36,48]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[36,35],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[36,37]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[36,24],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[36,34]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[36,24],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[36,25]},[]],"tag":"TypeVar","contents":"f"},{"annotation":[{"start":[36,27],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[36,33]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[36,27],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[36,33]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[36,29],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[36,31]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[36,27],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[36,28]},[]],"tag":"TypeVar","contents":"a"}]},{"annotation":[{"start":[36,32],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[36,33]},[]],"tag":"TypeVar","contents":"b"}]}]}]},{"annotation":[{"start":[36,38],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[36,48]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[36,38],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[36,48]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[36,42],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[36,44]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[36,38],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[36,41]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[36,38],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[36,39]},[]],"tag":"TypeVar","contents":"f"},{"annotation":[{"start":[36,40],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[36,41]},[]],"tag":"TypeVar","contents":"a"}]}]},{"annotation":[{"start":[36,45],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[36,48]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[36,45],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[36,46]},[]],"tag":"TypeVar","contents":"f"},{"annotation":[{"start":[36,47],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[36,48]},[]],"tag":"TypeVar","contents":"b"}]}]}]},null]},null]},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"RCons","contents":["Functor0",{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Record"]},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"REmpty"}]}]},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeConstructor","contents":[["Data","Functor"],"Functor"]},{"annotation":[{"start":[35,15],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[35,16]},[]],"tag":"TypeVar","contents":"f"}]}]},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"REmpty"}]}]}]}}},{"EDClass":{"edClassName":"Apply","edClassTypeArguments":[["f",null]],"edClassMembers":[[{"Ident":"apply"},{"annotation":[{"start":[36,12],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[36,48]},[]],"tag":"ForAll","contents":["b",{"annotation":[{"start":[36,19],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[36,48]},[]],"tag":"ForAll","contents":["a",{"annotation":[{"start":[36,24],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[36,48]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[36,24],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[36,48]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[36,35],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[36,37]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[36,24],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[36,34]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[36,24],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[36,25]},[]],"tag":"TypeVar","contents":"f"},{"annotation":[{"start":[36,27],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[36,33]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[36,27],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[36,33]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[36,29],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[36,31]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[36,27],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[36,28]},[]],"tag":"TypeVar","contents":"a"}]},{"annotation":[{"start":[36,32],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[36,33]},[]],"tag":"TypeVar","contents":"b"}]}]}]},{"annotation":[{"start":[36,38],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[36,48]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[36,38],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[36,48]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[36,42],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[36,44]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[36,38],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[36,41]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[36,38],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[36,39]},[]],"tag":"TypeVar","contents":"f"},{"annotation":[{"start":[36,40],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[36,41]},[]],"tag":"TypeVar","contents":"a"}]}]},{"annotation":[{"start":[36,45],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[36,48]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[36,45],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[36,46]},[]],"tag":"TypeVar","contents":"f"},{"annotation":[{"start":[36,47],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[36,48]},[]],"tag":"TypeVar","contents":"b"}]}]}]},null]},null]}]],"edClassConstraints":[{"constraintAnn":[{"start":[35,7],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[35,16]},[]],"constraintClass":[["Data","Functor"],"Functor"],"constraintArgs":[{"annotation":[{"start":[35,15],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[35,16]},[]],"tag":"TypeVar","contents":"f"}],"constraintData":null}],"edFunctionalDependencies":[],"edIsEmpty":false}},{"EDValue":{"edValueName":{"Ident":"apply"},"edValueType":{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"ForAll","contents":["f",{"annotation":[{"start":[36,12],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[36,48]},[]],"tag":"ForAll","contents":["b",{"annotation":[{"start":[36,19],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[36,48]},[]],"tag":"ForAll","contents":["a",{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"ConstrainedType","contents":[{"constraintAnn":[{"start":[0,0],"name":"","end":[0,0]},[]],"constraintClass":[["Control","Apply"],"Apply"],"constraintArgs":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeVar","contents":"f"}],"constraintData":null},{"annotation":[{"start":[36,24],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[36,48]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[36,24],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[36,48]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[36,35],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[36,37]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[36,24],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[36,34]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[36,24],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[36,25]},[]],"tag":"TypeVar","contents":"f"},{"annotation":[{"start":[36,27],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[36,33]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[36,27],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[36,33]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[36,29],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[36,31]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[36,27],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[36,28]},[]],"tag":"TypeVar","contents":"a"}]},{"annotation":[{"start":[36,32],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[36,33]},[]],"tag":"TypeVar","contents":"b"}]}]}]},{"annotation":[{"start":[36,38],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[36,48]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[36,38],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[36,48]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[36,42],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[36,44]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[36,38],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[36,41]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[36,38],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[36,39]},[]],"tag":"TypeVar","contents":"f"},{"annotation":[{"start":[36,40],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[36,41]},[]],"tag":"TypeVar","contents":"a"}]}]},{"annotation":[{"start":[36,45],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[36,48]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[36,45],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[36,46]},[]],"tag":"TypeVar","contents":"f"},{"annotation":[{"start":[36,47],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[36,48]},[]],"tag":"TypeVar","contents":"b"}]}]}]}]},16]},17]},18]}}},{"EDValue":{"edValueName":{"Ident":"applyFirst"},"edValueType":{"annotation":[{"start":[49,15],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[49,57]},[]],"tag":"ForAll","contents":["f",{"annotation":[{"start":[49,22],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[49,57]},[]],"tag":"ForAll","contents":["b",{"annotation":[{"start":[49,22],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[49,57]},[]],"tag":"ForAll","contents":["a",{"annotation":[{"start":[49,29],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[49,57]},[]],"tag":"ConstrainedType","contents":[{"constraintAnn":[{"start":[49,29],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[49,36]},[]],"constraintClass":[["Control","Apply"],"Apply"],"constraintArgs":[{"annotation":[{"start":[49,35],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[49,36]},[]],"tag":"TypeVar","contents":"f"}],"constraintData":null},{"annotation":[{"start":[49,40],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[49,57]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[49,40],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[49,57]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[49,44],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[49,46]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[49,40],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[49,43]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[49,40],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[49,41]},[]],"tag":"TypeVar","contents":"f"},{"annotation":[{"start":[49,42],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[49,43]},[]],"tag":"TypeVar","contents":"a"}]}]},{"annotation":[{"start":[49,47],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[49,57]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[49,47],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[49,57]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[49,51],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[49,53]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[49,47],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[49,50]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[49,47],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[49,48]},[]],"tag":"TypeVar","contents":"f"},{"annotation":[{"start":[49,49],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[49,50]},[]],"tag":"TypeVar","contents":"b"}]}]},{"annotation":[{"start":[49,54],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[49,57]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[49,54],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[49,55]},[]],"tag":"TypeVar","contents":"f"},{"annotation":[{"start":[49,56],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[49,57]},[]],"tag":"TypeVar","contents":"a"}]}]}]}]},19]},20]},21]}}},{"EDValue":{"edValueName":{"Ident":"applySecond"},"edValueType":{"annotation":[{"start":[55,16],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[55,58]},[]],"tag":"ForAll","contents":["f",{"annotation":[{"start":[55,23],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[55,58]},[]],"tag":"ForAll","contents":["b",{"annotation":[{"start":[55,23],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[55,58]},[]],"tag":"ForAll","contents":["a",{"annotation":[{"start":[55,30],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[55,58]},[]],"tag":"ConstrainedType","contents":[{"constraintAnn":[{"start":[55,30],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[55,37]},[]],"constraintClass":[["Control","Apply"],"Apply"],"constraintArgs":[{"annotation":[{"start":[55,36],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[55,37]},[]],"tag":"TypeVar","contents":"f"}],"constraintData":null},{"annotation":[{"start":[55,41],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[55,58]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[55,41],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[55,58]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[55,45],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[55,47]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[55,41],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[55,44]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[55,41],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[55,42]},[]],"tag":"TypeVar","contents":"f"},{"annotation":[{"start":[55,43],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[55,44]},[]],"tag":"TypeVar","contents":"a"}]}]},{"annotation":[{"start":[55,48],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[55,58]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[55,48],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[55,58]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[55,52],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[55,54]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[55,48],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[55,51]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[55,48],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[55,49]},[]],"tag":"TypeVar","contents":"f"},{"annotation":[{"start":[55,50],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[55,51]},[]],"tag":"TypeVar","contents":"b"}]}]},{"annotation":[{"start":[55,55],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[55,58]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[55,55],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[55,56]},[]],"tag":"TypeVar","contents":"f"},{"annotation":[{"start":[55,57],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[55,58]},[]],"tag":"TypeVar","contents":"b"}]}]}]}]},25]},26]},27]}}},{"EDValue":{"edValueName":{"Ident":"lift2"},"edValueType":{"annotation":[{"start":[62,10],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[62,71]},[]],"tag":"ForAll","contents":["f",{"annotation":[{"start":[62,17],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[62,71]},[]],"tag":"ForAll","contents":["c",{"annotation":[{"start":[62,17],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[62,71]},[]],"tag":"ForAll","contents":["b",{"annotation":[{"start":[62,17],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[62,71]},[]],"tag":"ForAll","contents":["a",{"annotation":[{"start":[62,26],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[62,71]},[]],"tag":"ConstrainedType","contents":[{"constraintAnn":[{"start":[62,26],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[62,33]},[]],"constraintClass":[["Control","Apply"],"Apply"],"constraintArgs":[{"annotation":[{"start":[62,32],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[62,33]},[]],"tag":"TypeVar","contents":"f"}],"constraintData":null},{"annotation":[{"start":[62,37],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[62,71]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[62,37],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[62,71]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[62,51],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[62,53]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[62,38],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[62,49]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[62,38],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[62,49]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[62,40],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[62,42]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[62,38],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[62,39]},[]],"tag":"TypeVar","contents":"a"}]},{"annotation":[{"start":[62,43],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[62,49]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[62,43],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[62,49]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[62,45],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[62,47]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[62,43],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[62,44]},[]],"tag":"TypeVar","contents":"b"}]},{"annotation":[{"start":[62,48],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[62,49]},[]],"tag":"TypeVar","contents":"c"}]}]}]},{"annotation":[{"start":[62,54],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[62,71]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[62,54],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[62,71]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[62,58],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[62,60]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[62,54],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[62,57]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[62,54],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[62,55]},[]],"tag":"TypeVar","contents":"f"},{"annotation":[{"start":[62,56],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[62,57]},[]],"tag":"TypeVar","contents":"a"}]}]},{"annotation":[{"start":[62,61],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[62,71]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[62,61],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[62,71]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[62,65],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[62,67]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[62,61],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[62,64]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[62,61],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[62,62]},[]],"tag":"TypeVar","contents":"f"},{"annotation":[{"start":[62,63],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[62,64]},[]],"tag":"TypeVar","contents":"b"}]}]},{"annotation":[{"start":[62,68],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[62,71]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[62,68],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[62,69]},[]],"tag":"TypeVar","contents":"f"},{"annotation":[{"start":[62,70],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[62,71]},[]],"tag":"TypeVar","contents":"c"}]}]}]}]}]},31]},32]},33]},34]}}},{"EDValue":{"edValueName":{"Ident":"lift3"},"edValueType":{"annotation":[{"start":[67,10],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[67,85]},[]],"tag":"ForAll","contents":["f",{"annotation":[{"start":[67,17],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[67,85]},[]],"tag":"ForAll","contents":["d",{"annotation":[{"start":[67,17],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[67,85]},[]],"tag":"ForAll","contents":["c",{"annotation":[{"start":[67,17],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[67,85]},[]],"tag":"ForAll","contents":["b",{"annotation":[{"start":[67,17],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[67,85]},[]],"tag":"ForAll","contents":["a",{"annotation":[{"start":[67,28],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[67,85]},[]],"tag":"ConstrainedType","contents":[{"constraintAnn":[{"start":[67,28],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[67,35]},[]],"constraintClass":[["Control","Apply"],"Apply"],"constraintArgs":[{"annotation":[{"start":[67,34],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[67,35]},[]],"tag":"TypeVar","contents":"f"}],"constraintData":null},{"annotation":[{"start":[67,39],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[67,85]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[67,39],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[67,85]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[67,58],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[67,60]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[67,40],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[67,56]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[67,40],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[67,56]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[67,42],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[67,44]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[67,40],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[67,41]},[]],"tag":"TypeVar","contents":"a"}]},{"annotation":[{"start":[67,45],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[67,56]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[67,45],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[67,56]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[67,47],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[67,49]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[67,45],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[67,46]},[]],"tag":"TypeVar","contents":"b"}]},{"annotation":[{"start":[67,50],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[67,56]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[67,50],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[67,56]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[67,52],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[67,54]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[67,50],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[67,51]},[]],"tag":"TypeVar","contents":"c"}]},{"annotation":[{"start":[67,55],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[67,56]},[]],"tag":"TypeVar","contents":"d"}]}]}]}]},{"annotation":[{"start":[67,61],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[67,85]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[67,61],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[67,85]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[67,65],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[67,67]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[67,61],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[67,64]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[67,61],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[67,62]},[]],"tag":"TypeVar","contents":"f"},{"annotation":[{"start":[67,63],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[67,64]},[]],"tag":"TypeVar","contents":"a"}]}]},{"annotation":[{"start":[67,68],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[67,85]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[67,68],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[67,85]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[67,72],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[67,74]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[67,68],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[67,71]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[67,68],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[67,69]},[]],"tag":"TypeVar","contents":"f"},{"annotation":[{"start":[67,70],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[67,71]},[]],"tag":"TypeVar","contents":"b"}]}]},{"annotation":[{"start":[67,75],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[67,85]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[67,75],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[67,85]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[67,79],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[67,81]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[67,75],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[67,78]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[67,75],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[67,76]},[]],"tag":"TypeVar","contents":"f"},{"annotation":[{"start":[67,77],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[67,78]},[]],"tag":"TypeVar","contents":"c"}]}]},{"annotation":[{"start":[67,82],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[67,85]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[67,82],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[67,83]},[]],"tag":"TypeVar","contents":"f"},{"annotation":[{"start":[67,84],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[67,85]},[]],"tag":"TypeVar","contents":"d"}]}]}]}]}]}]},39]},40]},41]},42]},43]}}},{"EDValue":{"edValueName":{"Ident":"lift4"},"edValueType":{"annotation":[{"start":[72,10],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[72,99]},[]],"tag":"ForAll","contents":["f",{"annotation":[{"start":[72,17],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[72,99]},[]],"tag":"ForAll","contents":["e",{"annotation":[{"start":[72,17],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[72,99]},[]],"tag":"ForAll","contents":["d",{"annotation":[{"start":[72,17],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[72,99]},[]],"tag":"ForAll","contents":["c",{"annotation":[{"start":[72,17],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[72,99]},[]],"tag":"ForAll","contents":["b",{"annotation":[{"start":[72,17],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[72,99]},[]],"tag":"ForAll","contents":["a",{"annotation":[{"start":[72,30],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[72,99]},[]],"tag":"ConstrainedType","contents":[{"constraintAnn":[{"start":[72,30],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[72,37]},[]],"constraintClass":[["Control","Apply"],"Apply"],"constraintArgs":[{"annotation":[{"start":[72,36],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[72,37]},[]],"tag":"TypeVar","contents":"f"}],"constraintData":null},{"annotation":[{"start":[72,41],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[72,99]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[72,41],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[72,99]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[72,65],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[72,67]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[72,42],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[72,63]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[72,42],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[72,63]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[72,44],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[72,46]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[72,42],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[72,43]},[]],"tag":"TypeVar","contents":"a"}]},{"annotation":[{"start":[72,47],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[72,63]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[72,47],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[72,63]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[72,49],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[72,51]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[72,47],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[72,48]},[]],"tag":"TypeVar","contents":"b"}]},{"annotation":[{"start":[72,52],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[72,63]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[72,52],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[72,63]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[72,54],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[72,56]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[72,52],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[72,53]},[]],"tag":"TypeVar","contents":"c"}]},{"annotation":[{"start":[72,57],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[72,63]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[72,57],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[72,63]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[72,59],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[72,61]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[72,57],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[72,58]},[]],"tag":"TypeVar","contents":"d"}]},{"annotation":[{"start":[72,62],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[72,63]},[]],"tag":"TypeVar","contents":"e"}]}]}]}]}]},{"annotation":[{"start":[72,68],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[72,99]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[72,68],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[72,99]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[72,72],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[72,74]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[72,68],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[72,71]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[72,68],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[72,69]},[]],"tag":"TypeVar","contents":"f"},{"annotation":[{"start":[72,70],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[72,71]},[]],"tag":"TypeVar","contents":"a"}]}]},{"annotation":[{"start":[72,75],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[72,99]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[72,75],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[72,99]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[72,79],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[72,81]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[72,75],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[72,78]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[72,75],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[72,76]},[]],"tag":"TypeVar","contents":"f"},{"annotation":[{"start":[72,77],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[72,78]},[]],"tag":"TypeVar","contents":"b"}]}]},{"annotation":[{"start":[72,82],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[72,99]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[72,82],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[72,99]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[72,86],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[72,88]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[72,82],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[72,85]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[72,82],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[72,83]},[]],"tag":"TypeVar","contents":"f"},{"annotation":[{"start":[72,84],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[72,85]},[]],"tag":"TypeVar","contents":"c"}]}]},{"annotation":[{"start":[72,89],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[72,99]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[72,89],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[72,99]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[72,93],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[72,95]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[72,89],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[72,92]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[72,89],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[72,90]},[]],"tag":"TypeVar","contents":"f"},{"annotation":[{"start":[72,91],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[72,92]},[]],"tag":"TypeVar","contents":"d"}]}]},{"annotation":[{"start":[72,96],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[72,99]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[72,96],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[72,97]},[]],"tag":"TypeVar","contents":"f"},{"annotation":[{"start":[72,98],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[72,99]},[]],"tag":"TypeVar","contents":"e"}]}]}]}]}]}]}]},49]},50]},51]},52]},53]},54]}}},{"EDValue":{"edValueName":{"Ident":"lift5"},"edValueType":{"annotation":[{"start":[77,10],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[77,113]},[]],"tag":"ForAll","contents":["g",{"annotation":[{"start":[77,17],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[77,113]},[]],"tag":"ForAll","contents":["f",{"annotation":[{"start":[77,17],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[77,113]},[]],"tag":"ForAll","contents":["e",{"annotation":[{"start":[77,17],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[77,113]},[]],"tag":"ForAll","contents":["d",{"annotation":[{"start":[77,17],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[77,113]},[]],"tag":"ForAll","contents":["c",{"annotation":[{"start":[77,17],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[77,113]},[]],"tag":"ForAll","contents":["b",{"annotation":[{"start":[77,17],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[77,113]},[]],"tag":"ForAll","contents":["a",{"annotation":[{"start":[77,32],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[77,113]},[]],"tag":"ConstrainedType","contents":[{"constraintAnn":[{"start":[77,32],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[77,39]},[]],"constraintClass":[["Control","Apply"],"Apply"],"constraintArgs":[{"annotation":[{"start":[77,38],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[77,39]},[]],"tag":"TypeVar","contents":"f"}],"constraintData":null},{"annotation":[{"start":[77,43],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[77,113]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[77,43],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[77,113]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[77,72],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[77,74]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[77,44],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[77,70]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[77,44],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[77,70]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[77,46],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[77,48]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[77,44],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[77,45]},[]],"tag":"TypeVar","contents":"a"}]},{"annotation":[{"start":[77,49],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[77,70]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[77,49],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[77,70]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[77,51],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[77,53]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[77,49],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[77,50]},[]],"tag":"TypeVar","contents":"b"}]},{"annotation":[{"start":[77,54],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[77,70]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[77,54],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[77,70]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[77,56],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[77,58]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[77,54],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[77,55]},[]],"tag":"TypeVar","contents":"c"}]},{"annotation":[{"start":[77,59],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[77,70]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[77,59],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[77,70]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[77,61],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[77,63]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[77,59],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[77,60]},[]],"tag":"TypeVar","contents":"d"}]},{"annotation":[{"start":[77,64],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[77,70]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[77,64],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[77,70]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[77,66],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[77,68]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[77,64],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[77,65]},[]],"tag":"TypeVar","contents":"e"}]},{"annotation":[{"start":[77,69],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[77,70]},[]],"tag":"TypeVar","contents":"g"}]}]}]}]}]}]},{"annotation":[{"start":[77,75],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[77,113]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[77,75],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[77,113]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[77,79],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[77,81]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[77,75],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[77,78]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[77,75],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[77,76]},[]],"tag":"TypeVar","contents":"f"},{"annotation":[{"start":[77,77],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[77,78]},[]],"tag":"TypeVar","contents":"a"}]}]},{"annotation":[{"start":[77,82],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[77,113]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[77,82],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[77,113]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[77,86],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[77,88]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[77,82],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[77,85]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[77,82],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[77,83]},[]],"tag":"TypeVar","contents":"f"},{"annotation":[{"start":[77,84],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[77,85]},[]],"tag":"TypeVar","contents":"b"}]}]},{"annotation":[{"start":[77,89],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[77,113]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[77,89],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[77,113]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[77,93],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[77,95]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[77,89],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[77,92]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[77,89],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[77,90]},[]],"tag":"TypeVar","contents":"f"},{"annotation":[{"start":[77,91],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[77,92]},[]],"tag":"TypeVar","contents":"c"}]}]},{"annotation":[{"start":[77,96],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[77,113]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[77,96],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[77,113]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[77,100],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[77,102]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[77,96],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[77,99]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[77,96],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[77,97]},[]],"tag":"TypeVar","contents":"f"},{"annotation":[{"start":[77,98],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[77,99]},[]],"tag":"TypeVar","contents":"d"}]}]},{"annotation":[{"start":[77,103],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[77,113]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[77,103],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[77,113]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[77,107],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[77,109]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[77,103],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[77,106]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[77,103],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[77,104]},[]],"tag":"TypeVar","contents":"f"},{"annotation":[{"start":[77,105],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[77,106]},[]],"tag":"TypeVar","contents":"e"}]}]},{"annotation":[{"start":[77,110],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[77,113]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[77,110],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[77,111]},[]],"tag":"TypeVar","contents":"f"},{"annotation":[{"start":[77,112],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[77,113]},[]],"tag":"TypeVar","contents":"g"}]}]}]}]}]}]}]}]},61]},62]},63]},64]},65]},66]},67]}}},{"EDInstance":{"edInstanceClassName":[["Control","Apply"],"Apply"],"edInstanceName":{"Ident":"applyFn"},"edInstanceTypes":[{"annotation":[{"start":[40,28],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[40,34]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[40,28],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[40,32]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[40,33],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[40,34]},[]],"tag":"TypeVar","contents":"r"}]}],"edInstanceConstraints":[],"edInstanceChain":[[["Control","Apply"],{"Ident":"applyFn"}]],"edInstanceChainIndex":0}},{"EDInstance":{"edInstanceClassName":[["Control","Apply"],"Apply"],"edInstanceName":{"Ident":"applyArray"},"edInstanceTypes":[{"annotation":[{"start":[43,30],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[43,35]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Array"]}],"edInstanceConstraints":[],"edInstanceChain":[[["Control","Apply"],{"Ident":"applyArray"}]],"edInstanceChainIndex":0}}],"efSourceSpan":{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Control/Apply.purs","end":[78,52]}} \ No newline at end of file
diff --git a/tests/purs/publish/basic-example/output/Control.Biapplicative/docs.json b/tests/purs/publish/basic-example/output/Control.Biapplicative/docs.json
deleted file mode 100644
index dbe047e..0000000
--- a/tests/purs/publish/basic-example/output/Control.Biapplicative/docs.json
+++ /dev/null
@@ -1 +0,0 @@
-{"reExports":[],"name":"Control.Biapplicative","comments":null,"declarations":[{"children":[{"comments":null,"title":"bipure","info":{"declType":"typeClassMember","type":{"annotation":[],"tag":"ForAll","contents":["b",{"annotation":[],"tag":"ForAll","contents":["a",{"annotation":[],"tag":"TypeApp","contents":[{"annotation":[],"tag":"TypeApp","contents":[{"annotation":[],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[],"tag":"TypeVar","contents":"a"}]},{"annotation":[],"tag":"TypeApp","contents":[{"annotation":[],"tag":"TypeApp","contents":[{"annotation":[],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[],"tag":"TypeVar","contents":"b"}]},{"annotation":[],"tag":"TypeApp","contents":[{"annotation":[],"tag":"TypeApp","contents":[{"annotation":[],"tag":"TypeVar","contents":"w"},{"annotation":[],"tag":"TypeVar","contents":"a"}]},{"annotation":[],"tag":"TypeVar","contents":"b"}]}]}]},null]},null]}},"sourceSpan":{"start":[8,3],"name":"../../../support/bower_components/purescript-bifunctors/src/Control/Biapplicative.purs","end":[8,40]}}],"comments":"`Biapplicative` captures type constructors of two arguments which support lifting of\nfunctions of zero or more arguments, in the sense of `Applicative`.\n","title":"Biapplicative","info":{"fundeps":[],"arguments":[["w",null]],"declType":"typeClass","superclasses":[{"constraintAnn":[],"constraintClass":[["Control","Biapply"],"Biapply"],"constraintArgs":[{"annotation":[],"tag":"TypeVar","contents":"w"}],"constraintData":null}]},"sourceSpan":{"start":[7,1],"name":"../../../support/bower_components/purescript-bifunctors/src/Control/Biapplicative.purs","end":[8,40]}}]} \ No newline at end of file
diff --git a/tests/purs/publish/basic-example/output/Control.Biapplicative/externs.json b/tests/purs/publish/basic-example/output/Control.Biapplicative/externs.json
deleted file mode 100644
index dd3d382..0000000
--- a/tests/purs/publish/basic-example/output/Control.Biapplicative/externs.json
+++ /dev/null
@@ -1 +0,0 @@
-{"efVersion":"0.12.5","efModuleName":["Control","Biapplicative"],"efExports":[{"ValueRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-bifunctors/src/Control/Biapplicative.purs","end":[8,40]},{"Ident":"bipure"}]},{"TypeClassRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-bifunctors/src/Control/Biapplicative.purs","end":[8,40]},"Biapplicative"]}],"efImports":[{"eiModule":["Prim"],"eiImportType":{"Implicit":[]},"eiImportedAs":["Prim"]},{"eiModule":["Prim"],"eiImportType":{"Implicit":[]},"eiImportedAs":null},{"eiModule":["Control","Biapply"],"eiImportType":{"Explicit":[{"TypeClassRef":[{"start":[3,25],"name":"../../../support/bower_components/purescript-bifunctors/src/Control/Biapplicative.purs","end":[3,38]},"Biapply"]}]},"eiImportedAs":null}],"efFixities":[],"efTypeFixities":[],"efDeclarations":[{"EDValue":{"edValueName":{"Ident":"bipure"},"edValueType":{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"ForAll","contents":["w",{"annotation":[{"start":[8,13],"name":"../../../support/bower_components/purescript-bifunctors/src/Control/Biapplicative.purs","end":[8,40]},[]],"tag":"ForAll","contents":["b",{"annotation":[{"start":[8,20],"name":"../../../support/bower_components/purescript-bifunctors/src/Control/Biapplicative.purs","end":[8,40]},[]],"tag":"ForAll","contents":["a",{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"ConstrainedType","contents":[{"constraintAnn":[{"start":[0,0],"name":"","end":[0,0]},[]],"constraintClass":[["Control","Biapplicative"],"Biapplicative"],"constraintArgs":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeVar","contents":"w"}],"constraintData":null},{"annotation":[{"start":[8,25],"name":"../../../support/bower_components/purescript-bifunctors/src/Control/Biapplicative.purs","end":[8,40]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[8,25],"name":"../../../support/bower_components/purescript-bifunctors/src/Control/Biapplicative.purs","end":[8,40]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[8,27],"name":"../../../support/bower_components/purescript-bifunctors/src/Control/Biapplicative.purs","end":[8,29]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[8,25],"name":"../../../support/bower_components/purescript-bifunctors/src/Control/Biapplicative.purs","end":[8,26]},[]],"tag":"TypeVar","contents":"a"}]},{"annotation":[{"start":[8,30],"name":"../../../support/bower_components/purescript-bifunctors/src/Control/Biapplicative.purs","end":[8,40]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[8,30],"name":"../../../support/bower_components/purescript-bifunctors/src/Control/Biapplicative.purs","end":[8,40]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[8,32],"name":"../../../support/bower_components/purescript-bifunctors/src/Control/Biapplicative.purs","end":[8,34]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[8,30],"name":"../../../support/bower_components/purescript-bifunctors/src/Control/Biapplicative.purs","end":[8,31]},[]],"tag":"TypeVar","contents":"b"}]},{"annotation":[{"start":[8,35],"name":"../../../support/bower_components/purescript-bifunctors/src/Control/Biapplicative.purs","end":[8,40]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[8,35],"name":"../../../support/bower_components/purescript-bifunctors/src/Control/Biapplicative.purs","end":[8,38]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[8,35],"name":"../../../support/bower_components/purescript-bifunctors/src/Control/Biapplicative.purs","end":[8,36]},[]],"tag":"TypeVar","contents":"w"},{"annotation":[{"start":[8,37],"name":"../../../support/b