summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorhdgarrood <>2020-05-23 21:19:00 (GMT)
committerhdiff <hdiff@hdiff.luite.com>2020-05-23 21:19:00 (GMT)
commit9b6ffebd89f34156e28483d7c2a77e446f8f48db (patch)
treec8a1ef557cc8edd857f2b2f84acf3a5e282f9d81
parent27a66e51ef65d927736c86e64f820e93fd6b3c65 (diff)
version 0.13.8HEAD0.13.8master
-rw-r--r--LICENSE273
-rw-r--r--app/Command/Graph.hs101
-rw-r--r--app/Command/Ide.hs71
-rw-r--r--app/Main.hs4
-rw-r--r--purescript.cabal139
-rw-r--r--src/Language/PureScript.hs1
-rw-r--r--src/Language/PureScript/AST/Declarations.hs11
-rw-r--r--src/Language/PureScript/AST/Operators.hs3
-rw-r--r--src/Language/PureScript/AST/SourcePos.hs10
-rw-r--r--src/Language/PureScript/CST/Convert.hs2
-rw-r--r--src/Language/PureScript/CST/Utils.hs4
-rw-r--r--src/Language/PureScript/CodeGen/JS.hs6
-rw-r--r--src/Language/PureScript/CodeGen/JS/Common.hs4
-rw-r--r--src/Language/PureScript/Comments.hs2
-rw-r--r--src/Language/PureScript/Constants.hs18
-rw-r--r--src/Language/PureScript/CoreFn/Desugar.hs2
-rw-r--r--src/Language/PureScript/CoreFn/FromJSON.hs18
-rw-r--r--src/Language/PureScript/CoreFn/ToJSON.hs2
-rw-r--r--src/Language/PureScript/Docs/Types.hs11
-rw-r--r--src/Language/PureScript/Environment.hs16
-rw-r--r--src/Language/PureScript/Externs.hs34
-rw-r--r--src/Language/PureScript/Graph.hs57
-rw-r--r--src/Language/PureScript/Hierarchy.hs4
-rw-r--r--src/Language/PureScript/Ide.hs12
-rw-r--r--src/Language/PureScript/Ide/Externs.hs45
-rw-r--r--src/Language/PureScript/Ide/Prim.hs10
-rw-r--r--src/Language/PureScript/Ide/Rebuild.hs117
-rw-r--r--src/Language/PureScript/Ide/State.hs61
-rw-r--r--src/Language/PureScript/Ide/Types.hs176
-rw-r--r--src/Language/PureScript/Ide/Watcher.hs56
-rw-r--r--src/Language/PureScript/Interactive.hs4
-rw-r--r--src/Language/PureScript/Interactive/Module.hs16
-rw-r--r--src/Language/PureScript/Interactive/Types.hs4
-rw-r--r--src/Language/PureScript/Kinds.hs2
-rw-r--r--src/Language/PureScript/Label.hs2
-rw-r--r--src/Language/PureScript/Linter/Imports.hs2
-rw-r--r--src/Language/PureScript/Make.hs2
-rw-r--r--src/Language/PureScript/Make/Actions.hs42
-rw-r--r--src/Language/PureScript/Make/BuildPlan.hs5
-rw-r--r--src/Language/PureScript/Make/Cache.hs27
-rw-r--r--src/Language/PureScript/Make/Monad.hs72
-rw-r--r--src/Language/PureScript/Names.hs32
-rw-r--r--src/Language/PureScript/PSString.hs2
-rw-r--r--src/Language/PureScript/Publish.hs7
-rw-r--r--src/Language/PureScript/Sugar/TypeClasses.hs2
-rwxr-xr-xsrc/Language/PureScript/Sugar/TypeClasses/Deriving.hs14
-rw-r--r--src/Language/PureScript/TypeChecker/Entailment.hs2
-rw-r--r--src/Language/PureScript/Types.hs5
-rw-r--r--stack.yaml2
-rw-r--r--tests/Language/PureScript/Ide/CompletionSpec.hs14
-rw-r--r--tests/Language/PureScript/Ide/RebuildSpec.hs5
-rw-r--r--tests/Language/PureScript/Ide/Test.hs5
-rw-r--r--tests/Main.hs3
-rw-r--r--tests/TestCoreFn.hs13
-rw-r--r--tests/TestGraph.hs39
-rw-r--r--tests/TestHierarchy.hs4
-rw-r--r--tests/purs/docs/output/Ado/externs.json1
-rw-r--r--tests/purs/docs/output/ChildDeclOrder/externs.json1
-rw-r--r--tests/purs/docs/output/Clash/externs.json1
-rw-r--r--tests/purs/docs/output/Clash1/externs.json1
-rw-r--r--tests/purs/docs/output/Clash1a/externs.json1
-rw-r--r--tests/purs/docs/output/Clash2/externs.json1
-rw-r--r--tests/purs/docs/output/Clash2a/externs.json1
-rw-r--r--tests/purs/docs/output/ConstrainedArgument/externs.json1
-rw-r--r--tests/purs/docs/output/Data.Newtype/externs.json1
-rw-r--r--tests/purs/docs/output/DeclOrder/externs.json1
-rw-r--r--tests/purs/docs/output/DeclOrderNoExportList/externs.json1
-rw-r--r--tests/purs/docs/output/Desugar/externs.json1
-rw-r--r--tests/purs/docs/output/DocComments/externs.json1
-rw-r--r--tests/purs/docs/output/DocCommentsClassMethod/externs.json1
-rw-r--r--tests/purs/docs/output/DocCommentsDataConstructor/externs.json1
-rw-r--r--tests/purs/docs/output/DuplicateNames/externs.json1
-rw-r--r--tests/purs/docs/output/Example/externs.json1
-rw-r--r--tests/purs/docs/output/Example2/externs.json1
-rw-r--r--tests/purs/docs/output/ExplicitExport/externs.json1
-rw-r--r--tests/purs/docs/output/ExplicitTypeSignatures/externs.json1
-rw-r--r--tests/purs/docs/output/ImportedTwice/externs.json1
-rw-r--r--tests/purs/docs/output/ImportedTwiceA/externs.json1
-rw-r--r--tests/purs/docs/output/ImportedTwiceB/externs.json1
-rw-r--r--tests/purs/docs/output/MultiVirtual/externs.json1
-rw-r--r--tests/purs/docs/output/MultiVirtual1/externs.json1
-rw-r--r--tests/purs/docs/output/MultiVirtual2/externs.json1
-rw-r--r--tests/purs/docs/output/MultiVirtual3/externs.json1
-rw-r--r--tests/purs/docs/output/NewOperators/externs.json1
-rw-r--r--tests/purs/docs/output/NewOperators2/externs.json1
-rw-r--r--tests/purs/docs/output/NotAllCtors/externs.json1
-rw-r--r--tests/purs/docs/output/Prelude/externs.json1
-rw-r--r--tests/purs/docs/output/Prim.Boolean/docs.json1
-rw-r--r--tests/purs/docs/output/Prim.Ordering/docs.json1
-rw-r--r--tests/purs/docs/output/Prim.Row/docs.json1
-rw-r--r--tests/purs/docs/output/Prim.RowList/docs.json1
-rw-r--r--tests/purs/docs/output/Prim.Symbol/docs.json1
-rw-r--r--tests/purs/docs/output/Prim.TypeError/docs.json1
-rw-r--r--tests/purs/docs/output/Prim/docs.json1
-rw-r--r--tests/purs/docs/output/PrimSubmodules/externs.json1
-rw-r--r--tests/purs/docs/output/ReExportedTypeClass/externs.json1
-rw-r--r--tests/purs/docs/output/SolitaryTypeClassMember/externs.json1
-rw-r--r--tests/purs/docs/output/SomeTypeClass/externs.json1
-rw-r--r--tests/purs/docs/output/Transitive1/externs.json1
-rw-r--r--tests/purs/docs/output/Transitive2/externs.json1
-rw-r--r--tests/purs/docs/output/Transitive3/externs.json1
-rw-r--r--tests/purs/docs/output/TypeClassWithFunDeps/externs.json1
-rw-r--r--tests/purs/docs/output/TypeClassWithoutMembers/externs.json1
-rw-r--r--tests/purs/docs/output/TypeClassWithoutMembersIntermediate/externs.json1
-rw-r--r--tests/purs/docs/output/TypeLevelString/externs.json1
-rw-r--r--tests/purs/docs/output/TypeOpAliases/externs.json1
-rw-r--r--tests/purs/docs/output/TypeSynonym/externs.json1
-rw-r--r--tests/purs/docs/output/TypeSynonymInstance/externs.json1
-rw-r--r--tests/purs/docs/output/UTF8/externs.json1
-rw-r--r--tests/purs/docs/output/Virtual/externs.json1
-rw-r--r--tests/purs/docs/output/cache-db.json2
-rw-r--r--tests/purs/graph/graph.json1
-rw-r--r--tests/purs/graph/src/Module.purs9
-rw-r--r--tests/purs/graph/src/Module2.purs4
-rw-r--r--tests/purs/graph/src/ModuleFailing.purs5
-rw-r--r--tests/purs/publish/basic-example/output/Control.Applicative/externs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Control.Apply/externs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Control.Bind/externs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Control.Category/externs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Control.Monad/externs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Control.Semigroupoid/externs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Data.Boolean/externs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Data.BooleanAlgebra/externs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Data.Bounded/externs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Data.CommutativeRing/externs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Data.DivisionRing/externs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Data.Eq/externs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Data.EuclideanRing/externs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Data.Field/externs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Data.Function/externs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Data.Functor/externs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Data.HeytingAlgebra/externs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Data.Monoid.Additive/externs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Data.Monoid.Conj/externs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Data.Monoid.Disj/externs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Data.Monoid.Dual/externs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Data.Monoid.Endo/externs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Data.Monoid.Multiplicative/externs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Data.Monoid/externs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Data.NaturalTransformation/externs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Data.Newtype/externs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Data.Ord.Unsafe/externs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Data.Ord/externs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Data.Ordering/externs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Data.Ring/externs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Data.Semigroup.First/externs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Data.Semigroup.Last/externs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Data.Semigroup/externs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Data.Semiring/externs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Data.Show/externs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Data.Symbol/externs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Data.Unit/externs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Data.Void/externs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Effect.Class.Console/externs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Effect.Class/externs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Effect.Console/externs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Effect.Uncurried/externs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Effect.Unsafe/externs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Effect/externs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Main/externs.json1
-rw-r--r--tests/purs/publish/basic-example/output/PSCI.Support/externs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Prelude/externs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Prim.Boolean/docs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Prim.Ordering/docs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Prim.Row/docs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Prim.RowList/docs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Prim.Symbol/docs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Prim.TypeError/docs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Prim/docs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Record.Unsafe/externs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Type.Data.Row/externs.json1
-rw-r--r--tests/purs/publish/basic-example/output/Type.Data.RowList/externs.json1
-rw-r--r--tests/purs/publish/basic-example/output/cache-db.json2
-rw-r--r--tests/support/package-lock.json18
-rw-r--r--tests/support/pscide/src/CompletionSpecDocs.purs7
175 files changed, 1096 insertions, 660 deletions
diff --git a/LICENSE b/LICENSE
index 52d6ce7..0c3e490 100644
--- a/LICENSE
+++ b/LICENSE
@@ -47,7 +47,7 @@ PureScript uses the following Haskell library packages. Their license files foll
bytestring-builder
cabal-doctest
case-insensitive
- cereal
+ cborg
cheapskate
clock
colour
@@ -72,6 +72,7 @@ PureScript uses the following Haskell library packages. Their license files foll
dlist
easy-file
edit-distance
+ enclosed-exceptions
entropy
exceptions
fast-logger
@@ -80,10 +81,11 @@ PureScript uses the following Haskell library packages. Their license files foll
fsnotify
ghc-boot-th
ghc-prim
+ half
happy
hashable
haskeline
- hfsevents
+ hinotify
http-date
http-types
http2
@@ -129,6 +131,8 @@ PureScript uses the following Haskell library packages. Their license files foll
semialign
semigroupoids
semigroups
+ serialise
+ shelly
simple-sendfile
sourcemap
split
@@ -137,6 +141,8 @@ PureScript uses the following Haskell library packages. Their license files foll
streaming-commons
stringsearch
syb
+ system-fileio
+ system-filepath
tagged
tagsoup
template-haskell
@@ -1292,38 +1298,41 @@ case-insensitive LICENSE file:
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-cereal LICENSE file:
+cborg LICENSE file:
- Copyright (c) Lennart Kolmodin, Galois, Inc.
+ Copyright (c) 2015-2017 Duncan Coutts,
+ 2015-2017 Well-Typed LLP,
+ 2015 IRIS Connect Ltd.
All rights reserved.
Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
+ modification, are permitted provided that the following conditions are
+ met:
- 1. Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
- 2. Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
+ * Redistributions in binary form must reproduce the above
+ copyright notice, this list of conditions and the following
+ disclaimer in the documentation and/or other materials provided
+ with the distribution.
- 3. Neither the name of the author nor the names of his contributors
- may be used to endorse or promote products derived from this software
- without specific prior written permission.
+ * Neither the name of Duncan Coutts nor the names of other
+ contributors may be used to endorse or promote products derived
+ from this software without specific prior written permission.
- THIS SOFTWARE IS PROVIDED BY THE CONTRIBUTORS ``AS IS'' AND ANY EXPRESS
- OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- DISCLAIMED. IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE LIABLE FOR
- ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
- STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
- ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- POSSIBILITY OF SUCH DAMAGE.
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
cheapskate LICENSE file:
@@ -2051,6 +2060,29 @@ edit-distance LICENSE file:
IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+enclosed-exceptions LICENSE file:
+
+ Copyright (c) 2012 Michael Snoyman, http://www.yesodweb.com/
+
+ Permission is hereby granted, free of charge, to any person obtaining
+ a copy of this software and associated documentation files (the
+ "Software"), to deal in the Software without restriction, including
+ without limitation the rights to use, copy, modify, merge, publish,
+ distribute, sublicense, and/or sell copies of the Software, and to
+ permit persons to whom the Software is furnished to do so, subject to
+ the following conditions:
+
+ The above copyright notice and this permission notice shall be
+ included in all copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
entropy LICENSE file:
Copyright (c) Thomas DuBuisson
@@ -2343,6 +2375,35 @@ ghc-prim LICENSE file:
be a definition of the Haskell 98 Language.
+half LICENSE file:
+
+ Copyright 2014 Edward Kmett
+
+ All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions
+ are met:
+
+ 1. Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+
+ THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``AS IS'' AND ANY EXPRESS OR
+ IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ DISCLAIMED. IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE LIABLE FOR
+ ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+ STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ POSSIBILITY OF SUCH DAMAGE.
+
happy LICENSE file:
The Happy License
@@ -2435,38 +2496,38 @@ haskeline LICENSE file:
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-hfsevents LICENSE file:
+hinotify LICENSE file:
- Copyright (c) 2012, Luite Stegeman
+ Copyright (c) Lennart Kolmodin
All rights reserved.
Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions are met:
+ modification, are permitted provided that the following conditions
+ are met:
- * Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
+ 1. Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above
- copyright notice, this list of conditions and the following
- disclaimer in the documentation and/or other materials provided
- with the distribution.
+ 2. Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
- * Neither the name of Luite Stegeman nor the names of other
- contributors may be used to endorse or promote products derived
- from this software without specific prior written permission.
+ 3. Neither the name of the author nor the names of his contributors
+ may be used to endorse or promote products derived from this software
+ without specific prior written permission.
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ THIS SOFTWARE IS PROVIDED BY THE CONTRIBUTORS ``AS IS'' AND ANY EXPRESS
+ OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ DISCLAIMED. IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE LIABLE FOR
+ ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+ STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ POSSIBILITY OF SUCH DAMAGE.
http-date LICENSE file:
@@ -3954,6 +4015,72 @@ semigroups LICENSE file:
ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
POSSIBILITY OF SUCH DAMAGE.
+serialise LICENSE file:
+
+ Copyright (c) 2017, Duncan Coutts
+
+ All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+
+ * Redistributions in binary form must reproduce the above
+ copyright notice, this list of conditions and the following
+ disclaimer in the documentation and/or other materials provided
+ with the distribution.
+
+ * Neither the name of Duncan Coutts nor the names of other
+ contributors may be used to endorse or promote products derived
+ from this software without specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+shelly LICENSE file:
+
+ Copyright (c) 2017, Petr Rockai <me@mornfall.net>
+
+ All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+
+ * Redistributions in binary form must reproduce the above
+ copyright notice, this list of conditions and the following
+ disclaimer in the documentation and/or other materials provided
+ with the distribution.
+
+ * Neither the name of Petr Rockai nor the names of other
+ contributors may be used to endorse or promote products derived
+ from this software without specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
simple-sendfile LICENSE file:
Copyright (c) 2009, IIJ Innovation Institute Inc.
@@ -4264,6 +4391,56 @@ syb LICENSE file:
-----------------------------------------------------------------------------
+system-fileio LICENSE file:
+
+ Copyright (c) 2011 John Millikin
+
+ Permission is hereby granted, free of charge, to any person
+ obtaining a copy of this software and associated documentation
+ files (the "Software"), to deal in the Software without
+ restriction, including without limitation the rights to use,
+ copy, modify, merge, publish, distribute, sublicense, and/or sell
+ copies of the Software, and to permit persons to whom the
+ Software is furnished to do so, subject to the following
+ conditions:
+
+ The above copyright notice and this permission notice shall be
+ included in all copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+ OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+ HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+ WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+ OTHER DEALINGS IN THE SOFTWARE.
+
+system-filepath LICENSE file:
+
+ Copyright (c) 2010 John Millikin
+
+ Permission is hereby granted, free of charge, to any person
+ obtaining a copy of this software and associated documentation
+ files (the "Software"), to deal in the Software without
+ restriction, including without limitation the rights to use,
+ copy, modify, merge, publish, distribute, sublicense, and/or sell
+ copies of the Software, and to permit persons to whom the
+ Software is furnished to do so, subject to the following
+ conditions:
+
+ The above copyright notice and this permission notice shall be
+ included in all copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+ OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+ HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+ WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+ OTHER DEALINGS IN THE SOFTWARE.
+
tagged LICENSE file:
Copyright (c) 2009-2015 Edward Kmett
diff --git a/app/Command/Graph.hs b/app/Command/Graph.hs
new file mode 100644
index 0000000..b1bf505
--- /dev/null
+++ b/app/Command/Graph.hs
@@ -0,0 +1,101 @@
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE TupleSections #-}
+
+module Command.Graph (command) where
+
+import Control.Applicative (many)
+import Control.Monad (unless, when)
+import qualified Data.Aeson as Json
+import Data.Bool (bool)
+import qualified Data.ByteString.Lazy as LB
+import qualified Data.ByteString.Lazy.UTF8 as LBU8
+import qualified Language.PureScript as P
+import Language.PureScript.Errors.JSON
+import qualified Options.Applicative as Opts
+import qualified System.Console.ANSI as ANSI
+import System.Exit (exitFailure)
+import System.Directory (getCurrentDirectory)
+import System.FilePath.Glob (glob)
+import System.IO (hPutStr, hPutStrLn, stderr)
+
+data GraphOptions = GraphOptions
+ { graphInput :: [FilePath]
+ , graphJSONErrors :: Bool
+ }
+
+graph :: GraphOptions -> IO ()
+graph GraphOptions{..} = do
+ input <- globWarningOnMisses (unless graphJSONErrors . warnFileTypeNotFound) graphInput
+ when (null input && not graphJSONErrors) $ do
+ hPutStr stderr $ unlines
+ [ "purs graph: No input files."
+ , "Usage: For basic information, try the `--help' option."
+ ]
+ exitFailure
+
+ (makeResult, makeWarnings) <- P.graph input
+
+ printWarningsAndErrors graphJSONErrors makeWarnings makeResult
+ >>= (LB.putStr . Json.encode)
+
+ where
+ warnFileTypeNotFound :: String -> IO ()
+ warnFileTypeNotFound =
+ hPutStrLn stderr . ("purs graph: No files found using pattern: " <>)
+
+
+command :: Opts.Parser (IO ())
+command = graph <$> (Opts.helper <*> graphOptions)
+ where
+ graphOptions :: Opts.Parser GraphOptions
+ graphOptions =
+ GraphOptions <$> many inputFile
+ <*> jsonErrors
+
+ inputFile :: Opts.Parser FilePath
+ inputFile =
+ Opts.strArgument $
+ Opts.metavar "FILE" <>
+ Opts.help "The input .purs file(s)."
+
+ jsonErrors :: Opts.Parser Bool
+ jsonErrors =
+ Opts.switch $
+ Opts.long "json-errors" <>
+ Opts.help "Print errors to stderr as JSON"
+
+-- | Arguments: use JSON, warnings, errors
+printWarningsAndErrors :: Bool -> P.MultipleErrors -> Either P.MultipleErrors a -> IO a
+printWarningsAndErrors False warnings errors = do
+ pwd <- getCurrentDirectory
+ cc <- bool Nothing (Just P.defaultCodeColor) <$> ANSI.hSupportsANSI stderr
+ let ppeOpts = P.defaultPPEOptions { P.ppeCodeColor = cc, P.ppeFull = True, P.ppeRelativeDirectory = pwd }
+ when (P.nonEmpty warnings) $
+ hPutStrLn stderr (P.prettyPrintMultipleWarnings ppeOpts warnings)
+ case errors of
+ Left errs -> do
+ hPutStrLn stderr (P.prettyPrintMultipleErrors ppeOpts errs)
+ exitFailure
+ Right res -> pure res
+printWarningsAndErrors True warnings errors = do
+ let verbose = True
+ hPutStrLn stderr . LBU8.toString . Json.encode $
+ JSONResult (toJSONErrors verbose P.Warning warnings)
+ (either (toJSONErrors verbose P.Error) (const []) errors)
+ case errors of
+ Left _errs -> exitFailure
+ Right res -> pure res
+
+
+globWarningOnMisses :: (String -> IO ()) -> [FilePath] -> IO [FilePath]
+globWarningOnMisses warn = concatMapM globWithWarning
+ where
+ globWithWarning :: String -> IO [FilePath]
+ globWithWarning pattern' = do
+ paths <- glob pattern'
+ when (null paths) $ warn pattern'
+ return paths
+
+ concatMapM :: (a -> IO [b]) -> [a] -> IO [b]
+ concatMapM f = fmap concat . mapM f
diff --git a/app/Command/Ide.hs b/app/Command/Ide.hs
index 30adccc..4c50f5e 100644
--- a/app/Command/Ide.hs
+++ b/app/Command/Ide.hs
@@ -12,13 +12,14 @@
-- The server accepting commands for psc-ide
-----------------------------------------------------------------------------
-{-# LANGUAGE FlexibleContexts #-}
+{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE MultiParamTypeClasses #-}
-{-# LANGUAGE OverloadedStrings #-}
-{-# LANGUAGE PackageImports #-}
-{-# LANGUAGE RecordWildCards #-}
-{-# LANGUAGE TemplateHaskell #-}
-{-# LANGUAGE NoImplicitPrelude #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PackageImports #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE TemplateHaskell #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# LANGUAGE LambdaCase #-}
module Command.Ide (command) where
@@ -27,6 +28,7 @@ import Protolude
import qualified Data.Aeson as Aeson
import Control.Concurrent.STM
import "monad-logger" Control.Monad.Logger
+import Data.IORef
import qualified Data.Text.IO as T
import qualified Data.ByteString.Char8 as BS8
import qualified Data.ByteString.Lazy.Char8 as BSL8
@@ -35,12 +37,11 @@ import Language.PureScript.Ide
import Language.PureScript.Ide.Command
import Language.PureScript.Ide.Util
import Language.PureScript.Ide.Error
+import Language.PureScript.Ide.State (updateCacheTimestamp)
import Language.PureScript.Ide.Types
-import Language.PureScript.Ide.Watcher
import qualified Network.Socket as Network
import qualified Options.Applicative as Opts
import System.Directory
-import System.Info as SysInfo
import System.FilePath
import System.IO hiding (putStrLn, print)
import System.IO.Error (isEOFError)
@@ -66,10 +67,11 @@ data ServerOptions = ServerOptions
, _serverGlobs :: [FilePath]
, _serverOutputPath :: FilePath
, _serverPort :: Network.PortNumber
- , _serverNoWatch :: Bool
- , _serverPolling :: Bool
, _serverLoglevel :: IdeLogLevel
+ -- TODO(Christoph) Deprecated
, _serverEditorMode :: Bool
+ , _serverPolling :: Bool
+ , _serverNoWatch :: Bool
} deriving (Show)
data ClientOptions = ClientOptions
@@ -114,7 +116,7 @@ command = Opts.helper <*> subcommands where
Opts.option Opts.auto (Opts.long "port" `mappend` Opts.short 'p' `mappend` Opts.value (4242 :: Integer))
server :: ServerOptions -> IO ()
- server opts'@(ServerOptions dir globs outputPath port noWatch polling logLevel editorMode) = do
+ server opts'@(ServerOptions dir globs outputPath port logLevel editorMode polling noWatch) = do
when (logLevel == LogDebug || logLevel == LogAll)
(putText "Parsed Options:" *> print opts')
maybe (pure ()) setCurrentDirectory dir
@@ -122,20 +124,32 @@ command = Opts.helper <*> subcommands where
cwd <- getCurrentDirectory
let fullOutputPath = cwd </> outputPath
+ when editorMode
+ (putText "The --editor-mode flag is deprecated and ignored. It's now the default behaviour and the flag will be removed in a future version")
+
+ when polling
+ (putText "The --polling flag is deprecated and ignored. purs ide no longer uses a file system watcher, instead it relies on its clients to notify it about updates and checks timestamps to invalidate itself")
+
+ when noWatch
+ (putText "The --no-watch flag is deprecated and ignored. purs ide no longer uses a file system watcher, instead it relies on its clients to notify it about updates and checks timestamps to invalidate itself")
+
unlessM (doesDirectoryExist fullOutputPath) $ do
putText "Your output directory didn't exist. This usually means you didn't compile your project yet."
putText "psc-ide needs you to compile your project (for example by running pulp build)"
- unless (noWatch || editorMode) $
- void (forkFinally (watcher polling logLevel ideState fullOutputPath) print)
let
conf = IdeConfiguration
{ confLogLevel = logLevel
, confOutputPath = outputPath
, confGlobs = globs
- , confEditorMode = editorMode
}
- let env = IdeEnvironment {ideStateVar = ideState, ideConfiguration = conf}
+ ts <- newIORef Nothing
+ let
+ env = IdeEnvironment
+ { ideStateVar = ideState
+ , ideConfiguration = conf
+ , ideCacheDbTimestamp = ts
+ }
startServer port env
serverOptions :: Opts.Parser ServerOptions
@@ -146,13 +160,14 @@ command = Opts.helper <*> subcommands where
<*> Opts.strOption (Opts.long "output-directory" `mappend` Opts.value "output/")
<*> (fromIntegral <$>
Opts.option Opts.auto (Opts.long "port" `mappend` Opts.short 'p' `mappend` Opts.value (4242 :: Integer)))
- <*> Opts.switch (Opts.long "no-watch")
- <*> flipIfWindows (Opts.switch (Opts.long "polling"))
<*> (parseLogLevel <$> Opts.strOption
(Opts.long "log-level"
`mappend` Opts.value ""
`mappend` Opts.help "One of \"debug\", \"perf\", \"all\" or \"none\""))
+ -- TODO(Christoph): Deprecated
<*> Opts.switch (Opts.long "editor-mode")
+ <*> Opts.switch (Opts.long "no-watch")
+ <*> Opts.switch (Opts.long "polling")
parseLogLevel :: Text -> IdeLogLevel
parseLogLevel s = case s of
@@ -162,10 +177,6 @@ command = Opts.helper <*> subcommands where
"none" -> LogNone
_ -> LogDefault
- -- polling is the default on Windows and the flag turns it off. See
- -- #2209 and #2414 for explanations
- flipIfWindows = map (if SysInfo.os == "mingw32" then not else identity)
-
startServer :: Network.PortNumber -> IdeEnvironment -> IO ()
startServer port env = Network.withSocketsDo $ do
sock <- listenOnLocalhost port
@@ -185,7 +196,16 @@ startServer port env = Network.withSocketsDo $ do
<> " took "
<> displayTimeSpec duration
logPerf message $ do
- result <- runExceptT (handleCommand cmd')
+ result <- runExceptT $ do
+ updateCacheTimestamp >>= \case
+ Nothing -> pure ()
+ Just (before, after) -> do
+ -- If the cache db file was changed outside of the IDE
+ -- we trigger a reset before processing the command
+ $(logInfo) ("cachedb was changed from: " <> show before <> ", to: " <> show after)
+ unless (isLoadAll cmd') $
+ void (handleCommand Reset *> handleCommand (LoadSync []))
+ handleCommand cmd'
liftIO $ catchGoneHandle $ BSL8.hPutStrLn h $ case result of
Right r -> Aeson.encode r
Left err -> Aeson.encode err
@@ -197,11 +217,16 @@ startServer port env = Network.withSocketsDo $ do
hFlush stdout
liftIO $ catchGoneHandle (hClose h)
+isLoadAll :: Command -> Bool
+isLoadAll = \case
+ Load [] -> True
+ _ -> False
+
catchGoneHandle :: IO () -> IO ()
catchGoneHandle =
handle (\e -> case e of
IOError { ioe_type = ResourceVanished } ->
- putText ("[Error] psc-ide-server tried interact with the handle, but the connection was already gone.")
+ putText ("[Error] psc-ide-server tried to interact with the handle, but the connection was already gone.")
_ -> throwIO e)
acceptCommand
diff --git a/app/Main.hs b/app/Main.hs
index f3e72ab..4b5b7df 100644
--- a/app/Main.hs
+++ b/app/Main.hs
@@ -10,6 +10,7 @@ module Main where
import qualified Command.Bundle as Bundle
import qualified Command.Compile as Compile
import qualified Command.Docs as Docs
+import qualified Command.Graph as Graph
import qualified Command.Hierarchy as Hierarchy
import qualified Command.Ide as Ide
import qualified Command.Publish as Publish
@@ -69,6 +70,9 @@ main = do
, Opts.command "docs"
(Opts.info Docs.command
(Opts.progDesc "Generate documentation from PureScript source files in a variety of formats, including Markdown and HTML" <> Docs.infoModList))
+ , Opts.command "graph"
+ (Opts.info Graph.command
+ (Opts.progDesc "Module dependency graph"))
, Opts.command "hierarchy"
(Opts.info Hierarchy.command
(Opts.progDesc "Generate a GraphViz directed graph of PureScript type classes"))
diff --git a/purescript.cabal b/purescript.cabal
index 0724a0b..4137f58 100644
--- a/purescript.cabal
+++ b/purescript.cabal
@@ -1,6 +1,6 @@
cabal-version: 1.12
name: purescript
-version: 0.13.6
+version: 0.13.8
license: BSD3
license-file: LICENSE
copyright: (c) 2013-17 Phil Freeman, (c) 2014-19 Gary Burgess, (c) other contributors (see CONTRIBUTORS.md)
@@ -347,6 +347,9 @@ extra-source-files:
tests/purs/failing/UnusableTypeClassMethodConflictingIdent.purs
tests/purs/failing/UnusableTypeClassMethodSynonym.purs
tests/purs/failing/Whitespace1.purs
+ tests/purs/graph/src/Module.purs
+ tests/purs/graph/src/Module2.purs
+ tests/purs/graph/src/ModuleFailing.purs
tests/purs/layout/AdoIn.purs
tests/purs/layout/CaseGuards.purs
tests/purs/layout/CaseWhere.purs
@@ -747,203 +750,121 @@ extra-source-files:
tests/purs/warning/WildcardInferredType2.purs
tests/purs/docs/bower.json
tests/purs/docs/output/Ado/docs.json
- tests/purs/docs/output/Ado/externs.json
tests/purs/docs/output/cache-db.json
tests/purs/docs/output/ChildDeclOrder/docs.json
- tests/purs/docs/output/ChildDeclOrder/externs.json
tests/purs/docs/output/Clash/docs.json
- tests/purs/docs/output/Clash/externs.json
tests/purs/docs/output/Clash1/docs.json
- tests/purs/docs/output/Clash1/externs.json
tests/purs/docs/output/Clash1a/docs.json
- tests/purs/docs/output/Clash1a/externs.json
tests/purs/docs/output/Clash2/docs.json
- tests/purs/docs/output/Clash2/externs.json
tests/purs/docs/output/Clash2a/docs.json
- tests/purs/docs/output/Clash2a/externs.json
tests/purs/docs/output/ConstrainedArgument/docs.json
- tests/purs/docs/output/ConstrainedArgument/externs.json
tests/purs/docs/output/Data.Newtype/docs.json
- tests/purs/docs/output/Data.Newtype/externs.json
tests/purs/docs/output/DeclOrder/docs.json
- tests/purs/docs/output/DeclOrder/externs.json
tests/purs/docs/output/DeclOrderNoExportList/docs.json
- tests/purs/docs/output/DeclOrderNoExportList/externs.json
tests/purs/docs/output/Desugar/docs.json
- 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
- tests/purs/docs/output/Example/externs.json
tests/purs/docs/output/Example2/docs.json
- tests/purs/docs/output/Example2/externs.json
tests/purs/docs/output/ExplicitExport/docs.json
- tests/purs/docs/output/ExplicitExport/externs.json
tests/purs/docs/output/ExplicitTypeSignatures/docs.json
- tests/purs/docs/output/ExplicitTypeSignatures/externs.json
tests/purs/docs/output/ImportedTwice/docs.json
- tests/purs/docs/output/ImportedTwice/externs.json
tests/purs/docs/output/ImportedTwiceA/docs.json
- tests/purs/docs/output/ImportedTwiceA/externs.json
tests/purs/docs/output/ImportedTwiceB/docs.json
- tests/purs/docs/output/ImportedTwiceB/externs.json
tests/purs/docs/output/MultiVirtual/docs.json
- tests/purs/docs/output/MultiVirtual/externs.json
tests/purs/docs/output/MultiVirtual1/docs.json
- tests/purs/docs/output/MultiVirtual1/externs.json
tests/purs/docs/output/MultiVirtual2/docs.json
- tests/purs/docs/output/MultiVirtual2/externs.json
tests/purs/docs/output/MultiVirtual3/docs.json
- tests/purs/docs/output/MultiVirtual3/externs.json
tests/purs/docs/output/NewOperators/docs.json
- tests/purs/docs/output/NewOperators/externs.json
tests/purs/docs/output/NewOperators2/docs.json
- tests/purs/docs/output/NewOperators2/externs.json
tests/purs/docs/output/NotAllCtors/docs.json
- tests/purs/docs/output/NotAllCtors/externs.json
tests/purs/docs/output/Prelude/docs.json
- tests/purs/docs/output/Prelude/externs.json
+ tests/purs/docs/output/Prim.Boolean/docs.json
+ tests/purs/docs/output/Prim.Ordering/docs.json
+ tests/purs/docs/output/Prim.Row/docs.json
+ tests/purs/docs/output/Prim.RowList/docs.json
+ tests/purs/docs/output/Prim.Symbol/docs.json
+ tests/purs/docs/output/Prim.TypeError/docs.json
+ tests/purs/docs/output/Prim/docs.json
tests/purs/docs/output/PrimSubmodules/docs.json
- tests/purs/docs/output/PrimSubmodules/externs.json
tests/purs/docs/output/ReExportedTypeClass/docs.json
- tests/purs/docs/output/ReExportedTypeClass/externs.json
tests/purs/docs/output/SolitaryTypeClassMember/docs.json
- tests/purs/docs/output/SolitaryTypeClassMember/externs.json
tests/purs/docs/output/SomeTypeClass/docs.json
- tests/purs/docs/output/SomeTypeClass/externs.json
tests/purs/docs/output/Transitive1/docs.json
- tests/purs/docs/output/Transitive1/externs.json
tests/purs/docs/output/Transitive2/docs.json
- tests/purs/docs/output/Transitive2/externs.json
tests/purs/docs/output/Transitive3/docs.json
- tests/purs/docs/output/Transitive3/externs.json
tests/purs/docs/output/TypeClassWithFunDeps/docs.json
- tests/purs/docs/output/TypeClassWithFunDeps/externs.json
tests/purs/docs/output/TypeClassWithoutMembers/docs.json
- tests/purs/docs/output/TypeClassWithoutMembers/externs.json
tests/purs/docs/output/TypeClassWithoutMembersIntermediate/docs.json
- tests/purs/docs/output/TypeClassWithoutMembersIntermediate/externs.json
tests/purs/docs/output/TypeLevelString/docs.json
- tests/purs/docs/output/TypeLevelString/externs.json
tests/purs/docs/output/TypeOpAliases/docs.json
- tests/purs/docs/output/TypeOpAliases/externs.json
tests/purs/docs/output/TypeSynonym/docs.json
- tests/purs/docs/output/TypeSynonym/externs.json
tests/purs/docs/output/TypeSynonymInstance/docs.json
- tests/purs/docs/output/TypeSynonymInstance/externs.json
tests/purs/docs/output/UTF8/docs.json
- tests/purs/docs/output/UTF8/externs.json
tests/purs/docs/output/Virtual/docs.json
- tests/purs/docs/output/Virtual/externs.json
tests/purs/docs/resolutions.json
+ tests/purs/graph/graph.json
tests/purs/publish/basic-example/bower.json
tests/purs/publish/basic-example/output/cache-db.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.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.Monad/docs.json
- tests/purs/publish/basic-example/output/Control.Monad/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.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.CommutativeRing/docs.json
- tests/purs/publish/basic-example/output/Data.CommutativeRing/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.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.Function/docs.json
- tests/purs/publish/basic-example/output/Data.Function/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.HeytingAlgebra/docs.json
- tests/purs/publish/basic-example/output/Data.HeytingAlgebra/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
- tests/purs/publish/basic-example/output/Data.Monoid.Conj/externs.json
tests/purs/publish/basic-example/output/Data.Monoid.Disj/docs.json
- tests/purs/publish/basic-example/output/Data.Monoid.Disj/externs.json
tests/purs/publish/basic-example/output/Data.Monoid.Dual/docs.json
- tests/purs/publish/basic-example/output/Data.Monoid.Dual/externs.json
tests/purs/publish/basic-example/output/Data.Monoid.Endo/docs.json
- tests/purs/publish/basic-example/output/Data.Monoid.Endo/externs.json
tests/purs/publish/basic-example/output/Data.Monoid.Multiplicative/docs.json
- tests/purs/publish/basic-example/output/Data.Monoid.Multiplicative/externs.json
tests/purs/publish/basic-example/output/Data.Monoid/docs.json
- tests/purs/publish/basic-example/output/Data.Monoid/externs.json
tests/purs/publish/basic-example/output/Data.NaturalTransformation/docs.json
- 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.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
- tests/purs/publish/basic-example/output/Data.Ord/externs.json
tests/purs/publish/basic-example/output/Data.Ordering/docs.json
- tests/purs/publish/basic-example/output/Data.Ordering/externs.json
tests/purs/publish/basic-example/output/Data.Ring/docs.json
- 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.Last/docs.json
- tests/purs/publish/basic-example/output/Data.Semigroup.Last/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.Symbol/docs.json
- tests/purs/publish/basic-example/output/Data.Symbol/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
- tests/purs/publish/basic-example/output/Data.Void/externs.json
tests/purs/publish/basic-example/output/Effect.Class.Console/docs.json
- tests/purs/publish/basic-example/output/Effect.Class.Console/externs.json
tests/purs/publish/basic-example/output/Effect.Class/docs.json
- 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.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/Main/docs.json
- tests/purs/publish/basic-example/output/Main/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/Prim.Boolean/docs.json
+ tests/purs/publish/basic-example/output/Prim.Ordering/docs.json
+ tests/purs/publish/basic-example/output/Prim.Row/docs.json
+ tests/purs/publish/basic-example/output/Prim.RowList/docs.json
+ tests/purs/publish/basic-example/output/Prim.Symbol/docs.json
+ tests/purs/publish/basic-example/output/Prim.TypeError/docs.json
+ tests/purs/publish/basic-example/output/Prim/docs.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/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/resolutions-legacy.json
tests/purs/publish/basic-example/resolutions.json
tests/json-compat/v0.11.3/generics-4.0.0.json
@@ -1065,6 +986,7 @@ library
Language.PureScript.Errors
Language.PureScript.Errors.JSON
Language.PureScript.Externs
+ Language.PureScript.Graph
Language.PureScript.Hierarchy
Language.PureScript.Ide
Language.PureScript.Ide.CaseSplit
@@ -1085,7 +1007,6 @@ library
Language.PureScript.Ide.Types
Language.PureScript.Ide.Usage
Language.PureScript.Ide.Util
- Language.PureScript.Ide.Watcher
Language.PureScript.Interactive
Language.PureScript.Interactive.Completion
Language.PureScript.Interactive.Directive
@@ -1166,7 +1087,7 @@ library
ScopedTypeVariables TupleSections ViewPatterns
ghc-options: -Wall -O2
build-depends:
- Cabal >=2.2 && <2.5,
+ Cabal >=2.2 && <3.0,
Glob ==0.9.*,
aeson >=1.0 && <1.5,
aeson-better-errors >=0.8 && <0.10,
@@ -1179,6 +1100,7 @@ library
bower-json >=1.0.0.1 && <1.1,
boxes >=0.1.4 && <0.2.0,
bytestring <0.11,
+ cborg <0.3,
cheapskate ==0.1.*,
clock <0.8,
containers <0.7,
@@ -1191,7 +1113,7 @@ library
file-embed <0.1,
filepath <1.5,
fsnotify >=0.2.1 && <0.4,
- haskeline >=0.7.0.0 && <0.8,
+ haskeline >=0.7.0.0 && <0.8.0.0,
language-javascript >=0.7.0.0 && <0.8,
lifted-async >=0.10.0.3 && <0.10.1,
lifted-base ==0.2.3.*,
@@ -1210,6 +1132,7 @@ library
scientific >=0.3.4.9 && <0.4,
semialign >=1 && <1.1,
semigroups >=0.16.2 && <0.19,
+ serialise <0.3,
sourcemap >=0.1.6 && <0.2,
split <0.3,
stm >=0.2.4.0 && <2.6,
@@ -1235,6 +1158,7 @@ executable purs
Command.Docs
Command.Docs.Html
Command.Docs.Markdown
+ Command.Graph
Command.Hierarchy
Command.Ide
Command.Publish
@@ -1245,7 +1169,7 @@ executable purs
ghc-options: -Wall -O2 -fno-warn-unused-do-bind -threaded -rtsopts
-with-rtsopts=-N
build-depends:
- Cabal >=2.2 && <2.5,
+ Cabal >=2.2 && <3.0,
Glob ==0.9.*,
aeson >=1.0 && <1.5,
aeson-better-errors >=0.8 && <0.10,
@@ -1259,6 +1183,7 @@ executable purs
bower-json >=1.0.0.1 && <1.1,
boxes >=0.1.4 && <0.2.0,
bytestring <0.11,
+ cborg <0.3,
cheapskate ==0.1.*,
clock <0.8,
containers <0.7,
@@ -1271,7 +1196,7 @@ executable purs
file-embed <0.1,
filepath <1.5,
fsnotify >=0.2.1 && <0.4,
- haskeline >=0.7.0.0 && <0.8,
+ haskeline >=0.7.0.0 && <0.8.0.0,
http-types <0.13,
language-javascript >=0.7.0.0 && <0.8,
lifted-async >=0.10.0.3 && <0.10.1,
@@ -1294,6 +1219,7 @@ executable purs
scientific >=0.3.4.9 && <0.4,
semialign >=1 && <1.1,
semigroups >=0.16.2 && <0.19,
+ serialise <0.3,
sourcemap >=0.1.6 && <0.2,
split <0.3,
stm >=0.2.4.0 && <2.6,
@@ -1341,6 +1267,7 @@ test-suite tests
TestCoreFn
TestCst
TestDocs
+ TestGraph
TestHierarchy
TestIde
TestMake
@@ -1357,7 +1284,7 @@ test-suite tests
default-extensions: NoImplicitPrelude LambdaCase OverloadedStrings
ghc-options: -Wall
build-depends:
- Cabal >=2.2 && <2.5,
+ Cabal >=2.2 && <3.0,
Glob ==0.9.*,
HUnit <1.7,
aeson >=1.0 && <1.5,
@@ -1371,6 +1298,7 @@ test-suite tests
bower-json >=1.0.0.1 && <1.1,
boxes >=0.1.4 && <0.2.0,
bytestring <0.11,
+ cborg <0.3,
cheapskate ==0.1.*,
clock <0.8,
containers <0.7,
@@ -1383,7 +1311,7 @@ test-suite tests
file-embed <0.1,
filepath <1.5,
fsnotify >=0.2.1 && <0.4,
- haskeline >=0.7.0.0 && <0.8,
+ haskeline >=0.7.0.0 && <0.8.0.0,
hspec <2.7,
hspec-discover <2.7,
language-javascript >=0.7.0.0 && <0.8,
@@ -1405,6 +1333,7 @@ test-suite tests
scientific >=0.3.4.9 && <0.4,
semialign >=1 && <1.1,
semigroups >=0.16.2 && <0.19,
+ serialise <0.3,
sourcemap >=0.1.6 && <0.2,
split <0.3,
stm >=0.2.4.0 && <2.6,
diff --git a/src/Language/PureScript.hs b/src/Language/PureScript.hs
index eeb0ebd..40c843e 100644
--- a/src/Language/PureScript.hs
+++ b/src/Language/PureScript.hs
@@ -17,6 +17,7 @@ import Language.PureScript.Crash as P
import Language.PureScript.Environment as P
import Language.PureScript.Errors as P hiding (indent)
import Language.PureScript.Externs as P
+import Language.PureScript.Graph as P
import Language.PureScript.Kinds as P
import Language.PureScript.Linter as P
import Language.PureScript.Make as P
diff --git a/src/Language/PureScript/AST/Declarations.hs b/src/Language/PureScript/AST/Declarations.hs
index e4f6d0e..63ef0af 100644
--- a/src/Language/PureScript/AST/Declarations.hs
+++ b/src/Language/PureScript/AST/Declarations.hs
@@ -11,6 +11,7 @@ module Language.PureScript.AST.Declarations where
import Prelude.Compat
+import Codec.Serialise (Serialise)
import Control.DeepSeq (NFData)
import Control.Monad.Identity
@@ -310,7 +311,7 @@ data DeclarationRef
-- elaboration in name desugaring.
--
| ReExportRef SourceSpan ExportSource DeclarationRef
- deriving (Show, Generic, NFData)
+ deriving (Show, Generic, NFData, Serialise)
instance Eq DeclarationRef where
(TypeRef _ name dctors) == (TypeRef _ name' dctors') = name == name' && dctors == dctors'
@@ -329,7 +330,7 @@ data ExportSource =
{ exportSourceImportedFrom :: Maybe ModuleName
, exportSourceDefinedIn :: ModuleName
}
- deriving (Eq, Ord, Show, Generic, NFData)
+ deriving (Eq, Ord, Show, Generic, NFData, Serialise)
-- enable sorting lists of explicitly imported refs when suggesting imports in linting, IDE, etc.
-- not an Ord because this implementation is not consistent with its Eq instance.
@@ -422,7 +423,7 @@ data ImportDeclarationType
-- An import with a list of references to hide: `import M hiding (foo)`
--
| Hiding [DeclarationRef]
- deriving (Eq, Show)
+ deriving (Eq, Show, Generic, Serialise)
isImplicit :: ImportDeclarationType -> Bool
isImplicit Implicit = True
@@ -929,8 +930,8 @@ $(deriveJSON (defaultOptions { sumEncoding = ObjectWithSingleField }) ''ExportSo
isTrueExpr :: Expr -> Bool
isTrueExpr (Literal _ (BooleanLiteral True)) = True
-isTrueExpr (Var _ (Qualified (Just (ModuleName [ProperName "Prelude"])) (Ident "otherwise"))) = True
-isTrueExpr (Var _ (Qualified (Just (ModuleName [ProperName "Data", ProperName "Boolean"])) (Ident "otherwise"))) = True
+isTrueExpr (Var _ (Qualified (Just (ModuleName "Prelude")) (Ident "otherwise"))) = True
+isTrueExpr (Var _ (Qualified (Just (ModuleName "Data.Boolean")) (Ident "otherwise"))) = True
isTrueExpr (TypedValue _ e _) = isTrueExpr e
isTrueExpr (PositionedValue _ _ e) = isTrueExpr e
isTrueExpr _ = False
diff --git a/src/Language/PureScript/AST/Operators.hs b/src/Language/PureScript/AST/Operators.hs
index ffe5377..41a1292 100644
--- a/src/Language/PureScript/AST/Operators.hs
+++ b/src/Language/PureScript/AST/Operators.hs
@@ -6,6 +6,7 @@ module Language.PureScript.AST.Operators where
import Prelude.Compat
+import Codec.Serialise (Serialise)
import GHC.Generics (Generic)
import Control.DeepSeq (NFData)
import Data.Aeson ((.=))
@@ -25,6 +26,7 @@ data Associativity = Infixl | Infixr | Infix
deriving (Show, Eq, Ord, Generic)
instance NFData Associativity
+instance Serialise Associativity
showAssoc :: Associativity -> String
showAssoc Infixl = "infixl"
@@ -50,6 +52,7 @@ data Fixity = Fixity Associativity Precedence
deriving (Show, Eq, Ord, Generic)
instance NFData Fixity
+instance Serialise Fixity
instance A.ToJSON Fixity where
toJSON (Fixity associativity precedence) =
diff --git a/src/Language/PureScript/AST/SourcePos.hs b/src/Language/PureScript/AST/SourcePos.hs
index d47de81..bd5e4f2 100644
--- a/src/Language/PureScript/AST/SourcePos.hs
+++ b/src/Language/PureScript/AST/SourcePos.hs
@@ -1,4 +1,5 @@
{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DeriveAnyClass #-}
-- |
-- Source position information
--
@@ -6,6 +7,7 @@ module Language.PureScript.AST.SourcePos where
import Prelude.Compat
+import Codec.Serialise (Serialise)
import Control.DeepSeq (NFData)
import Data.Aeson ((.=), (.:))
import Data.Text (Text)
@@ -24,9 +26,7 @@ data SourcePos = SourcePos
-- ^ Line number
, sourcePosColumn :: Int
-- ^ Column number
- } deriving (Show, Eq, Ord, Generic)
-
-instance NFData SourcePos
+ } deriving (Show, Eq, Ord, Generic, NFData, Serialise)
displaySourcePos :: SourcePos -> Text
displaySourcePos sp =
@@ -54,9 +54,7 @@ data SourceSpan = SourceSpan
-- ^ Start of the span
, spanEnd :: SourcePos
-- ^ End of the span
- } deriving (Show, Eq, Ord, Generic)
-
-instance NFData SourceSpan
+ } deriving (Show, Eq, Ord, Generic, NFData, Serialise)
displayStartEndPos :: SourceSpan -> Text
displayStartEndPos sp =
diff --git a/src/Language/PureScript/CST/Convert.hs b/src/Language/PureScript/CST/Convert.hs
index 6f25050..f473ffa 100644
--- a/src/Language/PureScript/CST/Convert.hs
+++ b/src/Language/PureScript/CST/Convert.hs
@@ -85,7 +85,7 @@ moduleName = \case
_ -> Nothing
where
go [] = Nothing
- go ns = Just $ N.ModuleName $ N.ProperName <$> ns
+ go ns = Just $ N.ModuleName $ Text.intercalate "." ns
qualified :: QualifiedName a -> N.Qualified a
qualified q = N.Qualified (qualModule q) (qualName q)
diff --git a/src/Language/PureScript/CST/Utils.hs b/src/Language/PureScript/CST/Utils.hs
index 1d4c9d4..185e984 100644
--- a/src/Language/PureScript/CST/Utils.hs
+++ b/src/Language/PureScript/CST/Utils.hs
@@ -82,14 +82,14 @@ toModuleName :: SourceToken -> [Text] -> Parser (Maybe N.ModuleName)
toModuleName _ [] = pure Nothing
toModuleName tok ns = do
when (not (all isValidModuleNamespace ns)) $ addFailure [tok] ErrModuleName
- pure . Just . N.ModuleName $ N.ProperName <$> ns
+ pure . Just . N.ModuleName $ Text.intercalate "." ns
upperToModuleName :: SourceToken -> Parser (Name N.ModuleName)
upperToModuleName tok = case tokValue tok of
TokUpperName q a -> do
let ns = q <> [a]
when (not (all isValidModuleNamespace ns)) $ addFailure [tok] ErrModuleName
- pure . Name tok . N.ModuleName $ N.ProperName <$> ns
+ pure . Name tok . N.ModuleName $ Text.intercalate "." ns
_ -> internalError $ "Invalid upper name: " <> show tok
toQualifiedName :: (Text -> a) -> SourceToken -> Parser (QualifiedName a)
diff --git a/src/Language/PureScript/CodeGen/JS.hs b/src/Language/PureScript/CodeGen/JS.hs
index 4153fbb..f4ee742 100644
--- a/src/Language/PureScript/CodeGen/JS.hs
+++ b/src/Language/PureScript/CodeGen/JS.hs
@@ -96,8 +96,8 @@ moduleToJs (Module _ coms mn _ imps exps foreigns decls) foreign_ =
go acc _ [] = acc
freshModuleName :: Integer -> ModuleName -> [Ident] -> ModuleName
- freshModuleName i mn'@(ModuleName pns) used =
- let newName = ModuleName $ init pns ++ [ProperName $ runProperName (last pns) <> "_" <> T.pack (show i)]
+ freshModuleName i mn'@(ModuleName name) used =
+ let newName = ModuleName $ name <> "_" <> T.pack (show i)
in if Ident (runModuleName newName) `elem` used
then freshModuleName (i + 1) mn' used
else newName
@@ -307,7 +307,7 @@ moduleToJs (Module _ coms mn _ imps exps foreigns decls) foreign_ =
-- | Generate code in the simplified JavaScript intermediate representation for a reference to a
-- variable that may have a qualified name.
qualifiedToJS :: (a -> Ident) -> Qualified a -> AST
- qualifiedToJS f (Qualified (Just (ModuleName [ProperName mn'])) a) | mn' == C.prim = AST.Var Nothing . runIdent $ f a
+ qualifiedToJS f (Qualified (Just C.Prim) a) = AST.Var Nothing . runIdent $ f a
qualifiedToJS f (Qualified (Just mn') a) | mn /= mn' = accessor (f a) (AST.Var Nothing (moduleNameToJs mn'))
qualifiedToJS f (Qualified _ a) = AST.Var Nothing $ identToJs (f a)
diff --git a/src/Language/PureScript/CodeGen/JS/Common.hs b/src/Language/PureScript/CodeGen/JS/Common.hs
index c13a22d..09f5a63 100644
--- a/src/Language/PureScript/CodeGen/JS/Common.hs
+++ b/src/Language/PureScript/CodeGen/JS/Common.hs
@@ -11,8 +11,8 @@ import Language.PureScript.Crash
import Language.PureScript.Names
moduleNameToJs :: ModuleName -> Text
-moduleNameToJs (ModuleName pns) =
- let name = T.intercalate "_" (runProperName `map` pns)
+moduleNameToJs (ModuleName mn) =
+ let name = T.replace "." "_" mn
in if nameIsJsBuiltIn name then "$$" <> name else name
-- | Convert an 'Ident' into a valid JavaScript identifier:
diff --git a/src/Language/PureScript/Comments.hs b/src/Language/PureScript/Comments.hs
index 5c5acd8..61d3acd 100644
--- a/src/Language/PureScript/Comments.hs
+++ b/src/Language/PureScript/Comments.hs
@@ -7,6 +7,7 @@
module Language.PureScript.Comments where
import Prelude.Compat
+import Codec.Serialise (Serialise)
import Control.DeepSeq (NFData)
import Data.Text (Text)
import GHC.Generics (Generic)
@@ -19,5 +20,6 @@ data Comment
deriving (Show, Eq, Ord, Generic)
instance NFData Comment
+instance Serialise Comment
$(deriveJSON (defaultOptions { sumEncoding = ObjectWithSingleField }) ''Comment)
diff --git a/src/Language/PureScript/Constants.hs b/src/Language/PureScript/Constants.hs
index cd07a9c..ca85992 100644
--- a/src/Language/PureScript/Constants.hs
+++ b/src/Language/PureScript/Constants.hs
@@ -379,7 +379,7 @@ partial :: forall a. (IsString a) => a
partial = "Partial"
pattern Prim :: ModuleName
-pattern Prim = ModuleName [ProperName "Prim"]
+pattern Prim = ModuleName "Prim"
pattern Partial :: Qualified (ProperName 'ClassName)
pattern Partial = Qualified (Just Prim) (ProperName "Partial")
@@ -390,7 +390,7 @@ pattern Record = Qualified (Just Prim) (ProperName "Record")
-- Prim.Boolean
pattern PrimBoolean :: ModuleName
-pattern PrimBoolean = ModuleName [ProperName "Prim", ProperName "Boolean"]
+pattern PrimBoolean = ModuleName "Prim.Boolean"
booleanTrue :: Qualified (ProperName 'TypeName)
booleanTrue = Qualified (Just PrimBoolean) (ProperName "True")
@@ -401,7 +401,7 @@ booleanFalse = Qualified (Just PrimBoolean) (ProperName "False")
-- Prim.Ordering
pattern PrimOrdering :: ModuleName
-pattern PrimOrdering = ModuleName [ProperName "Prim", ProperName "Ordering"]
+pattern PrimOrdering = ModuleName "Prim.Ordering"
orderingLT :: Qualified (ProperName 'TypeName)
orderingLT = Qualified (Just PrimOrdering) (ProperName "LT")
@@ -415,7 +415,7 @@ orderingGT = Qualified (Just PrimOrdering) (ProperName "GT")
-- Prim.Row
pattern PrimRow :: ModuleName
-pattern PrimRow = ModuleName [ProperName "Prim", ProperName "Row"]
+pattern PrimRow = ModuleName "Prim.Row"
pattern RowUnion :: Qualified (ProperName 'ClassName)
pattern RowUnion = Qualified (Just PrimRow) (ProperName "Union")
@@ -432,7 +432,7 @@ pattern RowLacks = Qualified (Just PrimRow) (ProperName "Lacks")
-- Prim.RowList
pattern PrimRowList :: ModuleName
-pattern PrimRowList = ModuleName [ProperName "Prim", ProperName "RowList"]
+pattern PrimRowList = ModuleName "Prim.RowList"
pattern RowToList :: Qualified (ProperName 'ClassName)
pattern RowToList = Qualified (Just PrimRowList) (ProperName "RowToList")
@@ -446,7 +446,7 @@ pattern RowListCons = Qualified (Just PrimRowList) (ProperName "Cons")
-- Prim.Symbol
pattern PrimSymbol :: ModuleName
-pattern PrimSymbol = ModuleName [ProperName "Prim", ProperName "Symbol"]
+pattern PrimSymbol = ModuleName "Prim.Symbol"
pattern SymbolCompare :: Qualified (ProperName 'ClassName)
pattern SymbolCompare = Qualified (Just PrimSymbol) (ProperName "Compare")
@@ -460,7 +460,7 @@ pattern SymbolCons = Qualified (Just PrimSymbol) (ProperName "Cons")
-- Prim.TypeError
pattern PrimTypeError :: ModuleName
-pattern PrimTypeError = ModuleName [ProperName "Prim", ProperName "TypeError"]
+pattern PrimTypeError = ModuleName "Prim.TypeError"
pattern Fail :: Qualified (ProperName 'ClassName)
pattern Fail = Qualified (Just PrimTypeError) (ProperName "Fail")
@@ -474,7 +474,7 @@ primModules = [Prim, PrimBoolean, PrimOrdering, PrimRow, PrimRowList, PrimSymbol
-- Data.Symbol
pattern DataSymbol :: ModuleName
-pattern DataSymbol = ModuleName [ProperName "Data", ProperName "Symbol"]
+pattern DataSymbol = ModuleName "Data.Symbol"
pattern IsSymbol :: Qualified (ProperName 'ClassName)
pattern IsSymbol = Qualified (Just DataSymbol) (ProperName "IsSymbol")
@@ -542,7 +542,7 @@ controlSemigroupoid :: forall a. (IsString a) => a
controlSemigroupoid = "Control_Semigroupoid"
pattern ControlBind :: ModuleName
-pattern ControlBind = ModuleName [ProperName "Control", ProperName "Bind"]
+pattern ControlBind = ModuleName "Control.Bind"
controlBind :: forall a. (IsString a) => a
controlBind = "Control_Bind"
diff --git a/src/Language/PureScript/CoreFn/Desugar.hs b/src/Language/PureScript/CoreFn/Desugar.hs
index 3ab44b0..547fe31 100644
--- a/src/Language/PureScript/CoreFn/Desugar.hs
+++ b/src/Language/PureScript/CoreFn/Desugar.hs
@@ -89,7 +89,7 @@ moduleToCoreFn env (A.Module modSS coms mn decls (Just exps)) =
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))
+ Var (ss, com, ty, Nothing) (Qualified (Just 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/CoreFn/FromJSON.hs b/src/Language/PureScript/CoreFn/FromJSON.hs
index 0cffaf2..798ce2b 100644
--- a/src/Language/PureScript/CoreFn/FromJSON.hs
+++ b/src/Language/PureScript/CoreFn/FromJSON.hs
@@ -4,6 +4,7 @@
module Language.PureScript.CoreFn.FromJSON
( moduleFromJSON
+ , parseVersion'
) where
import Prelude.Compat
@@ -12,7 +13,6 @@ import Data.Aeson
import Data.Aeson.Types (Parser, Value, listParser)
import Data.Text (Text)
import qualified Data.Text as T
-import Text.ParserCombinators.ReadP (readP_to_S)
import qualified Data.Vector as V
import Data.Version (Version, parseVersion)
@@ -23,6 +23,14 @@ import Language.PureScript.CoreFn
import Language.PureScript.Names
import Language.PureScript.PSString (PSString)
+import Text.ParserCombinators.ReadP (readP_to_S)
+
+parseVersion' :: String -> Maybe Version
+parseVersion' str =
+ case filter (null . snd) $ readP_to_S parseVersion str of
+ [(vers, "")] -> Just vers
+ _ -> Nothing
+
constructorTypeFromJSON :: Value -> Parser ConstructorType
constructorTypeFromJSON v = do
t <- parseJSON v
@@ -104,7 +112,7 @@ qualifiedFromJSON f = withObject "Qualified" qualifiedFromObj
return $ Qualified mn i
moduleNameFromJSON :: Value -> Parser ModuleName
-moduleNameFromJSON v = ModuleName <$> listParser properNameFromJSON v
+moduleNameFromJSON v = ModuleName . T.intercalate "." <$> listParser parseJSON v
moduleFromJSON :: Value -> Parser (Version, Module Ann)
moduleFromJSON = withObject "Module" moduleFromObj
@@ -123,9 +131,9 @@ moduleFromJSON = withObject "Module" moduleFromObj
versionFromJSON :: String -> Parser Version
versionFromJSON v =
- case readP_to_S parseVersion v of
- (r, _) : _ -> return r
- _ -> fail "failed parsing purs version"
+ case parseVersion' v of
+ Just r -> return r
+ Nothing -> fail "failed parsing purs version"
importFromJSON :: FilePath -> Value -> Parser (Ann, ModuleName)
importFromJSON modulePath = withObject "Import"
diff --git a/src/Language/PureScript/CoreFn/ToJSON.hs b/src/Language/PureScript/CoreFn/ToJSON.hs
index 75e2d56..ec54c1e 100644
--- a/src/Language/PureScript/CoreFn/ToJSON.hs
+++ b/src/Language/PureScript/CoreFn/ToJSON.hs
@@ -100,7 +100,7 @@ qualifiedToJSON f (Qualified mn a) = object
]
moduleNameToJSON :: ModuleName -> Value
-moduleNameToJSON (ModuleName pns) = toJSON $ properNameToJSON `map` pns
+moduleNameToJSON (ModuleName name) = toJSON (T.splitOn (T.pack ".") name)
moduleToJSON :: Version -> Module Ann -> Value
moduleToJSON v m = object
diff --git a/src/Language/PureScript/Docs/Types.hs b/src/Language/PureScript/Docs/Types.hs
index 89c3e39..cc46fdc 100644
--- a/src/Language/PureScript/Docs/Types.hs
+++ b/src/Language/PureScript/Docs/Types.hs
@@ -28,6 +28,7 @@ import qualified Data.Text as T
import qualified Data.Vector as V
import qualified Language.PureScript.AST as P
+import qualified Language.PureScript.CoreFn.FromJSON as P
import qualified Language.PureScript.Crash as P
import qualified Language.PureScript.Environment as P
import qualified Language.PureScript.Kinds as P
@@ -35,8 +36,6 @@ import qualified Language.PureScript.Names as P
import qualified Language.PureScript.Types as P
import qualified Paths_purescript as Paths
-import Text.ParserCombinators.ReadP (readP_to_S)
-
import Web.Bower.PackageMeta hiding (Version, displayError)
import Language.PureScript.Docs.RenderedCode as ReExports
@@ -565,13 +564,7 @@ instance A.FromJSON GithubUser where
parseJSON = toAesonParser' asGithubUser
asVersion :: Parse PackageError Version
-asVersion = withString (maybe (Left InvalidVersion) Right . parseVersion')
-
-parseVersion' :: String -> Maybe Version
-parseVersion' str =
- case filter (null . snd) $ readP_to_S parseVersion str of
- [(vers, "")] -> Just vers
- _ -> Nothing
+asVersion = withString (maybe (Left InvalidVersion) Right . P.parseVersion')
asModule :: Parse PackageError Module
asModule =
diff --git a/src/Language/PureScript/Environment.hs b/src/Language/PureScript/Environment.hs
index f6bea0e..5401991 100644
--- a/src/Language/PureScript/Environment.hs
+++ b/src/Language/PureScript/Environment.hs
@@ -5,9 +5,10 @@ module Language.PureScript.Environment where
import Prelude.Compat
import Protolude (ordNub)
-import GHC.Generics (Generic)
-import Control.DeepSeq (NFData)
-import Data.Aeson ((.=), (.:))
+import GHC.Generics (Generic)
+import Control.DeepSeq (NFData)
+import Codec.Serialise (Serialise)
+import Data.Aeson ((.=), (.:))
import qualified Data.Aeson as A
import qualified Data.Map as M
import qualified Data.Set as S
@@ -85,6 +86,7 @@ data FunctionalDependency = FunctionalDependency
} deriving (Show, Generic)
instance NFData FunctionalDependency
+instance Serialise FunctionalDependency
instance A.FromJSON FunctionalDependency where
parseJSON = A.withObject "FunctionalDependency" $ \o ->
@@ -184,6 +186,7 @@ data NameVisibility
deriving (Show, Eq, Generic)
instance NFData NameVisibility
+instance Serialise NameVisibility
-- | A flag for whether a name is for an private or public value - only public values will be
-- included in a generated externs file.
@@ -198,6 +201,7 @@ data NameKind
deriving (Show, Eq, Generic)
instance NFData NameKind
+instance Serialise NameKind
-- | The kinds of a type
data TypeKind
@@ -214,6 +218,7 @@ data TypeKind
deriving (Show, Eq, Generic)
instance NFData TypeKind
+instance Serialise TypeKind
instance A.ToJSON TypeKind where
toJSON (DataType args ctors) =
@@ -247,6 +252,7 @@ data DataDeclType
deriving (Show, Eq, Ord, Generic)
instance NFData DataDeclType
+instance Serialise DataDeclType
showDataDeclType :: DataDeclType -> Text
showDataDeclType Data = "data"
@@ -264,12 +270,12 @@ instance A.FromJSON DataDeclType where
-- | Construct a ProperName in the Prim module
primName :: Text -> Qualified (ProperName a)
-primName = Qualified (Just $ ModuleName [ProperName C.prim]) . ProperName
+primName = Qualified (Just C.Prim) . ProperName
-- | Construct a 'ProperName' in the @Prim.NAME@ module.
primSubName :: Text -> Text -> Qualified (ProperName a)
primSubName sub =
- Qualified (Just $ ModuleName [ProperName C.prim, ProperName sub]) . ProperName
+ Qualified (Just $ ModuleName $ C.prim <> "." <> sub) . ProperName
primKind :: Text -> SourceKind
primKind = NamedKind nullSourceAnn . primName
diff --git a/src/Language/PureScript/Externs.hs b/src/Language/PureScript/Externs.hs
index d4785a4..7b1f032 100644
--- a/src/Language/PureScript/Externs.hs
+++ b/src/Language/PureScript/Externs.hs
@@ -13,11 +13,13 @@ module Language.PureScript.Externs
, externsIsCurrentVersion
, moduleToExternsFile
, applyExternsFileToEnvironment
+ , externsFileName
) where
import Prelude.Compat
-import Data.Aeson.TH
+import Codec.Serialise (Serialise)
+import GHC.Generics (Generic)
import Data.Maybe (fromMaybe, mapMaybe, maybeToList)
import Data.List (foldl', find)
import Data.Foldable (fold)
@@ -40,6 +42,9 @@ import Paths_purescript as Paths
-- | The data which will be serialized to an externs file
data ExternsFile = ExternsFile
+ -- NOTE: Make sure to keep `efVersion` as the first field in this
+ -- record, so the derived Serialise instance produces CBOR that can
+ -- be checked for its version independent of the remaining format
{ efVersion :: Text
-- ^ The externs version
, efModuleName :: ModuleName
@@ -56,7 +61,9 @@ data ExternsFile = ExternsFile
-- ^ List of type and value declaration
, efSourceSpan :: SourceSpan
-- ^ Source span for error reporting
- } deriving (Show)
+ } deriving (Show, Generic)
+
+instance Serialise ExternsFile
-- | A module import in an externs file
data ExternsImport = ExternsImport
@@ -67,7 +74,9 @@ data ExternsImport = ExternsImport
, eiImportType :: ImportDeclarationType
-- | The imported-as name, for qualified imports
, eiImportedAs :: Maybe ModuleName
- } deriving (Show)
+ } deriving (Show, Generic)
+
+instance Serialise ExternsImport
-- | A fixity declaration in an externs file
data ExternsFixity = ExternsFixity
@@ -80,7 +89,9 @@ data ExternsFixity = ExternsFixity
, efOperator :: OpName 'ValueOpName
-- | The value the operator is an alias for
, efAlias :: Qualified (Either Ident (ProperName 'ConstructorName))
- } deriving (Show)
+ } deriving (Show, Generic)
+
+instance Serialise ExternsFixity
-- | A type fixity declaration in an externs file
data ExternsTypeFixity = ExternsTypeFixity
@@ -93,7 +104,9 @@ data ExternsTypeFixity = ExternsTypeFixity
, efTypeOperator :: OpName 'TypeOpName
-- | The value the operator is an alias for
, efTypeAlias :: Qualified (ProperName 'TypeName)
- } deriving (Show)
+ } deriving (Show, Generic)
+
+instance Serialise ExternsTypeFixity
-- | A type or value declaration appearing in an externs file
data ExternsDeclaration =
@@ -144,7 +157,9 @@ data ExternsDeclaration =
| EDKind
{ edKindName :: ProperName 'KindName
}
- deriving Show
+ deriving (Show, Generic)
+
+instance Serialise ExternsDeclaration
-- | Check whether the version in an externs file matches the currently running
-- version.
@@ -245,8 +260,5 @@ moduleToExternsFile (Module ss _ mn ds (Just exps)) env = ExternsFile{..}
= [ EDKind pn ]
toExternsDeclaration _ = []
-$(deriveJSON (defaultOptions { sumEncoding = ObjectWithSingleField }) ''ExternsImport)
-$(deriveJSON (defaultOptions { sumEncoding = ObjectWithSingleField }) ''ExternsFixity)
-$(deriveJSON (defaultOptions { sumEncoding = ObjectWithSingleField }) ''ExternsTypeFixity)
-$(deriveJSON (defaultOptions { sumEncoding = ObjectWithSingleField }) ''ExternsDeclaration)
-$(deriveJSON (defaultOptions { sumEncoding = ObjectWithSingleField }) ''ExternsFile)
+externsFileName :: FilePath
+externsFileName = "externs.cbor"
diff --git a/src/Language/PureScript/Graph.hs b/src/Language/PureScript/Graph.hs
new file mode 100644
index 0000000..af79555
--- /dev/null
+++ b/src/Language/PureScript/Graph.hs
@@ -0,0 +1,57 @@
+module Language.PureScript.Graph (graph) where
+
+import Prelude.Compat
+
+import qualified Data.Aeson as Json
+import qualified Data.HashMap.Strict as HashMap
+import qualified Data.Map as Map
+
+import Control.Monad (forM)
+import Data.Aeson ((.=))
+import Data.Foldable (foldl')
+import Data.Map (Map)
+import Data.Maybe (fromMaybe)
+import Data.Text (Text)
+import System.IO.UTF8 (readUTF8FileT)
+
+import qualified Language.PureScript.Crash as Crash
+import qualified Language.PureScript.CST as CST
+import qualified Language.PureScript.Make as Make
+import qualified Language.PureScript.ModuleDependencies as Dependencies
+import qualified Language.PureScript.Options as Options
+
+import Language.PureScript.Errors (MultipleErrors)
+import Language.PureScript.Names (ModuleName, runModuleName)
+
+
+-- | Given a set of filepaths, try to build the dependency graph and return
+-- that as its JSON representation (or a bunch of errors, if any)
+graph :: [FilePath] -> IO (Either MultipleErrors Json.Value, MultipleErrors)
+graph input = do
+ moduleFiles <- readInput input
+ Make.runMake Options.defaultOptions $ do
+ ms <- CST.parseModulesFromFiles id moduleFiles
+ let parsedModuleSig = Dependencies.moduleSignature . CST.resPartial
+ (_sorted, moduleGraph) <- Dependencies.sortModules (parsedModuleSig . snd) ms
+ let pathMap = Map.fromList $
+ map (\(p, m) -> (Dependencies.sigModuleName (parsedModuleSig m), p)) ms
+ pure (moduleGraphToJSON pathMap moduleGraph)
+
+moduleGraphToJSON
+ :: Map ModuleName FilePath
+ -> Dependencies.ModuleGraph
+ -> Json.Value
+moduleGraphToJSON paths = Json.Object . foldl' insert mempty
+ where
+ insert :: Json.Object -> (ModuleName, [ModuleName]) -> Json.Object
+ insert obj (mn, depends) = HashMap.insert (runModuleName mn) value obj
+ where
+ path = fromMaybe (Crash.internalError "missing module name in graph") $ Map.lookup mn paths
+ value = Json.object
+ [ "path" .= path
+ , "depends" .= fmap runModuleName depends
+ ]
+
+readInput :: [FilePath] -> IO [(FilePath, Text)]
+readInput inputFiles =
+ forM inputFiles $ \inFile -> (inFile, ) <$> readUTF8FileT inFile
diff --git a/src/Language/PureScript/Hierarchy.hs b/src/Language/PureScript/Hierarchy.hs
index 0bbe765..ea2851d 100644
--- a/src/Language/PureScript/Hierarchy.hs
+++ b/src/Language/PureScript/Hierarchy.hs
@@ -54,8 +54,8 @@ prettyPrint (SuperMap (Right (super, sub))) =
" " <> P.runProperName super <> " -> " <> P.runProperName sub <> ";"
runModuleName :: P.ModuleName -> GraphName
-runModuleName (P.ModuleName pns) =
- GraphName $ T.intercalate "_" (P.runProperName <$> pns)
+runModuleName (P.ModuleName name) =
+ GraphName $ T.replace "." "_" name
typeClasses :: Functor f => f P.Module -> f (Maybe Graph)
typeClasses =
diff --git a/src/Language/PureScript/Ide.hs b/src/Language/PureScript/Ide.hs
index 8e6e722..265f2ef 100644
--- a/src/Language/PureScript/Ide.hs
+++ b/src/Language/PureScript/Ide.hs
@@ -154,8 +154,8 @@ caseSplit l b e csa t = do
patterns <- CS.makePattern l b e csa <$> CS.caseSplit t
pure (MultilineTextResult patterns)
--- | Finds all the externs.json files inside the output folder and returns the
--- corresponding Modulenames
+-- | Finds all the externs inside the output folder and returns the
+-- corresponding module names
findAvailableExterns :: (Ide m, MonadError IdeError m) => m [P.ModuleName]
findAvailableExterns = do
oDir <- outputDirectory
@@ -166,13 +166,13 @@ findAvailableExterns = do
moduleNames <- filterM (containsExterns oDir) directories
pure (P.moduleNameFromString . toS <$> moduleNames)
where
- -- Takes the output directory and a filepath like "Monad.Control.Eff" and
- -- looks up, whether that folder contains an externs.json
+ -- Takes the output directory and a filepath like "Data.Array" and
+ -- looks up, whether that folder contains an externs file
containsExterns :: FilePath -> FilePath -> IO Bool
containsExterns oDir d
| d `elem` [".", ".."] = pure False
| otherwise = do
- let file = oDir </> d </> "externs.json"
+ let file = oDir </> d </> P.externsFileName
doesFileExist file
-- | Finds all matches for the globs specified at the commandline
@@ -211,7 +211,7 @@ loadModules moduleNames = do
-- We resolve all the modulenames to externs files and load these into memory.
oDir <- outputDirectory
let efPaths =
- map (\mn -> oDir </> toS (P.runModuleName mn) </> "externs.json") moduleNames
+ map (\mn -> oDir </> toS (P.runModuleName mn) </> P.externsFileName) moduleNames
efiles <- traverse readExternFile efPaths
traverse_ insertExterns efiles
diff --git a/src/Language/PureScript/Ide/Externs.hs b/src/Language/PureScript/Ide/Externs.hs
index ae5d2b5..16b533e 100644
--- a/src/Language/PureScript/Ide/Externs.hs
+++ b/src/Language/PureScript/Ide/Externs.hs
@@ -21,41 +21,38 @@ module Language.PureScript.Ide.Externs
import Protolude hiding (to, from, (&))
+import Codec.CBOR.Term as Term
import "monad-logger" Control.Monad.Logger
-import Data.Aeson (decodeStrict)
-import Data.Aeson.Types (withObject, parseMaybe, (.:))
-import qualified Data.ByteString as BS
import Data.Version (showVersion)
+import qualified Language.PureScript as P
+import qualified Language.PureScript.Make.Monad as Make
import Language.PureScript.Ide.Error (IdeError (..))
import Language.PureScript.Ide.Types
import Lens.Micro.Platform
-import qualified Language.PureScript as P
-
readExternFile
:: (MonadIO m, MonadError IdeError m, MonadLogger m)
=> FilePath
-> m P.ExternsFile
readExternFile fp = do
- externsFile <- liftIO (BS.readFile fp)
- case decodeStrict externsFile of
- Nothing ->
- let parser = withObject "ExternsFileVersion" $ \o -> o .: "efVersion"
- maybeEFVersion = parseMaybe parser =<< decodeStrict externsFile
- in case maybeEFVersion of
- Nothing ->
- throwError (GeneralError
- ("Parsing the extern at: " <> toS fp <> " failed"))
- Just efVersion -> do
- let errMsg = "Version mismatch for the externs at: " <> toS fp
- <> " Expected: " <> version
- <> " Found: " <> efVersion
- logErrorN errMsg
- throwError (GeneralError errMsg)
- Just externs -> pure externs
-
- where
- version = toS (showVersion P.version)
+ externsFile <- liftIO (Make.readCborFileIO fp)
+ case externsFile of
+ Just externs | version == P.efVersion externs ->
+ pure externs
+ _ ->
+ liftIO (Make.readCborFileIO fp) >>= \case
+ Just (Term.TList (_tag : Term.TString efVersion : _rest)) -> do
+ let errMsg =
+ "Version mismatch for the externs at: "
+ <> toS fp
+ <> " Expected: " <> version
+ <> " Found: " <> efVersion
+ logErrorN errMsg
+ throwError (GeneralError errMsg)
+ _ ->
+ throwError (GeneralError ("Parsing the extern at: " <> toS fp <> " failed"))
+ where
+ version = toS (showVersion P.version)
convertExterns :: P.ExternsFile -> ([IdeDeclarationAnn], [(P.ModuleName, P.DeclarationRef)])
convertExterns ef =
diff --git a/src/Language/PureScript/Ide/Prim.hs b/src/Language/PureScript/Ide/Prim.hs
index c58550c..98a8949 100644
--- a/src/Language/PureScript/Ide/Prim.hs
+++ b/src/Language/PureScript/Ide/Prim.hs
@@ -1,6 +1,8 @@
module Language.PureScript.Ide.Prim (idePrimDeclarations) where
import Protolude
+
+import qualified Data.Text as T
import qualified Data.Map as Map
import qualified Data.Set as Set
import qualified Language.PureScript as P
@@ -33,8 +35,12 @@ idePrimDeclarations = Map.fromList
)
]
where
- annType tys = foreach (Map.toList tys) $ \(tn, (kind, _)) ->
- IdeDeclarationAnn emptyAnn (IdeDeclType (IdeType (P.disqualify tn) kind []))
+ annType tys = flip mapMaybe (Map.toList tys) $ \(tn, (kind, _)) -> do
+ let name = P.disqualify tn
+ -- We need to remove the ClassName$Dict synonyms, because we
+ -- don't want them to show up in completions
+ guard (isNothing (T.find (== '$') (P.runProperName name)))
+ Just (IdeDeclarationAnn emptyAnn (IdeDeclType (IdeType name kind [])))
annClass cls = foreach (Map.toList cls) $ \(cn, _) ->
-- Dummy kind and instances here, but we primarily care about the name completion
IdeDeclarationAnn emptyAnn (IdeDeclTypeClass (IdeTypeClass (P.disqualify cn) P.kindType []) )
diff --git a/src/Language/PureScript/Ide/Rebuild.hs b/src/Language/PureScript/Ide/Rebuild.hs
index 9e38117..556c003 100644
--- a/src/Language/PureScript/Ide/Rebuild.hs
+++ b/src/Language/PureScript/Ide/Rebuild.hs
@@ -1,5 +1,4 @@
-{-# LANGUAGE PackageImports #-}
-{-# LANGUAGE TemplateHaskell #-}
+{-# language PackageImports, TemplateHaskell, BlockArguments #-}
module Language.PureScript.Ide.Rebuild
( rebuildFileSync
@@ -7,20 +6,23 @@ module Language.PureScript.Ide.Rebuild
, rebuildFile
) where
-import Protolude
+import Protolude hiding (moduleName)
import "monad-logger" Control.Monad.Logger
import qualified Data.List as List
import qualified Data.Map.Lazy as M
import Data.Maybe (fromJust)
import qualified Data.Set as S
+import qualified Data.Time as Time
import qualified Language.PureScript as P
+import Language.PureScript.Make.Cache (CacheInfo(..), normaliseForCache)
import qualified Language.PureScript.CST as CST
import Language.PureScript.Ide.Error
import Language.PureScript.Ide.Logging
import Language.PureScript.Ide.State
import Language.PureScript.Ide.Types
import Language.PureScript.Ide.Util
+import System.Directory (getCurrentDirectory)
-- | Given a filepath performs the following steps:
--
@@ -55,37 +57,71 @@ rebuildFile file actualFile codegenTargets runOpenBuild = do
Left parseError ->
throwError $ RebuildError $ CST.toMultipleErrors fp' parseError
Right m -> pure m
-
+ let moduleName = P.getModuleName m
-- Externs files must be sorted ahead of time, so that they get applied
-- in the right order (bottom up) to the 'Environment'.
externs <- logPerf (labelTimespec "Sorting externs") (sortExterns m =<< getExternFiles)
-
outputDirectory <- confOutputPath . ideConfiguration <$> ask
-
-- For rebuilding, we want to 'RebuildAlways', but for inferring foreign
-- modules using their file paths, we need to specify the path in the 'Map'.
- let filePathMap = M.singleton (P.getModuleName m) (Left P.RebuildAlways)
- foreigns <- P.inferForeignModules (M.singleton (P.getModuleName m) (Right file))
-
- let makeEnv = MakeActionsEnv outputDirectory filePathMap foreigns False
+ let filePathMap = M.singleton moduleName (Left P.RebuildAlways)
+ foreigns <- P.inferForeignModules (M.singleton moduleName (Right file))
+ let makeEnv = P.buildMakeActions outputDirectory filePathMap foreigns False
-- Rebuild the single module using the cached externs
(result, warnings) <- logPerf (labelTimespec "Rebuilding Module") $
- liftIO
- . P.runMake (P.defaultOptions { P.optionsCodegenTargets = codegenTargets })
- . P.rebuildModule (buildMakeActions
- >>= shushProgress $ makeEnv) externs $ m
+ liftIO $ P.runMake (P.defaultOptions { P.optionsCodegenTargets = codegenTargets }) do
+ newExterns <- P.rebuildModule (shushProgress makeEnv) externs m
+ updateCacheDb codegenTargets outputDirectory file actualFile moduleName
+ pure newExterns
case result of
- Left errors -> throwError (RebuildError errors)
+ Left errors ->
+ throwError (RebuildError errors)
Right newExterns -> do
- whenM isEditorMode $ do
- insertModule (fromMaybe file actualFile, m)
- insertExterns newExterns
- void populateVolatileState
+ insertModule (fromMaybe file actualFile, m)
+ insertExterns newExterns
+ void populateVolatileState
+ _ <- updateCacheTimestamp
runOpenBuild (rebuildModuleOpen makeEnv externs m)
pure (RebuildSuccess warnings)
-isEditorMode :: Ide m => m Bool
-isEditorMode = asks (confEditorMode . ideConfiguration)
+-- | When adjusting the cache db file after a rebuild we always pick a
+-- non-sensical timestamp ("1858-11-17T00:00:00Z"), and rely on the
+-- content hash to tell whether the module needs rebuilding. This is
+-- because IDE rebuilds may be triggered on temporary files to not
+-- force editors to save the actual source file to get at diagnostics
+dayZero :: Time.UTCTime
+dayZero = Time.UTCTime (Time.ModifiedJulianDay 0) 0
+
+updateCacheDb
+ :: MonadIO m
+ => MonadError P.MultipleErrors m
+ => Set P.CodegenTarget
+ -> FilePath
+ -- ^ The output directory
+ -> FilePath
+ -- ^ The file to read the content hash from
+ -> Maybe FilePath
+ -- ^ The file name to update in the cache
+ -> P.ModuleName
+ -- ^ The module name to update in the cache
+ -> m ()
+updateCacheDb codegenTargets outputDirectory file actualFile moduleName = do
+ cwd <- liftIO getCurrentDirectory
+ contentHash <- P.hashFile file
+ let moduleCacheInfo = (normaliseForCache cwd (fromMaybe file actualFile), (dayZero, contentHash))
+
+ foreignCacheInfo <-
+ if S.member P.JS codegenTargets then do
+ foreigns' <- P.inferForeignModules (M.singleton moduleName (Right (fromMaybe file actualFile)))
+ for (M.lookup moduleName foreigns') \foreignPath -> do
+ foreignHash <- P.hashFile foreignPath
+ pure (normaliseForCache cwd foreignPath, (dayZero, foreignHash))
+ else
+ pure Nothing
+
+ let cacheInfo = M.fromList (moduleCacheInfo : maybeToList foreignCacheInfo)
+ cacheDb <- P.readCacheDb' outputDirectory
+ P.writeCacheDb' outputDirectory (M.insert moduleName (CacheInfo cacheInfo) cacheDb)
rebuildFileAsync
:: forall m. (Ide m, MonadLogger m, MonadError IdeError m)
@@ -109,22 +145,17 @@ rebuildFileSync fp fp' ts = rebuildFile fp fp' ts syncRun
let ll = confLogLevel (ideConfiguration env)
void (liftIO (runLogger ll (runReaderT action env)))
-
-- | Rebuilds a module but opens up its export list first and stores the result
-- inside the rebuild cache
rebuildModuleOpen
:: (Ide m, MonadLogger m)
- => MakeActionsEnv
+ => P.MakeActions P.Make
-> [P.ExternsFile]
-> P.Module
-> m ()
-rebuildModuleOpen makeEnv externs m = void $ runExceptT $ do
- (openResult, _) <- liftIO
- . P.runMake P.defaultOptions
- . P.rebuildModule (buildMakeActions
- >>= shushProgress
- >>= shushCodegen
- $ makeEnv) externs $ openModuleExports m
+rebuildModuleOpen makeEnv externs m = void $ runExceptT do
+ (openResult, _) <- liftIO $ P.runMake P.defaultOptions $
+ P.rebuildModule (shushProgress (shushCodegen makeEnv)) externs (openModuleExports m)
case openResult of
Left _ ->
throwError (GeneralError "Failed when rebuilding with open exports")
@@ -133,32 +164,14 @@ rebuildModuleOpen makeEnv externs m = void $ runExceptT $ do
("Setting Rebuild cache: " <> P.runModuleName (P.efModuleName result))
cacheRebuild result
--- | Parameters we can access while building our @MakeActions@
-data MakeActionsEnv =
- MakeActionsEnv
- { maeOutputDirectory :: FilePath
- , maeFilePathMap :: ModuleMap (Either P.RebuildPolicy FilePath)
- , maeForeignPathMap :: ModuleMap FilePath
- , maePrefixComment :: Bool
- }
-
--- | Builds the default @MakeActions@ from a @MakeActionsEnv@
-buildMakeActions :: MakeActionsEnv -> P.MakeActions P.Make
-buildMakeActions MakeActionsEnv{..} =
- P.buildMakeActions
- maeOutputDirectory
- maeFilePathMap
- maeForeignPathMap
- maePrefixComment
-
-- | Shuts the compiler up about progress messages
-shushProgress :: P.MakeActions P.Make -> MakeActionsEnv -> P.MakeActions P.Make
-shushProgress ma _ =
+shushProgress :: Monad m => P.MakeActions m -> P.MakeActions m
+shushProgress ma =
ma { P.progress = \_ -> pure () }
-- | Stops any kind of codegen
-shushCodegen :: P.MakeActions P.Make -> MakeActionsEnv -> P.MakeActions P.Make
-shushCodegen ma MakeActionsEnv{..} =
+shushCodegen :: Monad m => P.MakeActions m -> P.MakeActions m
+shushCodegen ma =
ma { P.codegen = \_ _ _ -> pure ()
, P.ffiCodegen = \_ -> pure ()
}
diff --git a/src/Language/PureScript/Ide/State.hs b/src/Language/PureScript/Ide/State.hs
index 419b529..6170b6c 100644
--- a/src/Language/PureScript/Ide/State.hs
+++ b/src/Language/PureScript/Ide/State.hs
@@ -12,10 +12,11 @@
-- Functions to access psc-ide's state
-----------------------------------------------------------------------------
-{-# LANGUAGE PackageImports #-}
+{-# LANGUAGE PackageImports #-}
{-# LANGUAGE TemplateHaskell #-}
-{-# LANGUAGE NamedFieldPuns #-}
-{-# LANGUAGE BangPatterns #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE BangPatterns #-}
+{-# LANGUAGE TypeApplications #-}
module Language.PureScript.Ide.State
( getLoadedModulenames
@@ -31,6 +32,8 @@ module Language.PureScript.Ide.State
, populateVolatileState
, populateVolatileStateSync
, populateVolatileStateSTM
+ , getOutputDirectory
+ , updateCacheTimestamp
-- for tests
, resolveOperatorsForModule
, resolveInstances
@@ -42,16 +45,20 @@ import Protolude hiding (moduleName)
import Control.Arrow
import Control.Concurrent.STM
import "monad-logger" Control.Monad.Logger
+import Data.IORef
import qualified Data.Map.Lazy as Map
+import Data.Time.Clock (UTCTime)
import qualified Language.PureScript as P
import Language.PureScript.Docs.Convert.Single (convertComments)
import Language.PureScript.Externs
+import Language.PureScript.Make.Actions (cacheDbFile)
import Language.PureScript.Ide.Externs
import Language.PureScript.Ide.Reexports
import Language.PureScript.Ide.SourceFile
import Language.PureScript.Ide.Types
import Language.PureScript.Ide.Util
import Lens.Micro.Platform hiding ((&))
+import System.Directory (getModificationTime)
-- | Resets all State inside psc-ide
resetIdeState :: Ide m => m ()
@@ -59,6 +66,31 @@ resetIdeState = do
ideVar <- ideStateVar <$> ask
liftIO (atomically (writeTVar ideVar emptyIdeState))
+getOutputDirectory :: Ide m => m FilePath
+getOutputDirectory = do
+ confOutputPath . ideConfiguration <$> ask
+
+getCacheTimestamp :: Ide m => m (Maybe UTCTime)
+getCacheTimestamp = do
+ x <- ideCacheDbTimestamp <$> ask
+ liftIO (readIORef x)
+
+readCacheTimestamp :: Ide m => m (Maybe UTCTime)
+readCacheTimestamp = do
+ cacheDb <- cacheDbFile <$> getOutputDirectory
+ liftIO (hush <$> try @SomeException (getModificationTime cacheDb))
+
+updateCacheTimestamp :: Ide m => m (Maybe (Maybe UTCTime, Maybe UTCTime))
+updateCacheTimestamp = do
+ old <- getCacheTimestamp
+ new <- readCacheTimestamp
+ if old == new
+ then pure Nothing
+ else do
+ ts <- ideCacheDbTimestamp <$> ask
+ liftIO (writeIORef ts new)
+ pure (Just (old, new))
+
-- | Gets the loaded Modulenames
getLoadedModulenames :: Ide m => m [P.ModuleName]
getLoadedModulenames = Map.keys <$> getExternFiles
@@ -230,6 +262,7 @@ resolveLocationsForModule (defs, types) decls =
annotateDataConstructor
annotateType
annotateKind
+ annotateType -- type classes live in the type namespace
annotateModule
d
where
@@ -249,9 +282,10 @@ convertDeclaration'
-> (Text -> IdeDeclaration -> IdeDeclarationAnn)
-> (Text -> IdeDeclaration -> IdeDeclarationAnn)
-> (Text -> IdeDeclaration -> IdeDeclarationAnn)
+ -> (Text -> IdeDeclaration -> IdeDeclarationAnn)
-> IdeDeclaration
-> IdeDeclarationAnn
-convertDeclaration' annotateFunction annotateValue annotateDataConstructor annotateType annotateKind annotateModule d =
+convertDeclaration' annotateFunction annotateValue annotateDataConstructor annotateType annotateKind annotateClass annotateModule d =
case d of
IdeDeclValue v ->
annotateFunction (v ^. ideValueIdent) d
@@ -262,7 +296,7 @@ convertDeclaration' annotateFunction annotateValue annotateDataConstructor annot
IdeDeclDataConstructor dtor ->
annotateDataConstructor (dtor ^. ideDtorName . properNameT) d
IdeDeclTypeClass tc ->
- annotateType (tc ^. ideTCName . properNameT) d
+ annotateClass (tc ^. ideTCName . properNameT) d
IdeDeclValueOperator operator ->
annotateValue (operator ^. ideValueOpName . opNameT) d
IdeDeclTypeOperator operator ->
@@ -284,15 +318,21 @@ resolveDocumentationForModule
:: P.Module
-> [IdeDeclarationAnn]
-> [IdeDeclarationAnn]
-resolveDocumentationForModule (P.Module _ moduleComments moduleName sdecls _) decls = map convertDecl decls
+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 (<>)) $ concatMap (\case
+ extractDeclComments :: P.Declaration -> [(P.Name, [P.Comment])]
+ extractDeclComments = \case
P.DataDeclaration (_, cs) _ ctorName _ ctors ->
(P.TyName ctorName, cs) : map dtorComments ctors
+ P.TypeClassDeclaration (_, cs) tyClassName _ _ _ members ->
+ (P.TyClassName tyClassName, cs) : concatMap extractDeclComments members
decl ->
- maybe [] (\name' -> [(name', snd (P.declSourceAnn decl))]) (name decl))
- sdecls
+ maybe [] (\name' -> [(name', snd (P.declSourceAnn decl))]) (name decl)
+
+ comments :: Map P.Name [P.Comment]
+ comments = Map.insert (P.ModName moduleName) moduleComments $
+ Map.fromListWith (flip (<>)) $ concatMap extractDeclComments sdecls
dtorComments :: P.DataConstructorDeclaration -> (P.Name, [P.Comment])
dtorComments dcd = (P.DctorName (P.dataCtorName dcd), snd (P.dataCtorAnn dcd))
@@ -309,6 +349,7 @@ resolveDocumentationForModule (P.Module _ moduleComments moduleName sdecls _) de
(annotateValue . P.DctorName . P.ProperName)
(annotateValue . P.TyName . P.ProperName)
(annotateValue . P.KiName . P.ProperName)
+ (annotateValue . P.TyClassName . P.ProperName)
(annotateValue . P.ModName . P.moduleNameFromString)
d
where
diff --git a/src/Language/PureScript/Ide/Types.hs b/src/Language/PureScript/Ide/Types.hs
index 82cfed9..2fb106a 100644
--- a/src/Language/PureScript/Ide/Types.hs
+++ b/src/Language/PureScript/Ide/Types.hs
@@ -1,28 +1,17 @@
------------------------------------------------------------------------------
---
--- Module : Language.PureScript.Ide.Types
--- Description : Type definitions for psc-ide
--- Copyright : Christoph Hegemann 2016
--- License : MIT (http://opensource.org/licenses/MIT)
---
--- Maintainer : Christoph Hegemann <christoph.hegemann1337@gmail.com>
--- Stability : experimental
---
-- |
-- Type definitions for psc-ide
------------------------------------------------------------------------------
-{-# LANGUAGE DeriveGeneric #-}
-{-# LANGUAGE DeriveAnyClass #-}
-{-# LANGUAGE DeriveFoldable #-}
-{-# LANGUAGE TemplateHaskell #-}
+{-# language DeriveGeneric, DeriveAnyClass, DeriveFoldable, TemplateHaskell #-}
module Language.PureScript.Ide.Types where
import Protolude hiding (moduleName)
-import Control.Concurrent.STM
-import Data.Aeson
+import Control.Concurrent.STM (TVar)
+import Data.Aeson (ToJSON, FromJSON, (.=))
+import qualified Data.Aeson as Aeson
+import Data.IORef (IORef)
+import Data.Time.Clock (UTCTime)
import qualified Data.Map.Lazy as M
import qualified Language.PureScript as P
import qualified Language.PureScript.Errors.JSON as P
@@ -45,7 +34,7 @@ data IdeDeclaration
data IdeValue = IdeValue
{ _ideValueIdent :: P.Ident
- , _ideValueType :: P.SourceType
+ , _ideValueType :: P.SourceType
} deriving (Show, Eq, Ord, Generic, NFData)
data IdeType = IdeType
@@ -61,9 +50,9 @@ data IdeTypeSynonym = IdeTypeSynonym
} deriving (Show, Eq, Ord, Generic, NFData)
data IdeDataConstructor = IdeDataConstructor
- { _ideDtorName :: P.ProperName 'P.ConstructorName
+ { _ideDtorName :: P.ProperName 'P.ConstructorName
, _ideDtorTypeName :: P.ProperName 'P.TypeName
- , _ideDtorType :: P.SourceType
+ , _ideDtorType :: P.SourceType
} deriving (Show, Eq, Ord, Generic, NFData)
data IdeTypeClass = IdeTypeClass
@@ -73,26 +62,26 @@ data IdeTypeClass = IdeTypeClass
} deriving (Show, Eq, Ord, Generic, NFData)
data IdeInstance = IdeInstance
- { _ideInstanceModule :: P.ModuleName
- , _ideInstanceName :: P.Ident
- , _ideInstanceTypes :: [P.SourceType]
+ { _ideInstanceModule :: P.ModuleName
+ , _ideInstanceName :: P.Ident
+ , _ideInstanceTypes :: [P.SourceType]
, _ideInstanceConstraints :: Maybe [P.SourceConstraint]
} deriving (Show, Eq, Ord, Generic, NFData)
data IdeValueOperator = IdeValueOperator
- { _ideValueOpName :: P.OpName 'P.ValueOpName
- , _ideValueOpAlias :: P.Qualified (Either P.Ident (P.ProperName 'P.ConstructorName))
- , _ideValueOpPrecedence :: P.Precedence
+ { _ideValueOpName :: P.OpName 'P.ValueOpName
+ , _ideValueOpAlias :: P.Qualified (Either P.Ident (P.ProperName 'P.ConstructorName))
+ , _ideValueOpPrecedence :: P.Precedence
, _ideValueOpAssociativity :: P.Associativity
- , _ideValueOpType :: Maybe P.SourceType
+ , _ideValueOpType :: Maybe P.SourceType
} deriving (Show, Eq, Ord, Generic, NFData)
data IdeTypeOperator = IdeTypeOperator
- { _ideTypeOpName :: P.OpName 'P.TypeOpName
- , _ideTypeOpAlias :: P.Qualified (P.ProperName 'P.TypeName)
- , _ideTypeOpPrecedence :: P.Precedence
+ { _ideTypeOpName :: P.OpName 'P.TypeOpName
+ , _ideTypeOpAlias :: P.Qualified (P.ProperName 'P.TypeName)
+ , _ideTypeOpPrecedence :: P.Precedence
, _ideTypeOpAssociativity :: P.Associativity
- , _ideTypeOpKind :: Maybe P.SourceKind
+ , _ideTypeOpKind :: Maybe P.SourceKind
} deriving (Show, Eq, Ord, Generic, NFData)
_IdeDeclValue :: Traversal' IdeDeclaration IdeValue
@@ -144,16 +133,16 @@ makeLenses ''IdeValueOperator
makeLenses ''IdeTypeOperator
data IdeDeclarationAnn = IdeDeclarationAnn
- { _idaAnnotation :: Annotation
+ { _idaAnnotation :: Annotation
, _idaDeclaration :: IdeDeclaration
} deriving (Show, Eq, Ord, Generic, NFData)
data Annotation
= Annotation
- { _annLocation :: Maybe P.SourceSpan
- , _annExportedFrom :: Maybe P.ModuleName
+ { _annLocation :: Maybe P.SourceSpan
+ , _annExportedFrom :: Maybe P.ModuleName
, _annTypeAnnotation :: Maybe P.SourceType
- , _annDocumentation :: Maybe Text
+ , _annDocumentation :: Maybe Text
} deriving (Show, Eq, Ord, Generic, NFData)
makeLenses ''Annotation
@@ -175,21 +164,21 @@ data IdeLogLevel = LogDebug | LogPerf | LogAll | LogDefault | LogNone
data IdeConfiguration =
IdeConfiguration
{ confOutputPath :: FilePath
- , confLogLevel :: IdeLogLevel
- , confGlobs :: [FilePath]
- , confEditorMode :: Bool
+ , confLogLevel :: IdeLogLevel
+ , confGlobs :: [FilePath]
}
data IdeEnvironment =
IdeEnvironment
- { ideStateVar :: TVar IdeState
+ { ideStateVar :: TVar IdeState
, ideConfiguration :: IdeConfiguration
+ , ideCacheDbTimestamp :: IORef (Maybe UTCTime)
}
type Ide m = (MonadIO m, MonadReader IdeEnvironment m)
data IdeState = IdeState
- { ideFileState :: IdeFileState
+ { ideFileState :: IdeFileState
, ideVolatileState :: IdeVolatileState
} deriving (Show)
@@ -221,8 +210,8 @@ data IdeFileState = IdeFileState
-- with open imports which is used to provide completions for module private
-- declarations
data IdeVolatileState = IdeVolatileState
- { vsAstData :: AstData P.SourceSpan
- , vsDeclarations :: ModuleMap [IdeDeclarationAnn]
+ { vsAstData :: AstData P.SourceSpan
+ , vsDeclarations :: ModuleMap [IdeDeclarationAnn]
, vsCachedRebuild :: Maybe (P.ModuleName, P.ExternsFile)
} deriving (Show)
@@ -231,34 +220,36 @@ newtype Match a = Match (P.ModuleName, a)
-- | A completion as it gets sent to the editors
data Completion = Completion
- { complModule :: Text
- , complIdentifier :: Text
- , complType :: Text
- , complExpandedType :: Text
- , complLocation :: Maybe P.SourceSpan
+ { complModule :: Text
+ , complIdentifier :: Text
+ , complType :: Text
+ , complExpandedType :: Text
+ , complLocation :: Maybe P.SourceSpan
, complDocumentation :: Maybe Text
- , complExportedFrom :: [P.ModuleName]
+ , complExportedFrom :: [P.ModuleName]
} deriving (Show, Eq, Ord)
instance ToJSON Completion where
toJSON (Completion {..}) =
- object [ "module" .= complModule
- , "identifier" .= complIdentifier
- , "type" .= complType
- , "expandedType" .= complExpandedType
- , "definedAt" .= complLocation
- , "documentation" .= complDocumentation
- , "exportedFrom" .= map P.runModuleName complExportedFrom
- ]
+ Aeson.object
+ [ "module" .= complModule
+ , "identifier" .= complIdentifier
+ , "type" .= complType
+ , "expandedType" .= complExpandedType
+ , "definedAt" .= complLocation
+ , "documentation" .= complDocumentation
+ , "exportedFrom" .= map P.runModuleName complExportedFrom
+ ]
identifierFromDeclarationRef :: P.DeclarationRef -> Text
-identifierFromDeclarationRef (P.TypeRef _ name _) = P.runProperName name
-identifierFromDeclarationRef (P.ValueRef _ ident) = P.runIdent ident
-identifierFromDeclarationRef (P.TypeClassRef _ name) = P.runProperName name
-identifierFromDeclarationRef (P.KindRef _ name) = P.runProperName name
-identifierFromDeclarationRef (P.ValueOpRef _ op) = P.showOp op
-identifierFromDeclarationRef (P.TypeOpRef _ op) = P.showOp op
-identifierFromDeclarationRef _ = ""
+identifierFromDeclarationRef = \case
+ P.TypeRef _ name _ -> P.runProperName name
+ P.ValueRef _ ident -> P.runIdent ident
+ P.TypeClassRef _ name -> P.runProperName name
+ P.KindRef _ name -> P.runProperName name
+ P.ValueOpRef _ op -> P.showOp op
+ P.TypeOpRef _ op -> P.showOp op
+ _ -> ""
data Success =
CompletionResult [Completion]
@@ -270,44 +261,53 @@ data Success =
| RebuildSuccess P.MultipleErrors
deriving (Show)
-encodeSuccess :: (ToJSON a) => a -> Value
+encodeSuccess :: ToJSON a => a -> Aeson.Value
encodeSuccess res =
- object ["resultType" .= ("success" :: Text), "result" .= res]
+ Aeson.object ["resultType" .= ("success" :: Text), "result" .= res]
instance ToJSON Success where
- toJSON (CompletionResult cs) = encodeSuccess cs
- toJSON (TextResult t) = encodeSuccess t
- toJSON (UsagesResult ssp) = encodeSuccess ssp
- toJSON (MultilineTextResult ts) = encodeSuccess ts
- toJSON (ImportList (moduleName, imports)) = object [ "resultType" .= ("success" :: Text)
- , "result" .= object [ "imports" .= map encodeImport imports
- , "moduleName" .= P.runModuleName moduleName]]
- toJSON (ModuleList modules) = encodeSuccess modules
- toJSON (RebuildSuccess warnings) = encodeSuccess (P.toJSONErrors False P.Warning warnings)
-
-encodeImport :: (P.ModuleName, P.ImportDeclarationType, Maybe P.ModuleName) -> Value
+ toJSON = \case
+ CompletionResult cs -> encodeSuccess cs
+ TextResult t -> encodeSuccess t
+ UsagesResult ssp -> encodeSuccess ssp
+ MultilineTextResult ts -> encodeSuccess ts
+ ImportList (moduleName, imports) ->
+ Aeson.object
+ [ "resultType" .= ("success" :: Text)
+ , "result" .= Aeson.object
+ [ "imports" .= map encodeImport imports
+ , "moduleName" .= P.runModuleName moduleName
+ ]
+ ]
+ ModuleList modules -> encodeSuccess modules
+ RebuildSuccess warnings -> encodeSuccess (P.toJSONErrors False P.Warning warnings)
+
+encodeImport :: (P.ModuleName, P.ImportDeclarationType, Maybe P.ModuleName) -> Aeson.Value
encodeImport (P.runModuleName -> mn, importType, map P.runModuleName -> qualifier) = case importType of
P.Implicit ->
- object $ [ "module" .= mn
- , "importType" .= ("implicit" :: Text)
- ] ++ map (\x -> "qualifier" .= x) (maybeToList qualifier)
+ Aeson.object $
+ [ "module" .= mn
+ , "importType" .= ("implicit" :: Text)
+ ] ++ map ("qualifier" .=) (maybeToList qualifier)
P.Explicit refs ->
- object $ [ "module" .= mn
- , "importType" .= ("explicit" :: Text)
- , "identifiers" .= (identifierFromDeclarationRef <$> refs)
- ] ++ map (\x -> "qualifier" .= x) (maybeToList qualifier)
+ Aeson.object $
+ [ "module" .= mn
+ , "importType" .= ("explicit" :: Text)
+ , "identifiers" .= (identifierFromDeclarationRef <$> refs)
+ ] ++ map ("qualifier" .=) (maybeToList qualifier)
P.Hiding refs ->
- object $ [ "module" .= mn
- , "importType" .= ("hiding" :: Text)
- , "identifiers" .= (identifierFromDeclarationRef <$> refs)
- ] ++ map (\x -> "qualifier" .= x) (maybeToList qualifier)
+ Aeson.object $
+ [ "module" .= mn
+ , "importType" .= ("hiding" :: Text)
+ , "identifiers" .= (identifierFromDeclarationRef <$> refs)
+ ] ++ map ("qualifier" .=) (maybeToList qualifier)
-- | Denotes the different namespaces a name in PureScript can reside in.
data IdeNamespace = IdeNSValue | IdeNSType | IdeNSKind | IdeNSModule
deriving (Show, Eq, Ord, Generic, NFData)
instance FromJSON IdeNamespace where
- parseJSON (String s) = case s of
+ parseJSON (Aeson.String s) = case s of
"value" -> pure IdeNSValue
"type" -> pure IdeNSType
"kind" -> pure IdeNSKind
diff --git a/src/Language/PureScript/Ide/Watcher.hs b/src/Language/PureScript/Ide/Watcher.hs
deleted file mode 100644
index 9d42ef9..0000000
--- a/src/Language/PureScript/Ide/Watcher.hs
+++ /dev/null
@@ -1,56 +0,0 @@
-{-# LANGUAGE PackageImports #-}
------------------------------------------------------------------------------
---
--- Module : Language.PureScript.Ide.Watcher
--- Description : File watcher for externs files
--- Copyright : Christoph Hegemann 2016
--- License : MIT (http://opensource.org/licenses/MIT)
---
--- Maintainer : Christoph Hegemann <christoph.hegemann1337@gmail.com>
--- Stability : experimental
---
--- |
--- File watcher for externs files
------------------------------------------------------------------------------
-
-module Language.PureScript.Ide.Watcher
- ( watcher
- ) where
-
-import Protolude
-
-import Control.Concurrent.STM
-import "monad-logger" Control.Monad.Logger
-import Language.PureScript.Ide.Externs
-import Language.PureScript.Ide.State
-import Language.PureScript.Ide.Types
-import Language.PureScript.Ide.Util
-import System.FSNotify
-import System.FilePath
-
--- | Reloads an ExternsFile from Disc. If the Event indicates the ExternsFile
--- was deleted we don't do anything.
-reloadFile :: IdeLogLevel -> TVar IdeState -> Event -> IO ()
-reloadFile _ _ Removed{} = pure ()
-reloadFile logLevel ref ev = runLogger logLevel $ do
- let fp = eventPath ev
- ef' <- runExceptT (readExternFile fp)
- case ef' of
- Left err ->
- logErrorN ("Failed to reload file at: " <> toS fp <> " with error: " <> show err)
- Right ef -> do
- lift $ void $ atomically (insertExternsSTM ref ef *> populateVolatileStateSTM ref)
- logDebugN ("Reloaded File at: " <> toS fp)
-
--- | Installs filewatchers for the given directory and reloads ExternsFiles when
--- they change on disc
-watcher :: Bool -> IdeLogLevel -> TVar IdeState -> FilePath -> IO ()
-watcher polling logLevel stateVar fp =
- withManagerConf
- (defaultConfig { confDebounce = NoDebounce
- , confUsePolling = polling
- }) $ \mgr -> do
- _ <- watchTree mgr fp
- (\ev -> takeFileName (eventPath ev) == "externs.json")
- (reloadFile logLevel stateVar)
- forever (threadDelay 100000)
diff --git a/src/Language/PureScript/Interactive.hs b/src/Language/PureScript/Interactive.hs
index c4b2f8e..191c486 100644
--- a/src/Language/PureScript/Interactive.hs
+++ b/src/Language/PureScript/Interactive.hs
@@ -274,7 +274,7 @@ handleTypeOf print' val = do
case e of
Left errs -> printErrors errs
Right (_, env') ->
- case M.lookup (P.mkQualified (P.Ident "it") (P.ModuleName [P.ProperName "$PSCI"])) (P.names env') of
+ case M.lookup (P.mkQualified (P.Ident "it") (P.ModuleName "$PSCI")) (P.names env') of
Just (ty, _, _) -> print' . P.prettyPrintType maxBound $ ty
Nothing -> print' "Could not find type"
@@ -287,7 +287,7 @@ handleKindOf
handleKindOf print' typ = do
st <- get
let m = createTemporaryModuleForKind st typ
- mName = P.ModuleName [P.ProperName "$PSCI"]
+ mName = P.ModuleName "$PSCI"
e <- liftIO . runMake $ rebuild (map snd (psciLoadedExterns st)) m
case e of
Left errs -> printErrors errs
diff --git a/src/Language/PureScript/Interactive/Module.hs b/src/Language/PureScript/Interactive/Module.hs
index 7bc01c5..db422a8 100644
--- a/src/Language/PureScript/Interactive/Module.hs
+++ b/src/Language/PureScript/Interactive/Module.hs
@@ -45,18 +45,18 @@ createTemporaryModule exec st val =
let
imports = psciImportedModules st
lets = psciLetBindings st
- moduleName = P.ModuleName [P.ProperName "$PSCI"]
- effModuleName = P.moduleNameFromString "Effect"
- effImport = (effModuleName, P.Implicit, Just (P.ModuleName [P.ProperName "$Effect"]))
- supportImport = (fst (psciInteractivePrint st), P.Implicit, Just (P.ModuleName [P.ProperName "$Support"]))
- eval = P.Var internalSpan (P.Qualified (Just (P.ModuleName [P.ProperName "$Support"])) (snd (psciInteractivePrint st)))
+ moduleName = P.ModuleName "$PSCI"
+ effModuleName = P.ModuleName "Effect"
+ effImport = (effModuleName, P.Implicit, Just (P.ModuleName "$Effect"))
+ supportImport = (fst (psciInteractivePrint st), P.Implicit, Just (P.ModuleName "$Support"))
+ eval = P.Var internalSpan (P.Qualified (Just (P.ModuleName "$Support")) (snd (psciInteractivePrint st)))
mainValue = P.App eval (P.Var internalSpan (P.Qualified Nothing (P.Ident "it")))
itDecl = P.ValueDecl (internalSpan, []) (P.Ident "it") P.Public [] [P.MkUnguarded val]
typeDecl = P.TypeDeclaration
(P.TypeDeclarationData (internalSpan, []) (P.Ident "$main")
(P.srcTypeApp
(P.srcTypeConstructor
- (P.Qualified (Just (P.ModuleName [P.ProperName "$Effect"])) (P.ProperName "Effect")))
+ (P.Qualified (Just (P.ModuleName "$Effect")) (P.ProperName "Effect")))
P.srcTypeWildcard))
mainDecl = P.ValueDecl (internalSpan, []) (P.Ident "$main") P.Public [] [P.MkUnguarded mainValue]
decls = if exec then [itDecl, typeDecl, mainDecl] else [itDecl]
@@ -75,7 +75,7 @@ createTemporaryModuleForKind st typ =
let
imports = psciImportedModules st
lets = psciLetBindings st
- moduleName = P.ModuleName [P.ProperName "$PSCI"]
+ moduleName = P.ModuleName "$PSCI"
itDecl = P.TypeSynonymDeclaration (internalSpan, []) (P.ProperName "IT") [] typ
in
P.Module internalSpan [] moduleName ((importDecl `map` imports) ++ lets ++ [itDecl]) Nothing
@@ -87,7 +87,7 @@ createTemporaryModuleForImports :: PSCiState -> P.Module
createTemporaryModuleForImports st =
let
imports = psciImportedModules st
- moduleName = P.ModuleName [P.ProperName "$PSCI"]
+ moduleName = P.ModuleName "$PSCI"
in
P.Module internalSpan [] moduleName (importDecl `map` imports) Nothing
diff --git a/src/Language/PureScript/Interactive/Types.hs b/src/Language/PureScript/Interactive/Types.hs
index cb4693e..1b0c621 100644
--- a/src/Language/PureScript/Interactive/Types.hs
+++ b/src/Language/PureScript/Interactive/Types.hs
@@ -134,12 +134,12 @@ updateImportExports st@(PSCiState modules lets externs iprint _ _) =
createEnv = runExceptT =<< fmap fst . runWriterT . foldM P.externsEnv P.primEnv
temporaryName :: P.ModuleName
- temporaryName = P.ModuleName [P.ProperName "$PSCI"]
+ temporaryName = P.ModuleName "$PSCI"
temporaryModule :: P.Module
temporaryModule =
let
- prim = (P.ModuleName [P.ProperName "Prim"], P.Implicit, Nothing)
+ prim = (P.ModuleName "Prim", P.Implicit, Nothing)
decl = (importDecl `map` (prim : modules)) ++ lets
in
P.Module internalSpan [] temporaryName decl Nothing
diff --git a/src/Language/PureScript/Kinds.hs b/src/Language/PureScript/Kinds.hs
index 0e7d19c..6811273 100644
--- a/src/Language/PureScript/Kinds.hs
+++ b/src/Language/PureScript/Kinds.hs
@@ -9,6 +9,7 @@ module Language.PureScript.Kinds where
import Prelude.Compat
import GHC.Generics (Generic)
+import Codec.Serialise (Serialise)
import Control.Applicative ((<|>))
import Control.DeepSeq (NFData)
import Data.Text (Text)
@@ -36,6 +37,7 @@ data Kind a
deriving (Show, Generic, Functor, Foldable, Traversable)
instance NFData a => NFData (Kind a)
+instance Serialise a => Serialise (Kind a)
srcKUnknown :: Int -> SourceKind
srcKUnknown = KUnknown NullSourceAnn
diff --git a/src/Language/PureScript/Label.hs b/src/Language/PureScript/Label.hs
index accd314..0244c90 100644
--- a/src/Language/PureScript/Label.hs
+++ b/src/Language/PureScript/Label.hs
@@ -5,6 +5,7 @@ module Language.PureScript.Label (Label(..)) where
import Prelude.Compat hiding (lex)
import GHC.Generics (Generic)
+import Codec.Serialise (Serialise)
import Control.DeepSeq (NFData)
import Data.Monoid ()
import Data.String (IsString(..))
@@ -20,3 +21,4 @@ newtype Label = Label { runLabel :: PSString }
deriving (Show, Eq, Ord, IsString, Semigroup, Monoid, A.ToJSON, A.FromJSON, Generic)
instance NFData Label
+instance Serialise Label
diff --git a/src/Language/PureScript/Linter/Imports.hs b/src/Language/PureScript/Linter/Imports.hs
index 5396328..a925aaf 100644
--- a/src/Language/PureScript/Linter/Imports.hs
+++ b/src/Language/PureScript/Linter/Imports.hs
@@ -142,7 +142,7 @@ lintImports (Module _ _ mn mdecls (Just mexports)) env usedImps = do
-- Checks whether a module is the Prim module - used to suppress any checks
-- made, as Prim is always implicitly imported.
isPrim :: ModuleName -> Bool
- isPrim = (== ModuleName [ProperName C.prim])
+ isPrim = (== C.Prim)
-- Creates a map of virtual modules mapped to all the declarations that
-- import to that module, with the corresponding source span, import type,
diff --git a/src/Language/PureScript/Make.hs b/src/Language/PureScript/Make.hs
index ec4b625..1831c42 100644
--- a/src/Language/PureScript/Make.hs
+++ b/src/Language/PureScript/Make.hs
@@ -110,7 +110,7 @@ rebuildModule' MakeActions{..} exEnv externs m@(Module _ _ moduleName _ _) = do
evalSupplyT nextVar' $ codegen renamed docs exts
return exts
--- | Compiles in "make" mode, compiling each module separately to a @.js@ file and an @externs.json@ file.
+-- | Compiles in "make" mode, compiling each module separately to a @.js@ file and an @externs.cbor@ file.
--
-- If timestamps or hashes have not changed, existing externs files can be used to provide upstream modules' types without
-- having to typecheck those modules again.
diff --git a/src/Language/PureScript/Make/Actions.hs b/src/Language/PureScript/Make/Actions.hs
index b3fe5ee..8df779d 100644
--- a/src/Language/PureScript/Make/Actions.hs
+++ b/src/Language/PureScript/Make/Actions.hs
@@ -4,6 +4,9 @@ module Language.PureScript.Make.Actions
, ProgressMessage(..)
, buildMakeActions
, checkForeignDecls
+ , cacheDbFile
+ , readCacheDb'
+ , writeCacheDb'
) where
import Prelude
@@ -39,7 +42,7 @@ import qualified Language.PureScript.CST as CST
import qualified Language.PureScript.Docs.Prim as Docs.Prim
import qualified Language.PureScript.Docs.Types as Docs
import Language.PureScript.Errors
-import Language.PureScript.Externs (ExternsFile)
+import Language.PureScript.Externs (ExternsFile, externsFileName)
import Language.PureScript.Make.Monad
import Language.PureScript.Make.Cache
import Language.PureScript.Names
@@ -105,6 +108,28 @@ data MakeActions m = MakeActions
-- ^ If generating docs, output the documentation for the Prim modules
}
+-- | Given the output directory, determines the location for the
+-- CacheDb file
+cacheDbFile :: FilePath -> FilePath
+cacheDbFile = (</> "cache-db.json")
+
+readCacheDb'
+ :: (MonadIO m, MonadError MultipleErrors m)
+ => FilePath
+ -- ^ The path to the output directory
+ -> m CacheDb
+readCacheDb' outputDir =
+ fromMaybe mempty <$> readJSONFile (cacheDbFile outputDir)
+
+writeCacheDb'
+ :: (MonadIO m, MonadError MultipleErrors m)
+ => FilePath
+ -- ^ The path to the output directory
+ -> CacheDb
+ -- ^ The CacheDb to be written
+ -> m ()
+writeCacheDb' = writeJSONFile . cacheDbFile
+
-- | A set of make actions that read and write modules from the given directory.
buildMakeActions
:: FilePath
@@ -129,7 +154,8 @@ buildMakeActions outputDir filePathMap foreigns usePrefix =
Left policy ->
return (Left policy)
Right filePath -> do
- let inputPaths = filePath : maybeToList (M.lookup mn foreigns)
+ cwd <- makeIO "Getting the current directory" getCurrentDirectory
+ let inputPaths = map (normaliseForCache cwd) (filePath : maybeToList (M.lookup mn foreigns))
getInfo fp = do
ts <- getTimestamp fp
return (ts, hashFile fp)
@@ -151,13 +177,13 @@ buildMakeActions outputDir filePathMap foreigns usePrefix =
getOutputTimestamp :: ModuleName -> Make (Maybe UTCTime)
getOutputTimestamp mn = do
codegenTargets <- asks optionsCodegenTargets
- let outputPaths = [outputFilename mn "externs.json"] <> fmap (targetFilename mn) (S.toList codegenTargets)
+ let outputPaths = [outputFilename mn externsFileName] <> fmap (targetFilename mn) (S.toList codegenTargets)
timestamps <- traverse getTimestampMaybe outputPaths
pure $ fmap minimum . NEL.nonEmpty =<< sequence timestamps
readExterns :: ModuleName -> Make (FilePath, Maybe ExternsFile)
readExterns mn = do
- let path = outputDir </> T.unpack (runModuleName mn) </> "externs.json"
+ let path = outputDir </> T.unpack (runModuleName mn) </> externsFileName
(path, ) <$> readExternsFile path
outputPrimDocs :: Make ()
@@ -169,7 +195,7 @@ buildMakeActions outputDir filePathMap foreigns usePrefix =
codegen :: CF.Module CF.Ann -> Docs.Module -> ExternsFile -> SupplyT Make ()
codegen m docs exts = do
let mn = CF.moduleName m
- lift $ writeJSONFile (outputFilename mn "externs.json") exts
+ lift $ writeCborFile (outputFilename mn externsFileName) exts
codegenTargets <- lift $ asks optionsCodegenTargets
when (S.member CoreFn codegenTargets) $ do
let coreFnFile = targetFilename mn CoreFn
@@ -246,12 +272,10 @@ buildMakeActions outputDir filePathMap foreigns usePrefix =
progress = liftIO . putStrLn . renderProgressMessage
readCacheDb :: Make CacheDb
- readCacheDb = fmap (fromMaybe mempty) $ readJSONFile cacheDbFile
+ readCacheDb = readCacheDb' outputDir
writeCacheDb :: CacheDb -> Make ()
- writeCacheDb = writeJSONFile cacheDbFile
-
- cacheDbFile = outputDir </> "cache-db.json"
+ writeCacheDb = writeCacheDb' outputDir
-- | Check that the declarations in a given PureScript module match with those
-- in its corresponding foreign module.
diff --git a/src/Language/PureScript/Make/BuildPlan.hs b/src/Language/PureScript/Make/BuildPlan.hs
index 8d409f6..a8b0bfb 100644
--- a/src/Language/PureScript/Make/BuildPlan.hs
+++ b/src/Language/PureScript/Make/BuildPlan.hs
@@ -14,6 +14,7 @@ import Prelude
import Control.Concurrent.Async.Lifted as A
import Control.Concurrent.Lifted as C
+import Control.Monad.Base (liftBase)
import Control.Monad hiding (sequence)
import Control.Monad.Trans.Control (MonadBaseControl(..))
import Control.Monad.Trans.Maybe (MaybeT(..), runMaybeT)
@@ -30,6 +31,7 @@ import Language.PureScript.Make.Actions as Actions
import Language.PureScript.Make.Cache
import Language.PureScript.Names (ModuleName)
import Language.PureScript.Sugar.Names.Env
+import System.Directory (getCurrentDirectory)
-- | The BuildPlan tracks information about our build progress, and holds all
-- prebuilt modules for incremental builds.
@@ -176,7 +178,8 @@ construct MakeActions{..} cacheDb (sorted, graph) = do
, statusNewCacheInfo = Nothing
})
Right cacheInfo -> do
- (newCacheInfo, isUpToDate) <- checkChanged cacheDb moduleName cacheInfo
+ cwd <- liftBase getCurrentDirectory
+ (newCacheInfo, isUpToDate) <- checkChanged cacheDb moduleName cwd cacheInfo
prebuilt <-
if isUpToDate
then findExistingExtern moduleName
diff --git a/src/Language/PureScript/Make/Cache.hs b/src/Language/PureScript/Make/Cache.hs
index 47f7f0e..bfc3e4c 100644
--- a/src/Language/PureScript/Make/Cache.hs
+++ b/src/Language/PureScript/Make/Cache.hs
@@ -4,9 +4,10 @@ module Language.PureScript.Make.Cache
( ContentHash
, hash
, CacheDb
- , CacheInfo
+ , CacheInfo(..)
, checkChanged
, removeModules
+ , normaliseForCache
) where
import Prelude
@@ -29,6 +30,7 @@ import Data.Text.Encoding (encodeUtf8, decodeUtf8)
import Data.These (These(..))
import Data.Time.Clock (UTCTime)
import Data.Traversable (for)
+import qualified System.FilePath as FilePath
import Language.PureScript.Names (ModuleName)
@@ -93,13 +95,15 @@ checkChanged
:: Monad m
=> CacheDb
-> ModuleName
+ -> FilePath
-> Map FilePath (UTCTime, m ContentHash)
-> m (CacheInfo, Bool)
-checkChanged cacheDb mn currentInfo = do
+checkChanged cacheDb mn basePath currentInfo = do
+
let dbInfo = unCacheInfo $ fromMaybe mempty (Map.lookup mn cacheDb)
(newInfo, isUpToDate) <-
fmap mconcat $
- for (Map.toList (align dbInfo currentInfo)) $ \(fp, aligned) -> do
+ for (Map.toList (align dbInfo currentInfo)) $ \(normaliseForCache basePath -> fp, aligned) -> do
case aligned of
This _ -> do
-- One of the input files listed in the cache no longer exists;
@@ -128,3 +132,20 @@ checkChanged cacheDb mn currentInfo = do
-- they failed to build.
removeModules :: Set ModuleName -> CacheDb -> CacheDb
removeModules moduleNames = flip Map.withoutKeys moduleNames
+
+-- | 1. Any path that is beneath our current working directory will be
+-- stored as a normalised relative path
+-- 2. Any path that isn't will be stored as an absolute path
+normaliseForCache :: FilePath -> FilePath -> FilePath
+normaliseForCache basePath fp =
+ if FilePath.isRelative fp then
+ FilePath.normalise fp
+ else
+ let relativePath = FilePath.makeRelative basePath fp in
+ if FilePath.isRelative relativePath then
+ FilePath.normalise relativePath
+ else
+ -- If the path is still absolute after trying to make it
+ -- relative to the base that means it is not underneath
+ -- the base path
+ FilePath.normalise fp
diff --git a/src/Language/PureScript/Make/Monad.hs b/src/Language/PureScript/Make/Monad.hs
index ed2a2dc..0f5aad1 100644
--- a/src/Language/PureScript/Make/Monad.hs
+++ b/src/Language/PureScript/Make/Monad.hs
@@ -9,16 +9,23 @@ module Language.PureScript.Make.Monad
, getTimestampMaybe
, readTextFile
, readJSONFile
+ , readJSONFileIO
+ , readCborFile
+ , readCborFileIO
, readExternsFile
, hashFile
, writeTextFile
, writeJSONFile
+ , writeCborFile
+ , writeCborFileIO
, copyFile
) where
import Prelude
-import Control.Exception (tryJust)
+import Codec.Serialise (Serialise)
+import qualified Codec.Serialise as Serialise
+import Control.Exception (fromException, tryJust)
import Control.Monad (join, guard)
import Control.Monad.Base (MonadBase(..))
import Control.Monad.Error.Class (MonadError(..))
@@ -64,26 +71,26 @@ runMake opts = runLogger' . runExceptT . flip runReaderT opts . unMake
-- | Run an 'IO' action in the 'Make' monad. The 'String' argument should
-- describe what we were trying to do; it is used for rendering errors in the
-- case that an IOException is thrown.
-makeIO :: Text -> IO a -> Make a
+makeIO :: (MonadIO m, MonadError MultipleErrors m) => Text -> IO a -> m a
makeIO description io = do
- e <- liftIO $ tryIOError io
- either (throwError . singleError . ErrorMessage [] . FileIOError description) return e
+ res <- liftIO (tryIOError io)
+ either (throwError . singleError . ErrorMessage [] . FileIOError description) pure res
-- | Get a file's modification time in the 'Make' monad, capturing any errors
-- using the 'MonadError' instance.
-getTimestamp :: FilePath -> Make UTCTime
+getTimestamp :: (MonadIO m, MonadError MultipleErrors m) => FilePath -> m UTCTime
getTimestamp path =
makeIO ("get a timestamp for file: " <> Text.pack path) $ getModificationTime path
-- | Get a file's modification time in the 'Make' monad, returning Nothing if
-- the file does not exist.
-getTimestampMaybe :: FilePath -> Make (Maybe UTCTime)
+getTimestampMaybe :: (MonadIO m, MonadError MultipleErrors m) => FilePath -> m (Maybe UTCTime)
getTimestampMaybe path =
makeIO ("get a timestamp for file: " <> Text.pack path) $ catchDoesNotExist $ getModificationTime path
-- | Read a text file strictly in the 'Make' monad, capturing any errors using
-- the 'MonadError' instance.
-readTextFile :: FilePath -> Make Text
+readTextFile :: (MonadIO m, MonadError MultipleErrors m) => FilePath -> m Text
readTextFile path =
makeIO ("read file: " <> Text.pack path) $
readUTF8FileT path
@@ -91,24 +98,39 @@ readTextFile path =
-- | Read a JSON file in the 'Make' monad, returning 'Nothing' if the file does
-- not exist or could not be parsed. Errors are captured using the 'MonadError'
-- instance.
-readJSONFile :: Aeson.FromJSON a => FilePath -> Make (Maybe a)
+readJSONFile :: (MonadIO m, MonadError MultipleErrors m) => Aeson.FromJSON a => FilePath -> m (Maybe a)
readJSONFile path =
- makeIO ("read JSON file: " <> Text.pack path) $ do
- r <- catchDoesNotExist $ Aeson.decodeFileStrict' path
- return $ join r
+ makeIO ("read JSON file: " <> Text.pack path) (readJSONFileIO path)
+
+readJSONFileIO :: Aeson.FromJSON a => FilePath -> IO (Maybe a)
+readJSONFileIO path = do
+ r <- catchDoesNotExist $ Aeson.decodeFileStrict' path
+ return $ join r
+
+-- | Read a Cbor encoded file in the 'Make' monad, returning
+-- 'Nothing' if the file does not exist or could not be parsed. Errors
+-- are captured using the 'MonadError' instance.
+readCborFile :: (MonadIO m, MonadError MultipleErrors m) => Serialise a => FilePath -> m (Maybe a)
+readCborFile path =
+ makeIO ("read Binary file: " <> Text.pack path) (readCborFileIO path)
+
+readCborFileIO :: Serialise a => FilePath -> IO (Maybe a)
+readCborFileIO path = do
+ r <- catchDoesNotExist $ catchDeserialiseFailure $ Serialise.readFileDeserialise path
+ return (join r)
-- | Read an externs file, returning 'Nothing' if the file does not exist,
-- could not be parsed, or was generated by a different version of the
-- compiler.
-readExternsFile :: FilePath -> Make (Maybe ExternsFile)
+readExternsFile :: (MonadIO m, MonadError MultipleErrors m) => FilePath -> m (Maybe ExternsFile)
readExternsFile path = do
- mexterns <- readJSONFile path
+ mexterns <- readCborFile path
return $ do
externs <- mexterns
guard $ externsIsCurrentVersion externs
return externs
-hashFile :: FilePath -> Make ContentHash
+hashFile :: (MonadIO m, MonadError MultipleErrors m) => FilePath -> m ContentHash
hashFile path = do
makeIO ("hash file: " <> Text.pack path)
(hash <$> B.readFile path)
@@ -124,6 +146,15 @@ catchDoesNotExist inner = do
Right x ->
return (Just x)
+catchDeserialiseFailure :: IO a -> IO (Maybe a)
+catchDeserialiseFailure inner = do
+ r <- tryJust fromException inner
+ case r of
+ Left (_ :: Serialise.DeserialiseFailure) ->
+ return Nothing
+ Right x ->
+ return (Just x)
+
-- | Write a text file in the 'Make' monad, capturing any errors using the
-- 'MonadError' instance.
writeTextFile :: FilePath -> B.ByteString -> Make ()
@@ -133,14 +164,23 @@ writeTextFile path text = makeIO ("write file: " <> Text.pack path) $ do
-- | Write a JSON file in the 'Make' monad, capturing any errors using the
-- 'MonadError' instance.
-writeJSONFile :: Aeson.ToJSON a => FilePath -> a -> Make ()
+writeJSONFile :: (MonadIO m, MonadError MultipleErrors m) => Aeson.ToJSON a => FilePath -> a -> m ()
writeJSONFile path value = makeIO ("write JSON file: " <> Text.pack path) $ do
createParentDirectory path
Aeson.encodeFile path value
+writeCborFile :: (MonadIO m, MonadError MultipleErrors m) => Serialise a => FilePath -> a -> m ()
+writeCborFile path value =
+ makeIO ("write Cbor file: " <> Text.pack path) (writeCborFileIO path value)
+
+writeCborFileIO :: Serialise a => FilePath -> a -> IO ()
+writeCborFileIO path value = do
+ createParentDirectory path
+ Serialise.writeFileSerialise path value
+
-- | Copy a file in the 'Make' monad, capturing any errors using the
-- 'MonadError' instance.
-copyFile :: FilePath -> FilePath -> Make ()
+copyFile :: (MonadIO m, MonadError MultipleErrors m) => FilePath -> FilePath -> m ()
copyFile src dest =
makeIO ("copy file: " <> Text.pack src <> " -> " <> Text.pack dest) $ do
createParentDirectory dest
diff --git a/src/Language/PureScript/Names.hs b/src/Language/PureScript/Names.hs
index 5f8afd7..63e2842 100644
--- a/src/Language/PureScript/Names.hs
+++ b/src/Language/PureScript/Names.hs
@@ -2,6 +2,7 @@
{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE DeriveTraversable #-}
{-# LANGUAGE DeriveFoldable #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
-- |
-- Data types for names
@@ -10,9 +11,11 @@ module Language.PureScript.Names where
import Prelude.Compat
+import Codec.Serialise (Serialise)
import Control.Monad.Supply.Class
import Control.DeepSeq (NFData)
import Data.Functor.Contravariant (contramap)
+import qualified Data.Vector as V
import GHC.Generics (Generic)
import Data.Aeson
@@ -33,6 +36,7 @@ data Name
deriving (Eq, Ord, Show, Generic)
instance NFData Name
+instance Serialise Name
getIdentName :: Name -> Maybe Ident
getIdentName (IdentName name) = Just name
@@ -85,6 +89,7 @@ data Ident
deriving (Show, Eq, Ord, Generic)
instance NFData Ident
+instance Serialise Ident
runIdent :: Ident -> Text
runIdent (Ident i) = i
@@ -108,6 +113,7 @@ newtype OpName (a :: OpNameType) = OpName { runOpName :: Text }
deriving (Show, Eq, Ord, Generic)
instance NFData (OpName a)
+instance Serialise (OpName a)
instance ToJSON (OpName a) where
toJSON = toJSON . runOpName
@@ -133,6 +139,7 @@ newtype ProperName (a :: ProperNameType) = ProperName { runProperName :: Text }
deriving (Show, Eq, Ord, Generic)
instance NFData (ProperName a)
+instance Serialise (ProperName a)
instance ToJSON (ProperName a) where
toJSON = toJSON . runProperName
@@ -161,25 +168,20 @@ coerceProperName = ProperName . runProperName
-- |
-- Module names
--
-newtype ModuleName = ModuleName [ProperName 'Namespace]
+newtype ModuleName = ModuleName Text
deriving (Show, Eq, Ord, Generic)
+ deriving newtype Serialise
instance NFData ModuleName
runModuleName :: ModuleName -> Text
-runModuleName (ModuleName pns) = T.intercalate "." (runProperName <$> pns)
+runModuleName (ModuleName name) = name
moduleNameFromString :: Text -> ModuleName
-moduleNameFromString = ModuleName . splitProperNames
- where
- splitProperNames s = case T.dropWhile (== '.') s of
- "" -> []
- s' -> ProperName w : splitProperNames s''
- where (w, s'') = T.break (== '.') s'
+moduleNameFromString = ModuleName
isBuiltinModuleName :: ModuleName -> Bool
-isBuiltinModuleName (ModuleName (ProperName "Prim" : _)) = True
-isBuiltinModuleName _ = False
+isBuiltinModuleName (ModuleName mn) = mn == "Prim" || T.isPrefixOf "Prim." mn
-- |
-- A qualified name, i.e. a name with an optional module name
@@ -188,6 +190,7 @@ data Qualified a = Qualified (Maybe ModuleName) a
deriving (Show, Eq, Ord, Functor, Foldable, Traversable, Generic)
instance NFData a => NFData (Qualified a)
+instance Serialise a => Serialise (Qualified a)
showQualified :: (a -> Text) -> Qualified a -> Text
showQualified f (Qualified Nothing a) = f a
@@ -243,7 +246,14 @@ isQualifiedWith _ _ = False
$(deriveJSON (defaultOptions { sumEncoding = ObjectWithSingleField }) ''Qualified)
$(deriveJSON (defaultOptions { sumEncoding = ObjectWithSingleField }) ''Ident)
-$(deriveJSON (defaultOptions { sumEncoding = ObjectWithSingleField }) ''ModuleName)
+
+instance ToJSON ModuleName where
+ toJSON (ModuleName name) = toJSON (T.splitOn "." name)
+
+instance FromJSON ModuleName where
+ parseJSON = withArray "ModuleName" $ \names -> do
+ names' <- traverse parseJSON names
+ pure (ModuleName (T.intercalate "." (V.toList names')))
instance ToJSONKey ModuleName where
toJSONKey = contramap runModuleName toJSONKey
diff --git a/src/Language/PureScript/PSString.hs b/src/Language/PureScript/PSString.hs
index 48a042f..09e62bd 100644
--- a/src/Language/PureScript/PSString.hs
+++ b/src/Language/PureScript/PSString.hs
@@ -15,6 +15,7 @@ module Language.PureScript.PSString
import Prelude.Compat
import GHC.Generics (Generic)
+import Codec.Serialise (Serialise)
import Control.DeepSeq (NFData)
import Control.Exception (try, evaluate)
import Control.Applicative ((<|>))
@@ -54,6 +55,7 @@ newtype PSString = PSString { toUTF16CodeUnits :: [Word16] }
deriving (Eq, Ord, Semigroup, Monoid, Generic)
instance NFData PSString
+instance Serialise PSString
instance Show PSString where
show = show . codePoints
diff --git a/src/Language/PureScript/Publish.hs b/src/Language/PureScript/Publish.hs
index 812e0b4..19a9f57 100644
--- a/src/Language/PureScript/Publish.hs
+++ b/src/Language/PureScript/Publish.hs
@@ -48,6 +48,7 @@ import qualified Web.Bower.PackageMeta as Bower
import Language.PureScript.Publish.ErrorsWarnings
import Language.PureScript.Publish.Utils
import qualified Language.PureScript as P (version, ModuleName)
+import qualified Language.PureScript.CoreFn.FromJSON as P
import qualified Language.PureScript.Docs as D
data PublishOptions = PublishOptions
@@ -199,7 +200,7 @@ getVersionFromGitTag = do
dropWhile isSpace >>> reverse >>> dropWhile isSpace >>> reverse
parseMay str = do
digits <- stripPrefix "v" str
- (str,) <$> D.parseVersion' digits
+ (str,) <$> P.parseVersion' digits
-- | Given a git tag, get the time it was created.
getTagTime :: Text -> PrepareM UTCTime
@@ -335,7 +336,7 @@ asResolutions =
asVersion :: Parse D.PackageError Version
asVersion =
- withString (note D.InvalidVersion . D.parseVersion')
+ withString (note D.InvalidVersion . P.parseVersion')
-- | Extracts all dependencies and their versions from a legacy resolutions
-- file, which is based on the output of `bower list --json --offline`.
@@ -373,7 +374,7 @@ asLegacyResolutions =
let
tag' = fromMaybe tag (T.stripPrefix "v" tag)
in
- note D.InvalidVersion (D.parseVersion' (T.unpack tag'))
+ note D.InvalidVersion (P.parseVersion' (T.unpack tag'))
other ->
return (ResolvedOther other)
return $ Just (directory, status)
diff --git a/src/Language/PureScript/Sugar/TypeClasses.hs b/src/Language/PureScript/Sugar/TypeClasses.hs
index 761de6f..2e15f19 100644
--- a/src/Language/PureScript/Sugar/TypeClasses.hs
+++ b/src/Language/PureScript/Sugar/TypeClasses.hs
@@ -52,7 +52,7 @@ desugarTypeClasses externs = flip evalStateT initialState . traverse desugarModu
initialState :: MemberMap
initialState =
mconcat
- [ M.mapKeys (qualify (ModuleName [ProperName C.prim])) primClasses
+ [ M.mapKeys (qualify C.Prim) primClasses
, M.mapKeys (qualify C.PrimRow) primRowClasses
, M.mapKeys (qualify C.PrimRowList) primRowListClasses
, M.mapKeys (qualify C.PrimSymbol) primSymbolClasses
diff --git a/src/Language/PureScript/Sugar/TypeClasses/Deriving.hs b/src/Language/PureScript/Sugar/TypeClasses/Deriving.hs
index 82e11a7..0e4c758 100755
--- a/src/Language/PureScript/Sugar/TypeClasses/Deriving.hs
+++ b/src/Language/PureScript/Sugar/TypeClasses/Deriving.hs
@@ -258,19 +258,19 @@ deriveNewtypeInstance ss mn syns ndis className ds tys tyConNm dargs = do
else tell . errorMessage' ss $ UnverifiableSuperclassInstance constraintClass className tys
dataGenericRep :: ModuleName
-dataGenericRep = ModuleName [ ProperName "Data", ProperName "Generic", ProperName "Rep" ]
+dataGenericRep = ModuleName "Data.Generic.Rep"
dataEq :: ModuleName
-dataEq = ModuleName [ ProperName "Data", ProperName "Eq" ]
+dataEq = ModuleName "Data.Eq"
dataOrd :: ModuleName
-dataOrd = ModuleName [ ProperName "Data", ProperName "Ord" ]
+dataOrd = ModuleName "Data.Ord"
dataNewtype :: ModuleName
-dataNewtype = ModuleName [ ProperName "Data", ProperName "Newtype" ]
+dataNewtype = ModuleName "Data.Newtype"
dataFunctor :: ModuleName
-dataFunctor = ModuleName [ ProperName "Data", ProperName "Functor" ]
+dataFunctor = ModuleName "Data.Functor"
unguarded :: Expr -> [GuardedExpr]
unguarded e = [MkUnguarded e]
@@ -453,7 +453,7 @@ deriveEq ss mn syns ds tyConNm = do
mkEqFunction _ = internalError "mkEqFunction: expected DataDeclaration"
preludeConj :: Expr -> Expr -> Expr
- preludeConj = App . App (Var ss (Qualified (Just (ModuleName [ProperName "Data", ProperName "HeytingAlgebra"])) (Ident C.conj)))
+ preludeConj = App . App (Var ss (Qualified (Just (ModuleName "Data.HeytingAlgebra")) (Ident C.conj)))
preludeEq :: Expr -> Expr -> Expr
preludeEq = App . App (Var ss (Qualified (Just dataEq) (Ident C.eq)))
@@ -533,7 +533,7 @@ deriveOrd ss mn syns ds tyConNm = do
catchAll = CaseAlternative [NullBinder, NullBinder] (unguarded (orderingCtor "EQ"))
orderingName :: Text -> Qualified (ProperName a)
- orderingName = Qualified (Just (ModuleName [ProperName "Data", ProperName "Ordering"])) . ProperName
+ orderingName = Qualified (Just (ModuleName "Data.Ordering")) . ProperName
orderingCtor :: Text -> Expr
orderingCtor = Constructor ss . orderingName
diff --git a/src/Language/PureScript/TypeChecker/Entailment.hs b/src/Language/PureScript/TypeChecker/Entailment.hs
index dee68a9..84fd84e 100644
--- a/src/Language/PureScript/TypeChecker/Entailment.hs
+++ b/src/Language/PureScript/TypeChecker/Entailment.hs
@@ -190,7 +190,7 @@ entails SolverOptions{..} constraint context hints =
findDicts ctx cn = fmap (fmap NamedInstance) . foldMap NEL.toList . foldMap M.elems . (>>= M.lookup cn) . flip M.lookup ctx
valUndefined :: Expr
- valUndefined = Var nullSourceSpan (Qualified (Just (ModuleName [ProperName C.prim])) (Ident C.undefined))
+ valUndefined = Var nullSourceSpan (Qualified (Just C.Prim) (Ident C.undefined))
solve :: SourceConstraint -> WriterT (Any, [(Ident, InstanceContext, SourceConstraint)]) (StateT InstanceContext m) Expr
solve con = go 0 con
diff --git a/src/Language/PureScript/Types.hs b/src/Language/PureScript/Types.hs
index 06c752a..860220a 100644
--- a/src/Language/PureScript/Types.hs
+++ b/src/Language/PureScript/Types.hs
@@ -13,6 +13,7 @@ module Language.PureScript.Types where
import Prelude.Compat
import Protolude (ordNub)
+import Codec.Serialise (Serialise)
import Control.Applicative ((<|>))
import Control.Arrow (first)
import Control.DeepSeq (NFData)
@@ -46,6 +47,7 @@ newtype SkolemScope = SkolemScope { runSkolemScope :: Int }
deriving (Show, Eq, Ord, A.ToJSON, A.FromJSON, Generic)
instance NFData SkolemScope
+instance Serialise SkolemScope
-- |
-- The type of types
@@ -90,6 +92,7 @@ data Type a
deriving (Show, Generic, Functor, Foldable, Traversable)
instance NFData a => NFData (Type a)
+instance Serialise a => Serialise (Type a)
srcTUnknown :: Int -> SourceType
srcTUnknown = TUnknown NullSourceAnn
@@ -147,6 +150,7 @@ data ConstraintData
deriving (Show, Eq, Ord, Generic)
instance NFData ConstraintData
+instance Serialise ConstraintData
-- | A typeclass constraint
data Constraint a = Constraint
@@ -161,6 +165,7 @@ data Constraint a = Constraint
} deriving (Show, Generic, Functor, Foldable, Traversable)
instance NFData a => NFData (Constraint a)
+instance Serialise a => Serialise (Constraint a)
srcConstraint :: Qualified (ProperName 'ClassName) -> [SourceType] -> Maybe ConstraintData -> SourceConstraint
srcConstraint = Constraint NullSourceAnn
diff --git a/stack.yaml b/stack.yaml
index 85af85f..f05839f 100644
--- a/stack.yaml
+++ b/stack.yaml
@@ -3,6 +3,8 @@ pvp-bounds: upper
packages:
- '.'
extra-deps:
+- serialise-0.2.2.0
+- cborg-0.2.2.0
- happy-1.19.9
- language-javascript-0.7.0.0
- network-3.0.1.1
diff --git a/tests/Language/PureScript/Ide/CompletionSpec.hs b/tests/Language/PureScript/Ide/CompletionSpec.hs
index 0a85fda..b9d3025 100644
--- a/tests/Language/PureScript/Ide/CompletionSpec.hs
+++ b/tests/Language/PureScript/Ide/CompletionSpec.hs
@@ -72,3 +72,17 @@ spec = describe "Applying completion options" $ do
, typ "CompletionSpecDocs"
]
result `shouldSatisfy` \res -> complDocumentation res == Just "Module Documentation\n"
+
+ it "gets docs on type class declaration" $ do
+ ([_, (Right (CompletionResult [ result ]))], _) <- Test.inProject $
+ Test.runIde [ load ["CompletionSpecDocs"]
+ , typ "DocClass"
+ ]
+ result `shouldSatisfy` \res -> complDocumentation res == Just "Doc for class\n"
+
+ it "gets docs on type class members" $ do
+ ([_, (Right (CompletionResult [ result ]))], _) <- Test.inProject $
+ Test.runIde [ load ["CompletionSpecDocs"]
+ , typ "member"
+ ]
+ result `shouldSatisfy` \res -> complDocumentation res == Just "doc for member\n"
diff --git a/tests/Language/PureScript/Ide/RebuildSpec.hs b/tests/Language/PureScript/Ide/RebuildSpec.hs
index 0aea8e2..f7f1d82 100644
--- a/tests/Language/PureScript/Ide/RebuildSpec.hs
+++ b/tests/Language/PureScript/Ide/RebuildSpec.hs
@@ -67,11 +67,10 @@ spec = describe "Rebuilding single modules" $ do
Test.runIde [ rebuildSync "RebuildSpecWithHiddenIdent.purs"
, Complete [] (flexMatcher "hid") (Just (Test.mn "RebuildSpecWithHiddenIdent")) defaultCompletionOptions]
complIdentifier result `shouldBe` "hidden"
- it "uses the specified `actualFile` for location information (in editor mode)" $ do
- let editorConfig = Test.defConfig { confEditorMode = True }
+ it "uses the specified `actualFile` for location information" $ do
([_, (Right (CompletionResult [ result ]))], _) <- Test.inProject $
Test.runIde'
- editorConfig
+ Test.defConfig
emptyIdeState
[ RebuildSync ("src" </> "RebuildSpecWithHiddenIdent.purs") (Just "actualFile") defaultTarget
, Complete [] (flexMatcher "hid") (Just (Test.mn "RebuildSpecWithHiddenIdent")) defaultCompletionOptions]
diff --git a/tests/Language/PureScript/Ide/Test.hs b/tests/Language/PureScript/Ide/Test.hs
index 6164e02..c0db826 100644
--- a/tests/Language/PureScript/Ide/Test.hs
+++ b/tests/Language/PureScript/Ide/Test.hs
@@ -6,6 +6,7 @@ module Language.PureScript.Ide.Test where
import Control.Concurrent.STM
import "monad-logger" Control.Monad.Logger
+import Data.IORef
import qualified Data.Map as Map
import Language.PureScript.Ide
import Language.PureScript.Ide.Command
@@ -24,13 +25,13 @@ defConfig =
{ confLogLevel = LogNone
, confOutputPath = "output/"
, confGlobs = ["src/**/*.purs"]
- , confEditorMode = False
}
runIde' :: IdeConfiguration -> IdeState -> [Command] -> IO ([Either IdeError Success], IdeState)
runIde' conf s cs = do
stateVar <- newTVarIO s
- let env' = IdeEnvironment {ideStateVar = stateVar, ideConfiguration = conf}
+ ts <- newIORef Nothing
+ let env' = IdeEnvironment {ideStateVar = stateVar, ideConfiguration = conf, ideCacheDbTimestamp = ts}
r <- runNoLoggingT (runReaderT (traverse (runExceptT . handleCommand) cs) env')
newState <- readTVarIO stateVar
pure (r, newState)
diff --git a/tests/Main.hs b/tests/Main.hs
index 3c7d5e0..1f2ccdc 100644
--- a/tests/Main.hs
+++ b/tests/Main.hs
@@ -22,6 +22,7 @@ import qualified TestPscPublish
import qualified TestBundle
import qualified TestMake
import qualified TestUtils
+import qualified TestGraph
import System.IO (hSetEncoding, stdout, stderr, utf8)
@@ -44,6 +45,7 @@ main = do
primDocsTests <- TestPrimDocs.main
publishTests <- TestPscPublish.main
hierarchyTests <- TestHierarchy.main
+ graphTests <- TestGraph.main
defaultMain $
testGroup
@@ -59,6 +61,7 @@ main = do
, primDocsTests
, publishTests
, hierarchyTests
+ , graphTests
]
where
diff --git a/tests/TestCoreFn.hs b/tests/TestCoreFn.hs
index 2fcb158..04b9fa9 100644
--- a/tests/TestCoreFn.hs
+++ b/tests/TestCoreFn.hs
@@ -42,11 +42,20 @@ isSuccess _ = False
spec :: Spec
spec = context "CoreFnFromJsonTest" $ do
- let mn = ModuleName [ProperName "Example", ProperName "Main"]
+ let mn = ModuleName "Example.Main"
mp = "src/Example/Main.purs"
ss = SourceSpan mp (SourcePos 0 0) (SourcePos 0 0)
ann = ssAnn ss
+ specify "should parse version" $ do
+ let v = Version [0, 13, 6] []
+ m = Module ss [] mn mp [] [] [] []
+ r = fst <$> parseModule (moduleToJSON v m)
+ r `shouldSatisfy` isSuccess
+ case r of
+ Error _ -> return ()
+ Aeson.Success v' -> v' `shouldBe` v
+
specify "should parse an empty module" $ do
let r = parseMod $ Module ss [] mn mp [] [] [] []
r `shouldSatisfy` isSuccess
@@ -217,7 +226,7 @@ spec = context "CoreFnFromJsonTest" $ do
[ CaseAlternative
[ ConstructorBinder
ann
- (Qualified (Just (ModuleName [ProperName "Data", ProperName "Either"])) (ProperName "Either"))
+ (Qualified (Just (ModuleName "Data.Either")) (ProperName "Either"))
(Qualified Nothing (ProperName "Left"))
[VarBinder ann (Ident "z")]
]
diff --git a/tests/TestGraph.hs b/tests/TestGraph.hs
new file mode 100644
index 0000000..ef53d55
--- /dev/null
+++ b/tests/TestGraph.hs
@@ -0,0 +1,39 @@
+module TestGraph where
+
+import Prelude ()
+import Prelude.Compat
+
+import Test.Tasty
+import Test.Tasty.Hspec
+import System.IO.UTF8 (readUTF8FileT)
+import Data.Either (isLeft)
+
+import qualified Data.ByteString.Lazy as ByteString
+import qualified Data.Text.Encoding as Text
+import qualified Data.Aeson as Json
+import qualified Language.PureScript as P
+
+
+main :: IO TestTree
+main = testSpec "graph" spec
+
+spec :: Spec
+spec = do
+ let baseDir = "tests/purs/graph/"
+ let sourcesDir = baseDir <> "src/"
+ it "should match the graph fixture" $ do
+ let modulePaths = (sourcesDir <>) <$> ["Module.purs", "Module2.purs"]
+ let graphFixtureName = "graph.json"
+
+ graphFixture <- readUTF8FileT (baseDir <> graphFixtureName)
+ eitherGraph <- fst <$> P.graph modulePaths
+ case eitherGraph of
+ Left err -> error $ "Graph creation failed. Errors: " <> show err
+ Right res ->
+ let textRes = Text.decodeUtf8 $ ByteString.toStrict $ Json.encode res
+ in graphFixture `shouldBe` textRes
+
+ it "should fail when trying to include non-existing modules in the graph" $ do
+ let modulePath = sourcesDir <> "ModuleFailing.purs"
+ graph <- fst <$> P.graph [modulePath]
+ graph `shouldSatisfy` isLeft
diff --git a/tests/TestHierarchy.hs b/tests/TestHierarchy.hs
index 3cbf612..6e398d7 100644
--- a/tests/TestHierarchy.hs
+++ b/tests/TestHierarchy.hs
@@ -32,7 +32,7 @@ main = testSpec "hierarchy" $ do
let mainModule = P.Module
(P.internalModuleSourceSpan "<hierarchy>")
[]
- (P.ModuleName [P.ProperName "Main"])
+ (P.ModuleName "Main")
[]
Nothing
@@ -60,7 +60,7 @@ main = testSpec "hierarchy" $ do
let mainModule = P.Module
(P.internalModuleSourceSpan "<hierarchy>")
[]
- (P.ModuleName [P.ProperName "Main"])
+ (P.ModuleName "Main")
declarations
Nothing
diff --git a/tests/purs/docs/output/Ado/externs.json b/tests/purs/docs/output/Ado/externs.json
deleted file mode 100644
index befcbb2..0000000
--- a/tests/purs/docs/output/Ado/externs.json
+++ /dev/null
@@ -1 +0,0 @@
-{"efVersion":"0.13.4","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/externs.json b/tests/purs/docs/output/ChildDeclOrder/externs.json
deleted file mode 100644
index c6c680d..0000000
--- a/tests/purs/docs/output/ChildDeclOrder/externs.json
+++ /dev/null
@@ -1 +0,0 @@
-{"efVersion":"0.13.4","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
deleted file mode 100644
index 905c45f..0000000
--- a/tests/purs/docs/output/Clash/externs.json
+++ /dev/null
@@ -1 +0,0 @@
-{"efVersion":"0.13.4","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
deleted file mode 100644
index 6007366..0000000
--- a/tests/purs/docs/output/Clash1/externs.json
+++ /dev/null
@@ -1 +0,0 @@
-{"efVersion":"0.13.4","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/externs.json b/tests/purs/docs/output/Clash1a/externs.json
deleted file mode 100644
index bbc2dea..0000000
--- a/tests/purs/docs/output/Clash1a/externs.json
+++ /dev/null
@@ -1 +0,0 @@
-{"efVersion":"0.13.4","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
deleted file mode 100644
index 3859b8e..0000000
--- a/tests/purs/docs/output/Clash2/externs.json
+++ /dev/null
@@ -1 +0,0 @@
-{"efVersion":"0.13.4","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/externs.json b/tests/purs/docs/output/Clash2a/externs.json
deleted file mode 100644
index f5894d2..0000000
--- a/tests/purs/docs/output/Clash2a/externs.json
+++ /dev/null
@@ -1 +0,0 @@
-{"efVersion":"0.13.4","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/externs.json b/tests/purs/docs/output/ConstrainedArgument/externs.json
deleted file mode 100644
index 4fd1132..0000000
--- a/tests/purs/docs/output/ConstrainedArgument/externs.json
+++ /dev/null
@@ -1 +0,0 @@
-{"efVersion":"0.13.4","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
deleted file mode 100644
index bd53e35..0000000
--- a/tests/purs/docs/output/Data.Newtype/externs.json
+++ /dev/null
@@ -1 +0,0 @@
-{"efVersion":"0.13.4","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/externs.json b/tests/purs/docs/output/DeclOrder/externs.json
deleted file mode 100644
index 5b3c49a..0000000
--- a/tests/purs/docs/output/DeclOrder/externs.json
+++ /dev/null
@@ -1 +0,0 @@
-{"efVersion":"0.13.4","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/externs.json b/tests/purs/docs/output/DeclOrderNoExportList/externs.json
deleted file mode 100644
index 52c28be..0000000
--- a/tests/purs/docs/output/DeclOrderNoExportList/externs.json
+++ /dev/null
@@ -1 +0,0 @@
-{"efVersion":"0.13.4","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/externs.json b/tests/purs/docs/output/Desugar/externs.json
deleted file mode 100644
index 9422fed..0000000
--- a/tests/purs/docs/output/Desugar/externs.json
+++ /dev/null
@@ -1 +0,0 @@
-{"efVersion":"0.13.4","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/externs.json b/tests/purs/docs/output/DocComments/externs.json
deleted file mode 100644
index 5007b8d..0000000
--- a/tests/purs/docs/output/DocComments/externs.json
+++ /dev/null
@@ -1 +0,0 @@
-{"efVersion":"0.13.4","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/externs.json b/tests/purs/docs/output/DocCommentsClassMethod/externs.json
deleted file mode 100644
index b709b81..0000000
--- a/tests/purs/docs/output/DocCommentsClassMethod/externs.json
+++ /dev/null
@@ -1 +0,0 @@
-{"efVersion":"0.13.4","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/externs.json b/tests/purs/docs/output/DocCommentsDataConstructor/externs.json
deleted file mode 100644
index 1e59deb..0000000
--- a/tests/purs/docs/output/DocCommentsDataConstructor/externs.json
+++ /dev/null
@@ -1 +0,0 @@
-{"efVersion":"0.13.4","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/externs.json b/tests/purs/docs/output/DuplicateNames/externs.json
deleted file mode 100644
index ab74502..0000000
--- a/tests/purs/docs/output/DuplicateNames/externs.json
+++ /dev/null
@@ -1 +0,0 @@
-{"efVersion":"0.13.4","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
deleted file mode 100644
index d8609a2..0000000
--- a/tests/purs/docs/output/Example/externs.json
+++ /dev/null
@@ -1 +0,0 @@
-{"efVersion":"0.13.4","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/externs.json b/tests/purs/docs/output/Example2/externs.json
deleted file mode 100644
index 46cb12c..0000000
--- a/tests/purs/docs/output/Example2/externs.json
+++ /dev/null
@@ -1 +0,0 @@
-{"efVersion":"0.13.4","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/externs.json b/tests/purs/docs/output/ExplicitExport/externs.json
deleted file mode 100644
index a9475aa..0000000
--- a/tests/purs/docs/output/ExplicitExport/externs.json
+++ /dev/null
@@ -1 +0,0 @@
-{"efVersion":"0.13.4","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/externs.json b/tests/purs/docs/output/ExplicitTypeSignatures/externs.json
deleted file mode 100644
index df69df7..0000000
--- a/tests/purs/docs/output/ExplicitTypeSignatures/externs.json
+++ /dev/null
@@ -1 +0,0 @@
-{"efVersion":"0.13.4","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
deleted file mode 100644
index 968c9dd..0000000
--- a/tests/purs/docs/output/ImportedTwice/externs.json
+++ /dev/null
@@ -1 +0,0 @@
-{"efVersion":"0.13.4","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
deleted file mode 100644
index f309387..0000000
--- a/tests/purs/docs/output/ImportedTwiceA/externs.json
+++ /dev/null
@@ -1 +0,0 @@
-{"efVersion":"0.13.4","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/externs.json b/tests/purs/docs/output/ImportedTwiceB/externs.json
deleted file mode 100644
index 5b4dc15..0000000
--- a/tests/purs/docs/output/ImportedTwiceB/externs.json
+++ /dev/null
@@ -1 +0,0 @@
-{"efVersion":"0.13.4","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
deleted file mode 100644
index 8b5d567..0000000
--- a/tests/purs/docs/output/MultiVirtual/externs.json
+++ /dev/null
@@ -1 +0,0 @@
-{"efVersion":"0.13.4","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/externs.json b/tests/purs/docs/output/MultiVirtual1/externs.json
deleted file mode 100644
index 67c3818..0000000
--- a/tests/purs/docs/output/MultiVirtual1/externs.json
+++ /dev/null
@@ -1 +0,0 @@
-{"efVersion":"0.13.4","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/externs.json b/tests/purs/docs/output/MultiVirtual2/externs.json
deleted file mode 100644
index 95b5f31..0000000
--- a/tests/purs/docs/output/MultiVirtual2/externs.json
+++ /dev/null
@@ -1 +0,0 @@
-{"efVersion":"0.13.4","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/externs.json b/tests/purs/docs/output/MultiVirtual3/externs.json
deleted file mode 100644
index 990e829..0000000
--- a/tests/purs/docs/output/MultiVirtual3/externs.json
+++ /dev/null
@@ -1 +0,0 @@
-{"efVersion":"0.13.4","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
deleted file mode 100644
index c7dd77e..0000000
--- a/tests/purs/docs/output/NewOperators/externs.json
+++ /dev/null
@@ -1 +0,0 @@
-{"efVersion":"0.13.4","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/externs.json b/tests/purs/docs/output/NewOperators2/externs.json
deleted file mode 100644
index 924ca17..0000000
--- a/tests/purs/docs/output/NewOperators2/externs.json
+++ /dev/null
@@ -1 +0,0 @@
-{"efVersion":"0.13.4","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
deleted file mode 100644
index fc505e6..0000000
--- a/tests/purs/docs/output/NotAllCtors/externs.json
+++ /dev/null
@@ -1 +0,0 @@
-{"efVersion":"0.13.4","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
deleted file mode 100644
index 7afaea8..0000000
--- a/tests/purs/docs/output/Prelude/externs.json
+++ /dev/null
@@ -1 +0,0 @@
-{"efVersion":"0.13.4","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/Prim.Boolean/docs.json b/tests/purs/docs/output/Prim.Boolean/docs.json
new file mode 100644
index 0000000..0ac5c64
--- /dev/null
+++ b/tests/purs/docs/output/Prim.Boolean/docs.json
@@ -0,0 +1 @@
+{"reExports":[],"name":"Prim.Boolean","comments":"The Prim.Boolean module is embedded in the PureScript compiler. Unlike `Prim`, it is not imported implicitly. It contains a type level `Boolean` data structure.","declarations":[{"children":[],"comments":"The `Boolean` kind provides True/False types at the type level\n","title":"Boolean","info":{"declType":"kind"},"sourceSpan":null},{"children":[],"comments":"The 'True' boolean type.\n","title":"True","info":{"kind":{"annotation":[],"tag":"NamedKind","contents":[["Prim","Boolean"],"Boolean"]},"declType":"externData"},"sourceSpan":null},{"children":[],"comments":"The 'False' boolean type.\n","title":"False","info":{"kind":{"annotation":[],"tag":"NamedKind","contents":[["Prim","Boolean"],"Boolean"]},"declType":"externData"},"sourceSpan":null}]} \ No newline at end of file
diff --git a/tests/purs/docs/output/Prim.Ordering/docs.json b/tests/purs/docs/output/Prim.Ordering/docs.json
new file mode 100644
index 0000000..c86a9ce
--- /dev/null
+++ b/tests/purs/docs/output/Prim.Ordering/docs.json
@@ -0,0 +1 @@
+{"reExports":[],"name":"Prim.Ordering","comments":"The Prim.Ordering module is embedded in the PureScript compiler. Unlike `Prim`, it is not imported implicitly. It contains a type level `Ordering` data structure.","declarations":[{"children":[],"comments":"The `Ordering` kind represents the three possibilites of comparing two\ntypes of the same kind: `LT` (less than), `EQ` (equal to), and\n`GT` (greater than).\n","title":"Ordering","info":{"declType":"kind"},"sourceSpan":null},{"children":[],"comments":"The 'less than' ordering type.\n","title":"LT","info":{"kind":{"annotation":[],"tag":"NamedKind","contents":[["Prim","Ordering"],"Ordering"]},"declType":"externData"},"sourceSpan":null},{"children":[],"comments":"The 'equal to' ordering type.\n","title":"EQ","info":{"kind":{"annotation":[],"tag":"NamedKind","contents":[["Prim","Ordering"],"Ordering"]},"declType":"externData"},"sourceSpan":null},{"children":[],"comments":"The 'greater than' ordering type.\n","title":"GT","info":{"kind":{"annotation":[],"tag":"NamedKind","contents":[["Prim","Ordering"],"Ordering"]},"declType":"externData"},"sourceSpan":null}]} \ No newline at end of file
diff --git a/tests/purs/docs/output/Prim.Row/docs.json b/tests/purs/docs/output/Prim.Row/docs.json
new file mode 100644
index 0000000..3cf961d
--- /dev/null
+++ b/tests/purs/docs/output/Prim.Row/docs.json
@@ -0,0 +1 @@
+{"reExports":[],"name":"Prim.Row","comments":"The Prim.Row module is embedded in the PureScript compiler. Unlike `Prim`, it is not imported implicitly. It contains automatically solved type classes for working with row types.","declarations":[{"children":[],"comments":"The Union type class is used to compute the union of two rows of types\n(left-biased, including duplicates).\n\nThe third type argument represents the union of the first two.\n","title":"Union","info":{"fundeps":[[["left","right"],["union"]],[["right","union"],["left"]],[["union","left"],["right"]]],"arguments":[["left",{"annotation":[],"tag":"Row","contents":{"annotation":[],"tag":"NamedKind","contents":[["Prim"],"Type"]}}],["right",{"annotation":[],"tag":"Row","contents":{"annotation":[],"tag":"NamedKind","contents":[["Prim"],"Type"]}}],["union",{"annotation":[],"tag":"Row","contents":{"annotation":[],"tag":"NamedKind","contents":[["Prim"],"Type"]}}]],"declType":"typeClass","superclasses":[]},"sourceSpan":null},{"children":[],"comments":"The Nub type class is used to remove duplicate labels from rows.\n","title":"Nub","info":{"fundeps":[[["original"],["nubbed"]]],"arguments":[["original",{"annotation":[],"tag":"Row","contents":{"annotation":[],"tag":"NamedKind","contents":[["Prim"],"Type"]}}],["nubbed",{"annotation":[],"tag":"Row","contents":{"annotation":[],"tag":"NamedKind","contents":[["Prim"],"Type"]}}]],"declType":"typeClass","superclasses":[]},"sourceSpan":null},{"children":[],"comments":"The Lacks type class asserts that a label does not occur in a given row.\n","title":"Lacks","info":{"fundeps":[],"arguments":[["label",{"annotation":[],"tag":"NamedKind","contents":[["Prim"],"Symbol"]}],["row",{"annotation":[],"tag":"Row","contents":{"annotation":[],"tag":"NamedKind","contents":[["Prim"],"Type"]}}]],"declType":"typeClass","superclasses":[]},"sourceSpan":null},{"children":[],"comments":"The Cons type class is a 4-way relation which asserts that one row of\ntypes can be obtained from another by inserting a new label/type pair on\nthe left.\n","title":"Cons","info":{"fundeps":[[["label","a","tail"],["row"]],[["label","row"],["a","tail"]]],"arguments":[["label",{"annotation":[],"tag":"NamedKind","contents":[["Prim"],"Symbol"]}],["a",{"annotation":[],"tag":"NamedKind","contents":[["Prim"],"Type"]}],["tail",{"annotation":[],"tag":"Row","contents":{"annotation":[],"tag":"NamedKind","contents":[["Prim"],"Type"]}}],["row",{"annotation":[],"tag":"Row","contents":{"annotation":[],"tag":"NamedKind","contents":[["Prim"],"Type"]}}]],"declType":"typeClass","superclasses":[]},"sourceSpan":null}]} \ No newline at end of file
diff --git a/tests/purs/docs/output/Prim.RowList/docs.json b/tests/purs/docs/output/Prim.RowList/docs.json
new file mode 100644
index 0000000..be61555
--- /dev/null
+++ b/tests/purs/docs/output/Prim.RowList/docs.json
@@ -0,0 +1 @@
+{"reExports":[],"name":"Prim.RowList","comments":"The Prim.RowList module is embedded in the PureScript compiler. Unlike `Prim`, it is not imported implicitly. It contains a type level list (`RowList`) that represents an ordered view of a row of types.","declarations":[{"children":[],"comments":"A type level list representation of a row of types.\n","title":"RowList","info":{"declType":"kind"},"sourceSpan":null},{"children":[],"comments":"Constructs a new `RowList` from a label, a type, and an existing tail\n`RowList`. E.g: `Cons \"x\" Int (Cons \"y\" Int Nil)`.\n","title":"Cons","info":{"kind":{"annotation":[],"tag":"FunKind","contents":[{"annotation":[],"tag":"NamedKind","contents":[["Prim"],"Symbol"]},{"annotation":[],"tag":"FunKind","contents":[{"annotation":[],"tag":"NamedKind","contents":[["Prim"],"Type"]},{"annotation":[],"tag":"FunKind","contents":[{"annotation":[],"tag":"NamedKind","contents":[["Prim","RowList"],"RowList"]},{"annotation":[],"tag":"NamedKind","contents":[["Prim","RowList"],"RowList"]}]}]}]},"declType":"externData"},"sourceSpan":null},{"children":[],"comments":"The empty `RowList`.\n","title":"Nil","info":{"kind":{"annotation":[],"tag":"NamedKind","contents":[["Prim","RowList"],"RowList"]},"declType":"externData"},"sourceSpan":null},{"children":[],"comments":"Compiler solved type class for generating a `RowList` from a closed row\nof types. Entries are sorted by label and duplicates are preserved in\nthe order they appeared in the row.\n","title":"RowToList","info":{"fundeps":[[["row"],["list"]]],"arguments":[["row",{"annotation":[],"tag":"Row","contents":{"annotation":[],"tag":"NamedKind","contents":[["Prim"],"Type"]}}],["list",{"annotation":[],"tag":"NamedKind","contents":[["Prim","RowList"],"RowList"]}]],"declType":"typeClass","superclasses":[]},"sourceSpan":null}]} \ No newline at end of file
diff --git a/tests/purs/docs/output/Prim.Symbol/docs.json b/tests/purs/docs/output/Prim.Symbol/docs.json
new file mode 100644
index 0000000..9e1fe0d
--- /dev/null
+++ b/tests/purs/docs/output/Prim.Symbol/docs.json
@@ -0,0 +1 @@
+{"reExports":[],"name":"Prim.Symbol","comments":"The Prim.Symbol module is embedded in the PureScript compiler. Unlike `Prim`, it is not imported implicitly. It contains automatically solved type classes for working with `Symbols`.","declarations":[{"children":[],"comments":"Compiler solved type class for appending `Symbol`s together.\n","title":"Append","info":{"fundeps":[[["left","right"],["appended"]],[["right","appended"],["left"]],[["appended","left"],["right"]]],"arguments":[["left",{"annotation":[],"tag":"NamedKind","contents":[["Prim"],"Symbol"]}],["right",{"annotation":[],"tag":"NamedKind","contents":[["Prim"],"Symbol"]}],["appended",{"annotation":[],"tag":"NamedKind","contents":[["Prim"],"Symbol"]}]],"declType":"typeClass","superclasses":[]},"sourceSpan":null},{"children":[],"comments":"Compiler solved type class for comparing two `Symbol`s.\nProduces an `Ordering`.\n","title":"Compare","info":{"fundeps":[[["left","right"],["ordering"]]],"arguments":[["left",{"annotation":[],"tag":"NamedKind","contents":[["Prim"],"Symbol"]}],["right",{"annotation":[],"tag":"NamedKind","contents":[["Prim"],"Symbol"]}],["ordering",{"annotation":[],"tag":"NamedKind","contents":[["Prim","Ordering"],"Ordering"]}]],"declType":"typeClass","superclasses":[]},"sourceSpan":null},{"children":[],"comments":"Compiler solved type class for either splitting up a symbol into its\nhead and tail or for combining a head and tail into a new symbol.\nRequires the head to be a single character and the combined string\ncannot be empty.\n","title":"Cons","info":{"fundeps":[[["head","tail"],["symbol"]],[["symbol"],["head","tail"]]],"arguments":[["head",{"annotation":[],"tag":"NamedKind","contents":[["Prim"],"Symbol"]}],["tail",{"annotation":[],"tag":"NamedKind","contents":[["Prim"],"Symbol"]}],["symbol",{"annotation":[],"tag":"NamedKind","contents":[["Prim"],"Symbol"]}]],"declType":"typeClass","superclasses":[]},"sourceSpan":null}]} \ No newline at end of file
diff --git a/tests/purs/docs/output/Prim.TypeError/docs.json b/tests/purs/docs/output/Prim.TypeError/docs.json
new file mode 100644
index 0000000..faebd7e
--- /dev/null
+++ b/tests/purs/docs/output/Prim.TypeError/docs.json
@@ -0,0 +1 @@
+{"reExports":[],"name":"Prim.TypeError","comments":"The Prim.TypeError module is embedded in the PureScript compiler. Unlike `Prim`, it is not imported implicitly. It contains type classes that provide custom type error and warning functionality.","declarations":[{"children":[],"comments":"The Warn type class allows a custom compiler warning to be displayed.\n\nFor more information, see\n[the Custom Type Errors guide](https://github.com/purescript/documentation/blob/master/guides/Custom-Type-Errors.md).\n","title":"Warn","info":{"fundeps":[],"arguments":[["message",{"annotation":[],"tag":"NamedKind","contents":[["Prim","TypeError"],"Doc"]}]],"declType":"typeClass","superclasses":[]},"sourceSpan":null},{"children":[],"comments":"The Fail type class is part of the custom type errors feature. To provide\na custom type error when someone tries to use a particular instance,\nwrite that instance out with a Fail constraint.\n\nFor more information, see\n[the Custom Type Errors guide](https://github.com/purescript/documentation/blob/master/guides/Custom-Type-Errors.md).\n","title":"Fail","info":{"fundeps":[],"arguments":[["message",{"annotation":[],"tag":"NamedKind","contents":[["Prim","TypeError"],"Doc"]}]],"declType":"typeClass","superclasses":[]},"sourceSpan":null},{"children":[],"comments":"`Doc` is the kind of type-level documents.\n\nThis kind is used with the `Fail` and `Warn` type clases.\nBuild up a `Doc` with `Text`, `Quote`, `QuoteLabel`, `Beside`, and `Above`.\n","title":"Doc","info":{"declType":"kind"},"sourceSpan":null},{"children":[],"comments":"The Text type constructor makes a Doc from a Symbol\nto be used in a custom type error.\n\nFor more information, see\n[the Custom Type Errors guide](https://github.com/purescript/documentation/blob/master/guides/Custom-Type-Errors.md).\n","title":"Text","info":{"kind":{"annotation":[],"tag":"FunKind","contents":[{"annotation":[],"tag":"NamedKind","contents":[["Prim"],"Symbol"]},{"annotation":[],"tag":"NamedKind","contents":[["Prim","TypeError"],"Doc"]}]},"declType":"externData"},"sourceSpan":null},{"children":[],"comments":"The Quote type constructor renders any concrete type as a Doc\nto be used in a custom type error.\n\nFor more information, see\n[the Custom Type Errors guide](https://github.com/purescript/documentation/blob/master/guides/Custom-Type-Errors.md).\n","title":"Quote","info":{"kind":{"annotation":[],"tag":"FunKind","contents":[{"annotation":[],"tag":"NamedKind","contents":[["Prim"],"Type"]},{"annotation":[],"tag":"NamedKind","contents":[["Prim","TypeError"],"Doc"]}]},"declType":"externData"},"sourceSpan":null},{"children":[],"comments":"The `QuoteLabel` type constructor will produce a `Doc` when given a `Symbol`. When the resulting `Doc` is rendered\nfor a `Warn` or `Fail` constraint, a syntactically valid label will be produced, escaping with quotes as needed.\n\nFor more information, see\n[the Custom Type Errors guide](https://github.com/purescript/documentation/blob/master/guides/Custom-Type-Errors.md).\n","title":"QuoteLabel","info":{"kind":{"annotation":[],"tag":"FunKind","contents":[{"annotation":[],"tag":"NamedKind","contents":[["Prim"],"Symbol"]},{"annotation":[],"tag":"NamedKind","contents":[["Prim","TypeError"],"Doc"]}]},"declType":"externData"},"sourceSpan":null},{"children":[],"comments":"The Beside type constructor combines two Docs horizontally\nto be used in a custom type error.\n\nFor more information, see\n[the Custom Type Errors guide](https://github.com/purescript/documentation/blob/master/guides/Custom-Type-Errors.md).\n","title":"Beside","info":{"kind":{"annotation":[],"tag":"FunKind","contents":[{"annotation":[],"tag":"NamedKind","contents":[["Prim","TypeError"],"Doc"]},{"annotation":[],"tag":"FunKind","contents":[{"annotation":[],"tag":"NamedKind","contents":[["Prim","TypeError"],"Doc"]},{"annotation":[],"tag":"NamedKind","contents":[["Prim","TypeError"],"Doc"]}]}]},"declType":"externData"},"sourceSpan":null},{"children":[],"comments":"The Above type constructor combines two Docs vertically\nin a custom type error.\n\nFor more information, see\n[the Custom Type Errors guide](https://github.com/purescript/documentation/blob/master/guides/Custom-Type-Errors.md).\n","title":"Above","info":{"kind":{"annotation":[],"tag":"FunKind","contents":[{"annotation":[],"tag":"NamedKind","contents":[["Prim","TypeError"],"Doc"]},{"annotation":[],"tag":"FunKind","contents":[{"annotation":[],"tag":"NamedKind","contents":[["Prim","TypeError"],"Doc"]},{"annotation":[],"tag":"NamedKind","contents":[["Prim","TypeError"],"Doc"]}]}]},"declType":"externData"},"sourceSpan":null}]} \ No newline at end of file
diff --git a/tests/purs/docs/output/Prim/docs.json b/tests/purs/docs/output/Prim/docs.json
new file mode 100644
index 0000000..84d4bbf
--- /dev/null
+++ b/tests/purs/docs/output/Prim/docs.json
@@ -0,0 +1 @@
+{"reExports":[],"name":"Prim","comments":"The `Prim` module is embedded in the PureScript compiler in order to provide compiler support for certain types &mdash; for example, value literals, or syntax sugar. It is implicitly imported unqualified in every module except those that list it as a qualified import.\n\n`Prim` does not include additional built-in types and kinds that are defined deeper in the compiler. For example, row kinds (e.g. `# Type`, which is the kind of types such as `(name :: String, age :: Int)`), Type wildcards (e.g. `f :: _ -> Int`), and Quantified Types. Rather, these are documented in [the PureScript language reference](https://github.com/purescript/documentation/blob/master/language/Types.md).\n","declarations":[{"children":[],"comments":"A function, which takes values of the type specified by the first type\nparameter, and returns values of the type specified by the second.\nIn the JavaScript backend, this is a standard JavaScript Function.\n\nThe type constructor `(->)` is syntactic sugar for this type constructor.\nIt is recommended to use `(->)` rather than `Function`, where possible.\n\nThat is, prefer this:\n\n f :: Number -> Number\n\nto either of these:\n\n f :: Function Number Number\n f :: (->) Number Number\n","title":"Function","info":{"kind":{"annotation":[],"tag":"FunKind","contents":[{"annotation":[],"tag":"NamedKind","contents":[["Prim"],"Type"]},{"annotation":[],"tag":"FunKind","contents":[{"annotation":[],"tag":"NamedKind","contents":[["Prim"],"Type"]},{"annotation":[],"tag":"NamedKind","contents":[["Prim"],"Type"]}]}]},"declType":"externData"},"sourceSpan":null},{"children":[],"comments":"An Array: a data structure supporting efficient random access. In\nthe JavaScript backend, values of this type are represented as JavaScript\nArrays at runtime.\n\nConstruct values using literals:\n\n x = [1,2,3,4,5] :: Array Int\n","title":"Array","info":{"kind":{"annotation":[],"tag":"FunKind","contents":[{"annotation":[],"tag":"NamedKind","contents":[["Prim"],"Type"]},{"annotation":[],"tag":"NamedKind","contents":[["Prim"],"Type"]}]},"declType":"externData"},"sourceSpan":null},{"children":[],"comments":"The type of records whose fields are known at compile time. In the\nJavaScript backend, values of this type are represented as JavaScript\nObjects at runtime.\n\nThe type signature here means that the `Record` type constructor takes\na row of concrete types. For example:\n\n type Person = Record (name :: String, age :: Number)\n\nThe syntactic sugar with curly braces `{ }` is generally preferred, though:\n\n type Person = { name :: String, age :: Number }\n\nThe row associates a type to each label which appears in the record.\n\n_Technical note_: PureScript allows duplicate labels in rows, and the\nmeaning of `Record r` is based on the _first_ occurrence of each label in\nthe row `r`.\n","title":"Record","info":{"kind":{"annotation":[],"tag":"FunKind","contents":[{"annotation":[],"tag":"Row","contents":{"annotation":[],"tag":"NamedKind","contents":[["Prim"],"Type"]}},{"annotation":[],"tag":"NamedKind","contents":[["Prim"],"Type"]}]},"declType":"externData"},"sourceSpan":null},{"children":[],"comments":"A double precision floating point number (IEEE 754).\n\nConstruct values of this type with literals:\n\n y = 35.23 :: Number\n z = 1.224e6 :: Number\n","title":"Number","info":{"kind":{"annotation":[],"tag":"NamedKind","contents":[["Prim"],"Type"]},"declType":"externData"},"sourceSpan":null},{"children":[],"comments":"A 32-bit signed integer. See the purescript-integers package for details\nof how this is accomplished when compiling to JavaScript.\n\nConstruct values of this type with literals:\n\n x = 23 :: Int\n","title":"Int","info":{"kind":{"annotation":[],"tag":"NamedKind","contents":[["Prim"],"Type"]},"declType":"externData"},"sourceSpan":null},{"children":[],"comments":"A String. As in JavaScript, String values represent sequences of UTF-16\ncode units, which are not required to form a valid encoding of Unicode\ntext (for example, lone surrogates are permitted).\n\nConstruct values of this type with literals, using double quotes `\"`:\n\n x = \"hello, world\" :: String\n\nMulti-line string literals are also supported with triple quotes (`\"\"\"`).\n","title":"String","info":{"kind":{"annotation":[],"tag":"NamedKind","contents":[["Prim"],"Type"]},"declType":"externData"},"sourceSpan":null},{"children":[],"comments":"A single character (UTF-16 code unit). The JavaScript representation is a\nnormal String, which is guaranteed to contain one code unit. This means\nthat astral plane characters (i.e. those with code point values greater\nthan 0xFFFF) cannot be represented as Char values.\n\nConstruct values of this type with literals, using single quotes `'`:\n\n x = 'a' :: Char\n","title":"Char","info":{"kind":{"annotation":[],"tag":"NamedKind","contents":[["Prim"],"Type"]},"declType":"externData"},"sourceSpan":null},{"children":[],"comments":"A JavaScript Boolean value.\n\nConstruct values of this type with the literals `true` and `false`.\n","title":"Boolean","info":{"kind":{"annotation":[],"tag":"NamedKind","contents":[["Prim"],"Type"]},"declType":"externData"},"sourceSpan":null},{"children":[],"comments":"The Partial type class is used to indicate that a function is *partial,*\nthat is, it is not defined for all inputs. In practice, attempting to use\na partial function with a bad input will usually cause an error to be\nthrown, although it is not safe to assume that this will happen in all\ncases. For more information, see\n[purescript-partial](https://pursuit.purescript.org/packages/purescript-partial/).\n","title":"Partial","info":{"fundeps":[],"arguments":[],"declType":"typeClass","superclasses":[]},"sourceSpan":null},{"children":[],"comments":"`Type` is the kind of all proper types: those that classify value-level terms.\nFor example the type `Boolean` has kind `Type`; denoted by `Boolean :: Type`.\n","title":"Type","info":{"declType":"kind"},"sourceSpan":null},{"children":[],"comments":"`Symbol` is the kind of type-level strings.\n\nConstruct types of this kind using the same literal syntax as documented\nfor strings.\n","title":"Symbol","info":{"declType":"kind"},"sourceSpan":null}]} \ No newline at end of file
diff --git a/tests/purs/docs/output/PrimSubmodules/externs.json b/tests/purs/docs/output/PrimSubmodules/externs.json
deleted file mode 100644
index 1006673..0000000
--- a/tests/purs/docs/output/PrimSubmodules/externs.json
+++ /dev/null
@@ -1 +0,0 @@
-{"efVersion":"0.13.4","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
deleted file mode 100644
index bb704a8..0000000
--- a/tests/purs/docs/output/ReExportedTypeClass/externs.json
+++ /dev/null
@@ -1 +0,0 @@
-{"efVersion":"0.13.4","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
deleted file mode 100644
index 1066569..0000000
--- a/tests/purs/docs/output/SolitaryTypeClassMember/externs.json
+++ /dev/null
@@ -1 +0,0 @@
-{"efVersion":"0.13.4","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/externs.json b/tests/purs/docs/output/SomeTypeClass/externs.json
deleted file mode 100644
index 93fc5a6..0000000
--- a/tests/purs/docs/output/SomeTypeClass/externs.json
+++ /dev/null
@@ -1 +0,0 @@
-{"efVersion":"0.13.4","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
deleted file mode 100644
index 2e4346b..0000000
--- a/tests/purs/docs/output/Transitive1/externs.json
+++ /dev/null
@@ -1 +0,0 @@
-{"efVersion":"0.13.4","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
deleted file mode 100644
index fbddca2..0000000
--- a/tests/purs/docs/output/Transitive2/externs.json
+++ /dev/null
@@ -1 +0,0 @@
-{"efVersion":"0.13.4","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/externs.json b/tests/purs/docs/output/Transitive3/externs.json
deleted file mode 100644
index 84769ca..0000000
--- a/tests/purs/docs/output/Transitive3/externs.json
+++ /dev/null
@@ -1 +0,0 @@
-{"efVersion":"0.13.4","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/externs.json b/tests/purs/docs/output/TypeClassWithFunDeps/externs.json
deleted file mode 100644
index 636eadf..0000000
--- a/tests/purs/docs/output/TypeClassWithFunDeps/externs.json
+++ /dev/null
@@ -1 +0,0 @@
-{"efVersion":"0.13.4","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
deleted file mode 100644
index ce6499f..0000000
--- a/tests/purs/docs/output/TypeClassWithoutMembers/externs.json
+++ /dev/null
@@ -1 +0,0 @@
-{"efVersion":"0.13.4","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
deleted file mode 100644
index 8bfc56f..0000000
--- a/tests/purs/docs/output/TypeClassWithoutMembersIntermediate/externs.json
+++ /dev/null
@@ -1 +0,0 @@
-{"efVersion":"0.13.4","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/externs.json b/tests/purs/docs/output/TypeLevelString/externs.json
deleted file mode 100644
index 1e6471a..0000000
--- a/tests/purs/docs/output/TypeLevelString/externs.json
+++ /dev/null
@@ -1 +0,0 @@
-{"efVersion":"0.13.4","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/externs.json b/tests/purs/docs/output/TypeOpAliases/externs.json
deleted file mode 100644
index 4a0bd77..0000000
--- a/tests/purs/docs/output/TypeOpAliases/externs.json
+++ /dev/null
@@ -1 +0,0 @@
-{"efVersion":"0.13.4","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/externs.json b/tests/purs/docs/output/TypeSynonym/externs.json
deleted file mode 100644
index f978472..0000000
--- a/tests/purs/docs/output/TypeSynonym/externs.json
+++ /dev/null
@@ -1 +0,0 @@
-{"efVersion":"0.13.4","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/externs.json b/tests/purs/docs/output/TypeSynonymInstance/externs.json
deleted file mode 100644
index 4374988..0000000
--- a/tests/purs/docs/output/TypeSynonymInstance/externs.json
+++ /dev/null
@@ -1 +0,0 @@
-{"efVersion":"0.13.4","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/UTF8/externs.json b/tests/purs/docs/output/UTF8/externs.json
deleted file mode 100644
index c1e55c8..0000000
--- a/tests/purs/docs/output/UTF8/externs.json
+++ /dev/null
@@ -1 +0,0 @@
-{"efVersion":"0.13.4","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
deleted file mode 100644
index c3930f1..0000000
--- a/tests/purs/docs/output/Virtual/externs.json
+++ /dev/null
@@ -1 +0,0 @@
-{"efVersion":"0.13.4","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/output/cache-db.json b/tests/purs/docs/output/cache-db.json
index 79c5e61..c83c3fb 100644
--- a/tests/purs/docs/output/cache-db.json
+++ b/tests/purs/docs/output/cache-db.json
@@ -1 +1 @@
-{"Ado":{"/home/harry/code/purescript/tests/purs/docs/src/Ado.purs":["2019-11-02T17:39:14.549052869Z","bd980ae20d61e0e34d23507b1d25598f27407a78cf70084327506f21cc02d85df1bd1b6937459665a8dd9df5bb43ec5947b6e94c16c852aba233747e05a9d58f"]},"ChildDeclOrder":{"/home/harry/code/purescript/tests/purs/docs/src/ChildDeclOrder.purs":["2019-11-02T17:39:14.685050684Z","41a7be97fffe1bbbf925ccb56b68246abb8684b23529fc25e07827b57b32b60ccd82d5c9a2279dc23be1f8803cff8267fa296509b873ec337ffa15ee0e32e2c9"]},"Clash":{"/home/harry/code/purescript/tests/purs/docs/src/Clash.purs":["2019-11-02T17:39:14.685050684Z","7b70d019ea46b72149e185d82bc1345113e8a3977a886aa31ac8a268c6c63c7b93553e1586c45e023e49e485d3f6523a4a11efc8dc70dd8bac5d8b9cac4e4c2d"]},"Clash1":{"/home/harry/code/purescript/tests/purs/docs/src/Clash1.purs":["2019-11-02T17:39:14.685050684Z","bd09c1fd0308ce61d83bef03d3b2366601df559ef8cc9c09f17d963a1bfb2b2e373dcbf5729a3e465c635fbf0035ae09ea3ba58b7844b56586dc3baf9d857bb5"]},"Clash1a":{"/home/harry/code/purescript/tests/purs/docs/src/Clash1a.purs":["2019-11-02T17:39:14.685050684Z","0a93c507e1fab2abaee66e20721e952062466e2597d8eb0c48cad8d351e3204ac157da0c3eebf3d13211cbe379e704245da3535f02bd768adf92f6c1119ca2ee"]},"Clash2":{"/home/harry/code/purescript/tests/purs/docs/src/Clash2.purs":["2019-11-02T17:39:14.685050684Z","10c61c6600084fdcc0ee93608a354fd7efa7edab67ac8cce131e522b597080b2927dc7bb1a6c98765dfc9a30583dc5bea2514d2932554ab1657c664a81a0a81b"]},"Clash2a":{"/home/harry/code/purescript/tests/purs/docs/src/Clash2a.purs":["2019-11-02T17:39:14.685050684Z","d37d26a74b0adec6d8b2de4b75997306e4f199374a1a2b4c1b431a273d16a9e89a634028b428c25aedbc01213bc00574abedaaabaae920f40eaa5be6196c07f6"]},"ConstrainedArgument":{"/home/harry/code/purescript/tests/purs/docs/src/ConstrainedArgument.purs":["2019-11-02T17:39:14.685050684Z","87e0f15cb8e2608fa2ba1a5726eae564526394d07c787975db539c4a496d8889be042c774bd68f975e5fe3fd94a0ab66edac081192a5f5ea581424ea28e36948"]},"Data.Newtype":{"bower_components/purescript-newtype/src/Data/Newtype.purs":["2019-11-02T17:39:14.549052869Z","9a591cfc87fe2fc4e0cd95362fc2a3c12dbf4f7875860036d0d18cf57cdc063b3d72488fe351e2e95196030e89fb133edceed211219be5922f86160fed4965b9"]},"DeclOrder":{"/home/harry/code/purescript/tests/purs/docs/src/DeclOrder.purs":["2019-11-02T17:39:14.685050684Z","a8c6ab9c335037c255ae6e0124a107f2e2462c2eebc2ff3637273ba436f2f3589ae203919ff5c8c61106b0542114ba3eba66426d8b5e316089bc1f4efb72643a"]},"DeclOrderNoExportList":{"/home/harry/code/purescript/tests/purs/docs/src/DeclOrderNoExportList.purs":["2019-11-02T17:39:14.685050684Z","379def50dfd7a01dd2b057c707ea8ee53147d41c7dc28083c3827ccc213816840fd26d784a78bd1eabd105231e5479c7bfeebfcb03d1e2f3e8174ab173d740c4"]},"Desugar":{"/home/harry/code/purescript/tests/purs/docs/src/Desugar.purs":["2019-11-02T17:39:14.685050684Z","50ceefe5cbac286908cc7070f4e94f57c62b5c91245d5a8c66d7f4565e3d037e4cf11524c4c790664588a0a5c4216390b5138be9ec93e14d0f82a2c59c8f561a"]},"DocComments":{"/home/harry/code/purescript/tests/purs/docs/src/DocComments.purs":["2019-11-02T17:39:14.685050684Z","220498626601722feb58dd23dd80ac970f6ba7df8e8c2ad604ed833933f6b36219fb5f1d0b9963ffc7e9314043760055ab547fac5784a28416a4851f257a635b"]},"DocCommentsClassMethod":{"/home/harry/code/purescript/tests/purs/docs/src/DocCommentsClassMethod.purs":["2019-11-02T17:39:14.549052869Z","f55a03f2b2624a9ca01adc8372bad4b7e46e8ef1a52ec41c5992767146c9a2354320a3a38587cbf2e78fec118430f193fdcb1cdd9600cd9f755dbbc2e36e46b7"]},"DocCommentsDataConstructor":{"/home/harry/code/purescript/tests/purs/docs/src/DocCommentsDataConstructor.purs":["2019-11-02T17:39:14.549052869Z","68d644ce63642bd55d8338e78e0070c409d3c970a2967338cf612d7a3217813fd98a08e1905776572819cadbc08cdd4bec4a7c1473974a9f3f5d5b1149d33257"]},"DuplicateNames":{"/home/harry/code/purescript/tests/purs/docs/src/DuplicateNames.purs":["2019-11-02T17:39:14.685050684Z","5652f5da0ae79185fb27bce13793bd7752779364e0d1c7c56be2d213853c26ad0abff8536a0d34090a079980e498c837026521efe4a8cfc1b1a16ec70c724eed"]},"Example":{"/home/harry/code/purescript/tests/purs/docs/src/Example.purs":["2019-11-02T17:39:14.685050684Z","3b700a99cc5ee257009553d27a2d25f71f68f006e9deec2b3578f01c7fe4e77de1e929dc110dfcd51d68685ad3ab6b09b0147fe63719861e8a9e480a64e286d9"]},"Example2":{"/home/harry/code/purescript/tests/purs/docs/src/Example2.purs":["2019-11-02T17:39:14.685050684Z","6a479db4e40f66b1e29889516a55cfb22b15b2b8c4531b9cf20307a965af3dc0a6dab4eccc31cca4eacaaa158a01c58ff995ac6f01b2e1ed5571c44fa3bf2536"]},"ExplicitExport":{"/home/harry/code/purescript/tests/purs/docs/src/ExplicitExport.purs":["2019-11-02T17:39:14.685050684Z","fe733409eb325c971f84b6414a1fc9e08793d2271eebcd670ceefd5c5aef837ee76ec5cb5bed96d87ea791a7521c76668a71be5cd8fb14209414893dc20d3d47"]},"ExplicitTypeSignatures":{"/home/harry/code/purescript/tests/purs/docs/src/ExplicitTypeSignatures.purs":["2019-11-02T17:39:14.685050684Z","78a70441c9966f04c6c32a74cbba299f0f8ea870c664e738eb0d8f8cc5929edb7bb697170fc306c9ee69fa4e2f0112af15c8bdb29d63645cdf6f2916a122a0bd"]},"ImportedTwice":{"/home/harry/code/purescript/tests/purs/docs/src/ImportedTwice.purs":["2019-11-02T17:39:14.685050684Z","be9a0cb1e75c689c3af6817a5750862915e70a0017476cce4c539a3c7ce5b33554aa14d2668bd131b89bb28d65b5ddaa79abfb2a538d606f1b11b5ef0ec79067"]},"ImportedTwiceA":{"/home/harry/code/purescript/tests/purs/docs/src/ImportedTwiceA.purs":["2019-11-02T17:39:14.685050684Z","883c8abaefe0dbacbcdea4c53eab41da26687680274419720b1e5d6510bf5127b7ba06df23515ad34f7ffc4626f0064d7867e2b4a5f255a6b573d219926364de"]},"ImportedTwiceB":{"/home/harry/code/purescript/tests/purs/docs/src/ImportedTwiceB.purs":["2019-11-02T17:39:14.685050684Z","48cc2ac8ce40b1d0e3782fcb8ec798cf9c4838a595148055f1bb830d9b07d58780170ad3f8a90f43ac561aff2c52a5d8793480526a4768ebf1c8af1ff1b68751"]},"MultiVirtual":{"/home/harry/code/purescript/tests/purs/docs/src/MultiVirtual.purs":["2019-11-02T17:39:14.685050684Z","31bc7e2c2ebee39dbc89536db51493a2cb1843a9e1aed8b288ef16660877fd1abd5f4224d3325a415aabcf79bd5fe76ebb9257738b0193a50c79a20d48b5ab29"]},"MultiVirtual1":{"/home/harry/code/purescript/tests/purs/docs/src/MultiVirtual1.purs":["2019-11-02T17:39:14.685050684Z","23f7975f7494bb84f9fc6fde9071ce04e86df774d81e2b027a85ab46c8237f9921ee926f4a4ad3e03c7799e485ce39e542d1dd94953c50c0d58ea0003cfc3842"]},"MultiVirtual2":{"/home/harry/code/purescript/tests/purs/docs/src/MultiVirtual2.purs":["2019-11-02T17:39:14.685050684Z","f424ed7c0db709b6bb1e57f87069f484fd0db9dddd0475cd15d36bd58743e98729c42efd2df6ee8fbd18609c36c2247cf3428a5a7f1f5ed11e233a2b134990ba"]},"MultiVirtual3":{"/home/harry/code/purescript/tests/purs/docs/src/MultiVirtual3.purs":["2019-11-02T17:39:14.685050684Z","a42415e3b8309bfa81ef127c61dba6f4001188dcee160a8e2f73399179a11262f12daf0205d6bec38fc605b637550f16b62e84a0f2a0f6999355d56ff2540405"]},"NewOperators":{"/home/harry/code/purescript/tests/purs/docs/src/NewOperators.purs":["2019-11-02T17:39:14.685050684Z","f74cae05c73db1f629e199692c517866fb1683caab3c4509657a371733f30319f0c505ed57208757b3e43795aab5191000c834a501d9bd2bf0e58875873c5c40"]},"NewOperators2":{"/home/harry/code/purescript/tests/purs/docs/src/NewOperators2.purs":["2019-11-02T17:39:14.685050684Z","c551a91aa792fb9ee4b5758c010761a53d4a14b8fbaa6b76b6bd9a318a28f245c9b090bdc4f77b904c873d9b71d59fbad3ccd9ad7c8773f5c1e57a22a0204844"]},"NotAllCtors":{"/home/harry/code/purescript/tests/purs/docs/src/NotAllCtors.purs":["2019-11-02T17:39:14.685050684Z","6e0af26cf897b5dd6e8dd4d75988e5607118f6fdd5219aa192f477cc4d760d504bdec930d46af82a44950e3de4fe6c37664a4560a523a45097503b85c161bd96"]},"Prelude":{"bower_components/purescript-prelude/src/Prelude.purs":["2019-11-02T17:39:14.685050684Z","7eb0b2f9b7aec29693f79be4642ccea792b1f54c7022a4f1395fb8f3a9b1ad6cbfb2e7685940b89ab21890c02949ec90d4823bd5c36a6b566ca9cb8ec561958f"]},"PrimSubmodules":{"/home/harry/code/purescript/tests/purs/docs/src/PrimSubmodules.purs":["2019-11-02T17:39:14.549052869Z","cea3766e9920985a3458c6f7af4a19dbe435527d0b0e1d465e8d7362ebd14cea569e820c3849e45c88f368ced11b1e948276f86dc6f0dc0e0eac78c7df2afa50"]},"ReExportedTypeClass":{"/home/harry/code/purescript/tests/purs/docs/src/ReExportedTypeClass.purs":["2019-11-02T17:39:14.685050684Z","1cc581d68e1ce113162ab851872e73645807f0deb1d2b970ebc04b314184fe30c3431212ffcf9eec09a56a2291e0050750ac6905f1884bc74d406d0323c4f804"]},"SolitaryTypeClassMember":{"/home/harry/code/purescript/tests/purs/docs/src/SolitaryTypeClassMember.purs":["2019-11-02T17:39:14.685050684Z","f627c589b0a8f58d7bfdf28ecf87891a74e64e8399ce0ab645b7c58049fddc1ea3cbb3c34b862bec8576108d5258d9548ecfbbab98598671cc645a3f358ac852"]},"SomeTypeClass":{"/home/harry/code/purescript/tests/purs/docs/src/SomeTypeClass.purs":["2019-11-02T17:39:14.685050684Z","d09fc77e6c6350e7e4941e2911e012271a49db4a75c57cf738d5865ca622d60b69337f969aa02b13fc869484cba00479212e4b8dbcb458c5723e7a5d73888368"]},"Transitive1":{"/home/harry/code/purescript/tests/purs/docs/src/Transitive1.purs":["2019-11-02T17:39:14.685050684Z","42681f3d0fa143d36474d1cb2f464820bdb907bbc432cd91349f6acdd82657ecb4d9ad1d075c96c551bed37dada4615dd3ff64f912f2cc8a6d99b5e02ee51979"]},"Transitive2":{"/home/harry/code/purescript/tests/purs/docs/src/Transitive2.purs":["2019-11-02T17:39:14.685050684Z","110a1bae420e0f0c05e9846fad483a1d035dfc3ba82c2cd81e44f548fd97965055b1a687ab86256f8cb6a3d79b4c4abe6f45d4728bbc04a7a1b0fedbca115b1e"]},"Transitive3":{"/home/harry/code/purescript/tests/purs/docs/src/Transitive3.purs":["2019-11-02T17:39:14.685050684Z","65f7bb366ac8fab63084ff0229c9d55293db8126b539ff2cb53e511505995f426d50f4cca7d1f61fc53aaaaeed9d72791f9d9f12cc569d92e7bbe1d1908b093c"]},"TypeClassWithFunDeps":{"/home/harry/code/purescript/tests/purs/docs/src/TypeClassWithFunDeps.purs":["2019-11-02T17:39:14.685050684Z","c828f194c8c679d97425ed7e04eb3c9bb04bc4c32542d7d6d7e4a36c6c734eb8ba1ef472ad2b0085d9a042a0724648b85a4605d8fe4995e1a32839b1fb1f0f23"]},"TypeClassWithoutMembers":{"/home/harry/code/purescript/tests/purs/docs/src/TypeClassWithoutMembers.purs":["2019-11-02T17:39:14.685050684Z","3eac42652ce295ee47c340c4b86c91d0f6a8ad1f81824475fa4fc4ae8fd8bb77ceee6a46e31bebe9d2e8a980a7923432b41b0eff5cbf75580ee149e7d997e098"]},"TypeClassWithoutMembersIntermediate":{"/home/harry/code/purescript/tests/purs/docs/src/TypeClassWithoutMembersIntermediate.purs":["2019-11-02T17:39:14.685050684Z","76d65083da1f6240b4c3b6c910af1326b9b9a538f4eb278b00ddf0bf67d9547c1cab0fae7661bbe4af6e7ecdea9fd26cc9ff9ea5b289d3c3994b3ccb3d099ba8"]},"TypeLevelString":{"/home/harry/code/purescript/tests/purs/docs/src/TypeLevelString.purs":["2019-11-02T17:39:14.549052869Z","361dc3825ebd3efcd9a53dd900cc623f5eca14df82afc93f4d485d8b38e51eb0a72929b6cfb783b3d5c9bef46e6fd18c139fdbd10de484beb335e09ecee79388"]},"TypeOpAliases":{"/home/harry/code/purescript/tests/purs/docs/src/TypeOpAliases.purs":["2019-11-02T17:39:14.685050684Z","5f1279d355f0e8f8c7d063950007ba060f0afdb83524fa10361f389d25fdacdf149c907cbdd94cf3d1a77751903701f22ba377203cd3b5d0c40e504699f94249"]},"TypeSynonym":{"/home/harry/code/purescript/tests/purs/docs/src/TypeSynonym.purs":["2019-11-02T17:39:14.549052869Z","d1a0af1c2592e7f150bb0bf1dca4fc82ffe95b4f96be611408828d105d28bb6a4243a4c2799b1c35875a352e51a19464e4507b9c81d9cd34f0f55f8c94898ed9"]},"TypeSynonymInstance":{"/home/harry/code/purescript/tests/purs/docs/src/TypeSynonymInstance.purs":["2019-11-02T17:39:14.549052869Z","336ba7262428a526f3824306f4ac472aebf637181b8aa23d823e6e70641539a14d57b52272d844af3e3a7fa85cdf4094042e464b61622a5a1c290ee8a6684733"]},"UTF8":{"/home/harry/code/purescript/tests/purs/docs/src/UTF8.purs":["2019-11-02T17:39:14.685050684Z","60771c6d4974ef36414775e5a2511e99d08d5ba3945b010d7a399b77b88b310e10ad7d0016f7946ca3f524e7bbd1dce3575f7b2d81f8154bde197a3da411a624"]},"Virtual":{"/home/harry/code/purescript/tests/purs/docs/src/Virtual.purs":["2019-11-02T17:39:14.685050684Z","a1e01c8b1a7c86c86942611649702ebf6689cf7559ce9ca0ba66052eafe64826b0770b33089e72cc26a3c90d75bcf62e0b75a6a90e085e70a6ec946b16456de2"]}} \ No newline at end of file
+{"Ado":{"src/Ado.purs":["2019-11-02T17:39:14.549052869Z","bd980ae20d61e0e34d23507b1d25598f27407a78cf70084327506f21cc02d85df1bd1b6937459665a8dd9df5bb43ec5947b6e94c16c852aba233747e05a9d58f"]},"ChildDeclOrder":{"src/ChildDeclOrder.purs":["2019-11-02T17:39:14.685050684Z","41a7be97fffe1bbbf925ccb56b68246abb8684b23529fc25e07827b57b32b60ccd82d5c9a2279dc23be1f8803cff8267fa296509b873ec337ffa15ee0e32e2c9"]},"Clash":{"src/Clash.purs":["2019-11-02T17:39:14.685050684Z","7b70d019ea46b72149e185d82bc1345113e8a3977a886aa31ac8a268c6c63c7b93553e1586c45e023e49e485d3f6523a4a11efc8dc70dd8bac5d8b9cac4e4c2d"]},"Clash1":{"src/Clash1.purs":["2019-11-02T17:39:14.685050684Z","bd09c1fd0308ce61d83bef03d3b2366601df559ef8cc9c09f17d963a1bfb2b2e373dcbf5729a3e465c635fbf0035ae09ea3ba58b7844b56586dc3baf9d857bb5"]},"Clash1a":{"src/Clash1a.purs":["2020-05-23T12:09:23.415333385Z","0a93c507e1fab2abaee66e20721e952062466e2597d8eb0c48cad8d351e3204ac157da0c3eebf3d13211cbe379e704245da3535f02bd768adf92f6c1119ca2ee"]},"Clash2":{"src/Clash2.purs":["2019-11-02T17:39:14.685050684Z","10c61c6600084fdcc0ee93608a354fd7efa7edab67ac8cce131e522b597080b2927dc7bb1a6c98765dfc9a30583dc5bea2514d2932554ab1657c664a81a0a81b"]},"Clash2a":{"src/Clash2a.purs":["2020-05-23T12:09:23.415333385Z","d37d26a74b0adec6d8b2de4b75997306e4f199374a1a2b4c1b431a273d16a9e89a634028b428c25aedbc01213bc00574abedaaabaae920f40eaa5be6196c07f6"]},"ConstrainedArgument":{"src/ConstrainedArgument.purs":["2020-05-23T12:09:23.415333385Z","87e0f15cb8e2608fa2ba1a5726eae564526394d07c787975db539c4a496d8889be042c774bd68f975e5fe3fd94a0ab66edac081192a5f5ea581424ea28e36948"]},"Data.Newtype":{"bower_components/purescript-newtype/src/Data/Newtype.purs":["2019-11-02T17:39:14.549052869Z","9a591cfc87fe2fc4e0cd95362fc2a3c12dbf4f7875860036d0d18cf57cdc063b3d72488fe351e2e95196030e89fb133edceed211219be5922f86160fed4965b9"]},"DeclOrder":{"src/DeclOrder.purs":["2019-11-02T17:39:14.685050684Z","a8c6ab9c335037c255ae6e0124a107f2e2462c2eebc2ff3637273ba436f2f3589ae203919ff5c8c61106b0542114ba3eba66426d8b5e316089bc1f4efb72643a"]},"DeclOrderNoExportList":{"src/DeclOrderNoExportList.purs":["2019-11-02T17:39:14.685050684Z","379def50dfd7a01dd2b057c707ea8ee53147d41c7dc28083c3827ccc213816840fd26d784a78bd1eabd105231e5479c7bfeebfcb03d1e2f3e8174ab173d740c4"]},"Desugar":{"src/Desugar.purs":["2019-11-02T17:39:14.685050684Z","50ceefe5cbac286908cc7070f4e94f57c62b5c91245d5a8c66d7f4565e3d037e4cf11524c4c790664588a0a5c4216390b5138be9ec93e14d0f82a2c59c8f561a"]},"DocComments":{"src/DocComments.purs":["2019-11-02T17:39:14.685050684Z","220498626601722feb58dd23dd80ac970f6ba7df8e8c2ad604ed833933f6b36219fb5f1d0b9963ffc7e9314043760055ab547fac5784a28416a4851f257a635b"]},"DocCommentsClassMethod":{"src/DocCommentsClassMethod.purs":["2019-11-02T17:39:14.549052869Z","f55a03f2b2624a9ca01adc8372bad4b7e46e8ef1a52ec41c5992767146c9a2354320a3a38587cbf2e78fec118430f193fdcb1cdd9600cd9f755dbbc2e36e46b7"]},"DocCommentsDataConstructor":{"src/DocCommentsDataConstructor.purs":["2019-11-02T17:39:14.549052869Z","68d644ce63642bd55d8338e78e0070c409d3c970a2967338cf612d7a3217813fd98a08e1905776572819cadbc08cdd4bec4a7c1473974a9f3f5d5b1149d33257"]},"DuplicateNames":{"src/DuplicateNames.purs":["2019-11-02T17:39:14.685050684Z","5652f5da0ae79185fb27bce13793bd7752779364e0d1c7c56be2d213853c26ad0abff8536a0d34090a079980e498c837026521efe4a8cfc1b1a16ec70c724eed"]},"Example":{"src/Example.purs":["2019-11-02T17:39:14.685050684Z","3b700a99cc5ee257009553d27a2d25f71f68f006e9deec2b3578f01c7fe4e77de1e929dc110dfcd51d68685ad3ab6b09b0147fe63719861e8a9e480a64e286d9"]},"Example2":{"src/Example2.purs":["2019-11-02T17:39:14.685050684Z","6a479db4e40f66b1e29889516a55cfb22b15b2b8c4531b9cf20307a965af3dc0a6dab4eccc31cca4eacaaa158a01c58ff995ac6f01b2e1ed5571c44fa3bf2536"]},"ExplicitExport":{"src/ExplicitExport.purs":["2019-11-02T17:39:14.685050684Z","fe733409eb325c971f84b6414a1fc9e08793d2271eebcd670ceefd5c5aef837ee76ec5cb5bed96d87ea791a7521c76668a71be5cd8fb14209414893dc20d3d47"]},"ExplicitTypeSignatures":{"src/ExplicitTypeSignatures.purs":["2019-11-02T17:39:14.685050684Z","78a70441c9966f04c6c32a74cbba299f0f8ea870c664e738eb0d8f8cc5929edb7bb697170fc306c9ee69fa4e2f0112af15c8bdb29d63645cdf6f2916a122a0bd"]},"ImportedTwice":{"src/ImportedTwice.purs":["2019-11-02T17:39:14.685050684Z","be9a0cb1e75c689c3af6817a5750862915e70a0017476cce4c539a3c7ce5b33554aa14d2668bd131b89bb28d65b5ddaa79abfb2a538d606f1b11b5ef0ec79067"]},"ImportedTwiceA":{"src/ImportedTwiceA.purs":["2019-11-02T17:39:14.685050684Z","883c8abaefe0dbacbcdea4c53eab41da26687680274419720b1e5d6510bf5127b7ba06df23515ad34f7ffc4626f0064d7867e2b4a5f255a6b573d219926364de"]},"ImportedTwiceB":{"src/ImportedTwiceB.purs":["2019-11-02T17:39:14.685050684Z","48cc2ac8ce40b1d0e3782fcb8ec798cf9c4838a595148055f1bb830d9b07d58780170ad3f8a90f43ac561aff2c52a5d8793480526a4768ebf1c8af1ff1b68751"]},"MultiVirtual":{"src/MultiVirtual.purs":["2019-11-02T17:39:14.685050684Z","31bc7e2c2ebee39dbc89536db51493a2cb1843a9e1aed8b288ef16660877fd1abd5f4224d3325a415aabcf79bd5fe76ebb9257738b0193a50c79a20d48b5ab29"]},"MultiVirtual1":{"src/MultiVirtual1.purs":["2019-11-02T17:39:14.685050684Z","23f7975f7494bb84f9fc6fde9071ce04e86df774d81e2b027a85ab46c8237f9921ee926f4a4ad3e03c7799e485ce39e542d1dd94953c50c0d58ea0003cfc3842"]},"MultiVirtual2":{"src/MultiVirtual2.purs":["2019-11-02T17:39:14.685050684Z","f424ed7c0db709b6bb1e57f87069f484fd0db9dddd0475cd15d36bd58743e98729c42efd2df6ee8fbd18609c36c2247cf3428a5a7f1f5ed11e233a2b134990ba"]},"MultiVirtual3":{"src/MultiVirtual3.purs":["2019-11-02T17:39:14.685050684Z","a42415e3b8309bfa81ef127c61dba6f4001188dcee160a8e2f73399179a11262f12daf0205d6bec38fc605b637550f16b62e84a0f2a0f6999355d56ff2540405"]},"NewOperators":{"src/NewOperators.purs":["2019-11-02T17:39:14.685050684Z","f74cae05c73db1f629e199692c517866fb1683caab3c4509657a371733f30319f0c505ed57208757b3e43795aab5191000c834a501d9bd2bf0e58875873c5c40"]},"NewOperators2":{"src/NewOperators2.purs":["2019-11-02T17:39:14.685050684Z","c551a91aa792fb9ee4b5758c010761a53d4a14b8fbaa6b76b6bd9a318a28f245c9b090bdc4f77b904c873d9b71d59fbad3ccd9ad7c8773f5c1e57a22a0204844"]},"NotAllCtors":{"src/NotAllCtors.purs":["2019-11-02T17:39:14.685050684Z","6e0af26cf897b5dd6e8dd4d75988e5607118f6fdd5219aa192f477cc4d760d504bdec930d46af82a44950e3de4fe6c37664a4560a523a45097503b85c161bd96"]},"Prelude":{"bower_components/purescript-prelude/src/Prelude.purs":["2019-11-02T17:39:14.685050684Z","7eb0b2f9b7aec29693f79be4642ccea792b1f54c7022a4f1395fb8f3a9b1ad6cbfb2e7685940b89ab21890c02949ec90d4823bd5c36a6b566ca9cb8ec561958f"]},"PrimSubmodules":{"src/PrimSubmodules.purs":["2019-11-02T17:39:14.549052869Z","cea3766e9920985a3458c6f7af4a19dbe435527d0b0e1d465e8d7362ebd14cea569e820c3849e45c88f368ced11b1e948276f86dc6f0dc0e0eac78c7df2afa50"]},"ReExportedTypeClass":{"src/ReExportedTypeClass.purs":["2019-11-02T17:39:14.685050684Z","1cc581d68e1ce113162ab851872e73645807f0deb1d2b970ebc04b314184fe30c3431212ffcf9eec09a56a2291e0050750ac6905f1884bc74d406d0323c4f804"]},"SolitaryTypeClassMember":{"src/SolitaryTypeClassMember.purs":["2019-11-02T17:39:14.685050684Z","f627c589b0a8f58d7bfdf28ecf87891a74e64e8399ce0ab645b7c58049fddc1ea3cbb3c34b862bec8576108d5258d9548ecfbbab98598671cc645a3f358ac852"]},"SomeTypeClass":{"src/SomeTypeClass.purs":["2019-11-02T17:39:14.685050684Z","d09fc77e6c6350e7e4941e2911e012271a49db4a75c57cf738d5865ca622d60b69337f969aa02b13fc869484cba00479212e4b8dbcb458c5723e7a5d73888368"]},"Transitive1":{"src/Transitive1.purs":["2019-11-02T17:39:14.685050684Z","42681f3d0fa143d36474d1cb2f464820bdb907bbc432cd91349f6acdd82657ecb4d9ad1d075c96c551bed37dada4615dd3ff64f912f2cc8a6d99b5e02ee51979"]},"Transitive2":{"src/Transitive2.purs":["2019-11-02T17:39:14.685050684Z","110a1bae420e0f0c05e9846fad483a1d035dfc3ba82c2cd81e44f548fd97965055b1a687ab86256f8cb6a3d79b4c4abe6f45d4728bbc04a7a1b0fedbca115b1e"]},"Transitive3":{"src/Transitive3.purs":["2019-11-02T17:39:14.685050684Z","65f7bb366ac8fab63084ff0229c9d55293db8126b539ff2cb53e511505995f426d50f4cca7d1f61fc53aaaaeed9d72791f9d9f12cc569d92e7bbe1d1908b093c"]},"TypeClassWithFunDeps":{"src/TypeClassWithFunDeps.purs":["2019-11-02T17:39:14.685050684Z","c828f194c8c679d97425ed7e04eb3c9bb04bc4c32542d7d6d7e4a36c6c734eb8ba1ef472ad2b0085d9a042a0724648b85a4605d8fe4995e1a32839b1fb1f0f23"]},"TypeClassWithoutMembers":{"src/TypeClassWithoutMembers.purs":["2019-11-02T17:39:14.685050684Z","3eac42652ce295ee47c340c4b86c91d0f6a8ad1f81824475fa4fc4ae8fd8bb77ceee6a46e31bebe9d2e8a980a7923432b41b0eff5cbf75580ee149e7d997e098"]},"TypeClassWithoutMembersIntermediate":{"src/TypeClassWithoutMembersIntermediate.purs":["2019-11-02T17:39:14.685050684Z","76d65083da1f6240b4c3b6c910af1326b9b9a538f4eb278b00ddf0bf67d9547c1cab0fae7661bbe4af6e7ecdea9fd26cc9ff9ea5b289d3c3994b3ccb3d099ba8"]},"TypeLevelString":{"src/TypeLevelString.purs":["2019-11-02T17:39:14.549052869Z","361dc3825ebd3efcd9a53dd900cc623f5eca14df82afc93f4d485d8b38e51eb0a72929b6cfb783b3d5c9bef46e6fd18c139fdbd10de484beb335e09ecee79388"]},"TypeOpAliases":{"src/TypeOpAliases.purs":["2019-11-02T17:39:14.685050684Z","5f1279d355f0e8f8c7d063950007ba060f0afdb83524fa10361f389d25fdacdf149c907cbdd94cf3d1a77751903701f22ba377203cd3b5d0c40e504699f94249"]},"TypeSynonym":{"src/TypeSynonym.purs":["2019-11-02T17:39:14.549052869Z","d1a0af1c2592e7f150bb0bf1dca4fc82ffe95b4f96be611408828d105d28bb6a4243a4c2799b1c35875a352e51a19464e4507b9c81d9cd34f0f55f8c94898ed9"]},"TypeSynonymInstance":{"src/TypeSynonymInstance.purs":["2019-11-02T17:39:14.549052869Z","336ba7262428a526f3824306f4ac472aebf637181b8aa23d823e6e70641539a14d57b52272d844af3e3a7fa85cdf4094042e464b61622a5a1c290ee8a6684733"]},"UTF8":{"src/UTF8.purs":["2019-11-02T17:39:14.685050684Z","60771c6d4974ef36414775e5a2511e99d08d5ba3945b010d7a399b77b88b310e10ad7d0016f7946ca3f524e7bbd1dce3575f7b2d81f8154bde197a3da411a624"]},"Virtual":{"src/Virtual.purs":["2019-11-02T17:39:14.685050684Z","a1e01c8b1a7c86c86942611649702ebf6689cf7559ce9ca0ba66052eafe64826b0770b33089e72cc26a3c90d75bcf62e0b75a6a90e085e70a6ec946b16456de2"]}} \ No newline at end of file
diff --git a/tests/purs/graph/graph.json b/tests/purs/graph/graph.json
new file mode 100644
index 0000000..2f27a3a
--- /dev/null
+++ b/tests/purs/graph/graph.json
@@ -0,0 +1 @@
+{"Module2":{"path":"tests/purs/graph/src/Module2.purs","depends":[]},"Module":{"path":"tests/purs/graph/src/Module.purs","depends":["Module2"]}} \ No newline at end of file
diff --git a/tests/purs/graph/src/Module.purs b/tests/purs/graph/src/Module.purs
new file mode 100644
index 0000000..567c661
--- /dev/null
+++ b/tests/purs/graph/src/Module.purs
@@ -0,0 +1,9 @@
+module Module (foo) where
+
+import Module2 (bar)
+
+foo :: Int
+foo = 0
+
+baz :: Int
+baz = foo + bar
diff --git a/tests/purs/graph/src/Module2.purs b/tests/purs/graph/src/Module2.purs
new file mode 100644
index 0000000..27b2053
--- /dev/null
+++ b/tests/purs/graph/src/Module2.purs
@@ -0,0 +1,4 @@
+module Module2 (bar) where
+
+bar :: Int
+bar = 1
diff --git a/tests/purs/graph/src/ModuleFailing.purs b/tests/purs/graph/src/ModuleFailing.purs
new file mode 100644
index 0000000..3346af5
--- /dev/null
+++ b/tests/purs/graph/src/ModuleFailing.purs
@@ -0,0 +1,5 @@
+module ModuleFailing where
+
+import NonExistent as M
+
+bat = M.nonExistent
diff --git a/tests/purs/publish/basic-example/output/Control.Applicative/externs.json b/tests/purs/publish/basic-example/output/Control.Applicative/externs.json
deleted file mode 100644
index ecfefc3..0000000
--- a/tests/purs/publish/basic-example/output/Control.Applicative/externs.json
+++ /dev/null
@@ -1 +0,0 @@
-{"efVersion":"0.13.4","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
deleted file mode 100644
index 1a7d252..0000000
--- a/tests/purs/publish/basic-example/output/Control.Apply/externs.json
+++ /dev/null
@@ -1 +0,0 @@
-{"efVersion":"0.13.4","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.Bind/externs.json b/tests/purs/publish/basic-example/output/Control.Bind/externs.json
deleted file mode 100644
index 150daa2..0000000
--- a/tests/purs/publish/basic-example/output/Control.Bind/externs.json
+++ /dev/null
@@ -1 +0,0 @@
-{"efVersion":"0.13.4","efModuleName":["Control","Bind"],"efExports":[{"ReExportRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[116,57]},{"exportSourceImportedFrom":["Control","Applicative"],"exportSourceDefinedIn":["Control","Applicative"]},{"TypeClassRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[116,57]},"Applicative"]}]},{"ReExportRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[116,57]},{"exportSourceImportedFrom":["Control","Apply"],"exportSourceDefinedIn":["Control","Apply"]},{"TypeClassRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[116,57]},"Apply"]}]},{"ReExportRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[116,57]},{"exportSourceImportedFrom":["Data","Functor"],"exportSourceDefinedIn":["Data","Functor"]},{"TypeClassRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[116,57]},"Functor"]}]},{"ReExportRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[116,57]},{"exportSourceImportedFrom":["Control","Apply"],"exportSourceDefinedIn":["Control","Apply"]},{"ValueRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[116,57]},{"Ident":"apply"}]}]},{"ReExportRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[116,57]},{"exportSourceImportedFrom":["Control","Applicative"],"exportSourceDefinedIn":["Control","Applicative"]},{"ValueRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[116,57]},{"Ident":"liftA1"}]}]},{"ReExportRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[116,57]},{"exportSourceImportedFrom":["Data","Functor"],"exportSourceDefinedIn":["Data","Functor"]},{"ValueRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[116,57]},{"Ident":"map"}]}]},{"ReExportRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[116,57]},{"exportSourceImportedFrom":["Control","Applicative"],"exportSourceDefinedIn":["Control","Applicative"]},{"ValueRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[116,57]},{"Ident":"pure"}]}]},{"ReExportRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[116,57]},{"exportSourceImportedFrom":["Control","Applicative"],"exportSourceDefinedIn":["Control","Applicative"]},{"ValueRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[116,57]},{"Ident":"unless"}]}]},{"ReExportRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[116,57]},{"exportSourceImportedFrom":["Data","Functor"],"exportSourceDefinedIn":["Data","Functor"]},{"ValueRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[116,57]},{"Ident":"void"}]}]},{"ReExportRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[116,57]},{"exportSourceImportedFrom":["Control","Applicative"],"exportSourceDefinedIn":["Control","Applicative"]},{"ValueRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[116,57]},{"Ident":"when"}]}]},{"ReExportRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[116,57]},{"exportSourceImportedFrom":["Data","Functor"],"exportSourceDefinedIn":["Data","Functor"]},{"ValueOpRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[116,57]},"$>"]}]},{"ReExportRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[116,57]},{"exportSourceImportedFrom":["Control","Apply"],"exportSourceDefinedIn":["Control","Apply"]},{"ValueOpRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[116,57]},"*>"]}]},{"ReExportRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[116,57]},{"exportSourceImportedFrom":["Data","Functor"],"exportSourceDefinedIn":["Data","Functor"]},{"ValueOpRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[116,57]},"<#>"]}]},{"ReExportRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[116,57]},{"exportSourceImportedFrom":["Data","Functor"],"exportSourceDefinedIn":["Data","Functor"]},{"ValueOpRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[116,57]},"<$"]}]},{"ReExportRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[116,57]},{"exportSourceImportedFrom":["Data","Functor"],"exportSourceDefinedIn":["Data","Functor"]},{"ValueOpRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[116,57]},"<$>"]}]},{"ReExportRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[116,57]},{"exportSourceImportedFrom":["Control","Apply"],"exportSourceDefinedIn":["Control","Apply"]},{"ValueOpRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[116,57]},"<*"]}]},{"ReExportRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[116,57]},{"exportSourceImportedFrom":["Control","Apply"],"exportSourceDefinedIn":["Control","Apply"]},{"ValueOpRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[116,57]},"<*>"]}]},{"TypeClassRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[116,57]},"Bind"]},{"ValueRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[116,57]},{"Ident":"bind"}]},{"ValueOpRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[116,57]},">>="]},{"ValueRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[116,57]},{"Ident":"bindFlipped"}]},{"ValueOpRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[116,57]},"=<<"]},{"TypeClassRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[116,57]},"Discard"]},{"ValueRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[116,57]},{"Ident":"discard"}]},{"ValueRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[116,57]},{"Ident":"join"}]},{"ValueRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[116,57]},{"Ident":"composeKleisli"}]},{"ValueOpRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[116,57]},">=>"]},{"ValueRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[116,57]},{"Ident":"composeKleisliFlipped"}]},{"ValueOpRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[116,57]},"<=<"]},{"ValueRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[116,57]},{"Ident":"ifM"}]},{"ModuleRef":[{"start":[9,5],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[9,24]},["Data","Functor"]]},{"ModuleRef":[{"start":[10,5],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[10,25]},["Control","Apply"]]},{"ModuleRef":[{"start":[11,5],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[11,31]},["Control","Applicative"]]},{"TypeInstanceRef":[{"start":[0,0],"name":"<generated>","end":[0,0]},{"Ident":"bindFn"}]},{"TypeInstanceRef":[{"start":[0,0],"name":"<generated>","end":[0,0]},{"Ident":"bindArray"}]},{"TypeInstanceRef":[{"start":[0,0],"name":"<generated>","end":[0,0]},{"Ident":"discardUnit"}]}],"efImports":[{"eiModule":["Prim"],"eiImportType":{"Implicit":[]},"eiImportedAs":["Prim"]},{"eiModule":["Prim"],"eiImportType":{"Implicit":[]},"eiImportedAs":null},{"eiModule":["Control","Applicative"],"eiImportType":{"Explicit":[{"TypeClassRef":[{"start":[14,29],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[14,46]},"Applicative"]},{"ValueRef":[{"start":[14,48],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[14,54]},{"Ident":"liftA1"}]},{"ValueRef":[{"start":[14,56],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[14,60]},{"Ident":"pure"}]},{"ValueRef":[{"start":[14,62],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[14,68]},{"Ident":"unless"}]},{"ValueRef":[{"start":[14,70],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[14,74]},{"Ident":"when"}]}]},"eiImportedAs":null},{"eiModule":["Control","Apply"],"eiImportType":{"Explicit":[{"TypeClassRef":[{"start":[15,23],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[15,34]},"Apply"]},{"ValueRef":[{"start":[15,36],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[15,41]},{"Ident":"apply"}]},{"ValueOpRef":[{"start":[15,43],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[15,47]},"*>"]},{"ValueOpRef":[{"start":[15,49],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[15,53]},"<*"]},{"ValueOpRef":[{"start":[15,55],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[15,60]},"<*>"]}]},"eiImportedAs":null},{"eiModule":["Control","Category"],"eiImportType":{"Explicit":[{"ValueRef":[{"start":[16,26],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[16,34]},{"Ident":"identity"}]}]},"eiImportedAs":null},{"eiModule":["Data","Function"],"eiImportType":{"Explicit":[{"ValueRef":[{"start":[18,23],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[18,27]},{"Ident":"flip"}]}]},"eiImportedAs":null},{"eiModule":["Data","Functor"],"eiImportType":{"Explicit":[{"TypeClassRef":[{"start":[19,22],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[19,35]},"Functor"]},{"ValueRef":[{"start":[19,37],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[19,40]},{"Ident":"map"}]},{"ValueRef":[{"start":[19,42],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[19,46]},{"Ident":"void"}]},{"ValueOpRef":[{"start":[19,48],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[19,52]},"$>"]},{"ValueOpRef":[{"start":[19,54],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[19,59]},"<#>"]},{"ValueOpRef":[{"start":[19,61],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[19,65]},"<$"]},{"ValueOpRef":[{"start":[19,67],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[19,72]},"<$>"]}]},"eiImportedAs":null},{"eiModule":["Data","Unit"],"eiImportType":{"Explicit":[{"TypeRef":[{"start":[20,19],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[20,23]},"Unit",[]]}]},"eiImportedAs":null}],"efFixities":[{"efAssociativity":"infixl","efPrecedence":1,"efOperator":">>=","efAlias":[["Control","Bind"],{"Left":{"Ident":"bind"}}]},{"efAssociativity":"infixr","efPrecedence":1,"efOperator":"=<<","efAlias":[["Control","Bind"],{"Left":{"Ident":"bindFlipped"}}]},{"efAssociativity":"infixr","efPrecedence":1,"efOperator":">=>","efAlias":[["Control","Bind"],{"Left":{"Ident":"composeKleisli"}}]},{"efAssociativity":"infixr","efPrecedence":1,"efOperator":"<=<","efAlias":[["Control","Bind"],{"Left":{"Ident":"composeKleisliFlipped"}}]}],"efTypeFixities":[],"efDeclarations":[{"EDType":{"edTypeName":"Bind","edTypeKind":{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"FunKind","contents":[{"annotation":[{"start":[49,23],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[49,26]},[]],"tag":"FunKind","contents":[{"annotation":[{"start":[49,33],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[49,35]},[]],"tag":"NamedKind","contents":[["Prim"],"Type"]},{"annotation":[{"start":[49,27],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[49,29]},[]],"tag":"NamedKind","contents":[["Prim"],"Type"]}]},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"NamedKind","contents":[["Prim"],"Type"]}]},"edTypeDeclarationKind":"TypeSynonym"}},{"EDTypeSynonym":{"edTypeSynonymName":"Bind","edTypeSynonymArguments":[["m",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":["bind",{"annotation":[{"start":[49,11],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[49,47]},[]],"tag":"ForAll","contents":["b",{"annotation":[{"start":[49,18],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[49,47]},[]],"tag":"ForAll","contents":["a",{"annotation":[{"start":[49,23],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[49,47]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[49,23],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[49,47]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[49,27],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[49,29]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[49,23],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[49,26]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[49,23],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[49,24]},[]],"tag":"TypeVar","contents":"m"},{"annotation":[{"start":[49,25],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[49,26]},[]],"tag":"TypeVar","contents":"a"}]}]},{"annotation":[{"start":[49,30],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[49,47]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[49,30],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[49,47]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[49,41],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[49,43]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[49,31],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[49,39]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[49,31],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[49,39]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[49,33],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[49,35]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[49,31],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[49,32]},[]],"tag":"TypeVar","contents":"a"}]},{"annotation":[{"start":[49,36],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[49,39]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[49,36],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[49,37]},[]],"tag":"TypeVar","contents":"m"},{"annotation":[{"start":[49,38],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[49,39]},[]],"tag":"TypeVar","contents":"b"}]}]}]},{"annotation":[{"start":[49,44],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[49,47]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[49,44],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[49,45]},[]],"tag":"TypeVar","contents":"m"},{"annotation":[{"start":[49,46],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[49,47]},[]],"tag":"TypeVar","contents":"b"}]}]}]},null]},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":[48,13],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[48,14]},[]],"tag":"TypeVar","contents":"m"}]}]},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"REmpty"}]}]}]}}},{"EDClass":{"edClassName":"Bind","edClassTypeArguments":[["m",null]],"edClassMembers":[[{"Ident":"bind"},{"annotation":[{"start":[49,11],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[49,47]},[]],"tag":"ForAll","contents":["b",{"annotation":[{"start":[49,18],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[49,47]},[]],"tag":"ForAll","contents":["a",{"annotation":[{"start":[49,23],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[49,47]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[49,23],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[49,47]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[49,27],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[49,29]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[49,23],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[49,26]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[49,23],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[49,24]},[]],"tag":"TypeVar","contents":"m"},{"annotation":[{"start":[49,25],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[49,26]},[]],"tag":"TypeVar","contents":"a"}]}]},{"annotation":[{"start":[49,30],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[49,47]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[49,30],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[49,47]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[49,41],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[49,43]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[49,31],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[49,39]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[49,31],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[49,39]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[49,33],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[49,35]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[49,31],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[49,32]},[]],"tag":"TypeVar","contents":"a"}]},{"annotation":[{"start":[49,36],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[49,39]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[49,36],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[49,37]},[]],"tag":"TypeVar","contents":"m"},{"annotation":[{"start":[49,38],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[49,39]},[]],"tag":"TypeVar","contents":"b"}]}]}]},{"annotation":[{"start":[49,44],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[49,47]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[49,44],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[49,45]},[]],"tag":"TypeVar","contents":"m"},{"annotation":[{"start":[49,46],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[49,47]},[]],"tag":"TypeVar","contents":"b"}]}]}]},null]},null]}]],"edClassConstraints":[{"constraintAnn":[{"start":[48,7],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[48,14]},[]],"constraintClass":[["Control","Apply"],"Apply"],"constraintArgs":[{"annotation":[{"start":[48,13],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[48,14]},[]],"tag":"TypeVar","contents":"m"}],"constraintData":null}],"edFunctionalDependencies":[],"edIsEmpty":false}},{"EDValue":{"edValueName":{"Ident":"bind"},"edValueType":{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"ForAll","contents":["m",{"annotation":[{"start":[49,11],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[49,47]},[]],"tag":"ForAll","contents":["b",{"annotation":[{"start":[49,18],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[49,47]},[]],"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","Bind"],"Bind"],"constraintArgs":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeVar","contents":"m"}],"constraintData":null},{"annotation":[{"start":[49,23],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[49,47]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[49,23],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[49,47]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[49,27],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[49,29]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[49,23],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[49,26]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[49,23],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[49,24]},[]],"tag":"TypeVar","contents":"m"},{"annotation":[{"start":[49,25],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[49,26]},[]],"tag":"TypeVar","contents":"a"}]}]},{"annotation":[{"start":[49,30],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[49,47]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[49,30],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[49,47]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[49,41],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[49,43]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[49,31],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[49,39]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[49,31],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[49,39]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[49,33],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[49,35]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[49,31],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[49,32]},[]],"tag":"TypeVar","contents":"a"}]},{"annotation":[{"start":[49,36],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[49,39]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[49,36],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[49,37]},[]],"tag":"TypeVar","contents":"m"},{"annotation":[{"start":[49,38],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[49,39]},[]],"tag":"TypeVar","contents":"b"}]}]}]},{"annotation":[{"start":[49,44],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[49,47]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[49,44],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[49,45]},[]],"tag":"TypeVar","contents":"m"},{"annotation":[{"start":[49,46],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[49,47]},[]],"tag":"TypeVar","contents":"b"}]}]}]}]},23]},24]},25]}}},{"EDValue":{"edValueName":{"Ident":"bindFlipped"},"edValueType":{"annotation":[{"start":[58,16],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[58,64]},[]],"tag":"ForAll","contents":["b",{"annotation":[{"start":[58,23],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[58,64]},[]],"tag":"ForAll","contents":["a",{"annotation":[{"start":[58,23],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[58,64]},[]],"tag":"ForAll","contents":["m",{"annotation":[{"start":[58,30],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[58,64]},[]],"tag":"ConstrainedType","contents":[{"constraintAnn":[{"start":[58,30],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[58,36]},[]],"constraintClass":[["Control","Bind"],"Bind"],"constraintArgs":[{"annotation":[{"start":[58,35],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[58,36]},[]],"tag":"TypeVar","contents":"m"}],"constraintData":null},{"annotation":[{"start":[58,40],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[58,64]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[58,40],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[58,64]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[58,51],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[58,53]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[58,41],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[58,49]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[58,41],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[58,49]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[58,43],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[58,45]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[58,41],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[58,42]},[]],"tag":"TypeVar","contents":"a"}]},{"annotation":[{"start":[58,46],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[58,49]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[58,46],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[58,47]},[]],"tag":"TypeVar","contents":"m"},{"annotation":[{"start":[58,48],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[58,49]},[]],"tag":"TypeVar","contents":"b"}]}]}]},{"annotation":[{"start":[58,54],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[58,64]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[58,54],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[58,64]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[58,58],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[58,60]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[58,54],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[58,57]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[58,54],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[58,55]},[]],"tag":"TypeVar","contents":"m"},{"annotation":[{"start":[58,56],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[58,57]},[]],"tag":"TypeVar","contents":"a"}]}]},{"annotation":[{"start":[58,61],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[58,64]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[58,61],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[58,62]},[]],"tag":"TypeVar","contents":"m"},{"annotation":[{"start":[58,63],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[58,64]},[]],"tag":"TypeVar","contents":"b"}]}]}]}]},26]},27]},28]}}},{"EDType":{"edTypeName":"Discard","edTypeKind":{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"FunKind","contents":[{"annotation":[{"start":[77,26],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[77,32]},[]],"tag":"NamedKind","contents":[["Prim"],"Type"]},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"NamedKind","contents":[["Prim"],"Type"]}]},"edTypeDeclarationKind":"TypeSynonym"}},{"EDTypeSynonym":{"edTypeSynonymName":"Discard","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":["discard",{"annotation":[{"start":[77,14],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[77,60]},[]],"tag":"ForAll","contents":["b",{"annotation":[{"start":[77,21],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[77,60]},[]],"tag":"ForAll","contents":["f",{"annotation":[{"start":[77,26],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[77,60]},[]],"tag":"ConstrainedType","contents":[{"constraintAnn":[{"start":[77,26],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[77,32]},[]],"constraintClass":[["Control","Bind"],"Bind"],"constraintArgs":[{"annotation":[{"start":[77,31],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[77,32]},[]],"tag":"TypeVar","contents":"f"}],"constraintData":null},{"annotation":[{"start":[77,36],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[77,60]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[77,36],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[77,60]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[77,40],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[77,42]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[77,36],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[77,39]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[77,36],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[77,37]},[]],"tag":"TypeVar","contents":"f"},{"annotation":[{"start":[77,38],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[77,39]},[]],"tag":"TypeVar","contents":"a"}]}]},{"annotation":[{"start":[77,43],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[77,60]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[77,43],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[77,60]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[77,54],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[77,56]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[77,44],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[77,52]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[77,44],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[77,52]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[77,46],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[77,48]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[77,44],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[77,45]},[]],"tag":"TypeVar","contents":"a"}]},{"annotation":[{"start":[77,49],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[77,52]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[77,49],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[77,50]},[]],"tag":"TypeVar","contents":"f"},{"annotation":[{"start":[77,51],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[77,52]},[]],"tag":"TypeVar","contents":"b"}]}]}]},{"annotation":[{"start":[77,57],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[77,60]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[77,57],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[77,58]},[]],"tag":"TypeVar","contents":"f"},{"annotation":[{"start":[77,59],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[77,60]},[]],"tag":"TypeVar","contents":"b"}]}]}]}]},null]},null]},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"REmpty"}]}]}}},{"EDClass":{"edClassName":"Discard","edClassTypeArguments":[["a",null]],"edClassMembers":[[{"Ident":"discard"},{"annotation":[{"start":[77,14],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[77,60]},[]],"tag":"ForAll","contents":["b",{"annotation":[{"start":[77,21],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[77,60]},[]],"tag":"ForAll","contents":["f",{"annotation":[{"start":[77,26],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[77,60]},[]],"tag":"ConstrainedType","contents":[{"constraintAnn":[{"start":[77,26],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[77,32]},[]],"constraintClass":[["Control","Bind"],"Bind"],"constraintArgs":[{"annotation":[{"start":[77,31],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[77,32]},[]],"tag":"TypeVar","contents":"f"}],"constraintData":null},{"annotation":[{"start":[77,36],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[77,60]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[77,36],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[77,60]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[77,40],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[77,42]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[77,36],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[77,39]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[77,36],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[77,37]},[]],"tag":"TypeVar","contents":"f"},{"annotation":[{"start":[77,38],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[77,39]},[]],"tag":"TypeVar","contents":"a"}]}]},{"annotation":[{"start":[77,43],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[77,60]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[77,43],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[77,60]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[77,54],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[77,56]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[77,44],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[77,52]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[77,44],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[77,52]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[77,46],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[77,48]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[77,44],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[77,45]},[]],"tag":"TypeVar","contents":"a"}]},{"annotation":[{"start":[77,49],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[77,52]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[77,49],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[77,50]},[]],"tag":"TypeVar","contents":"f"},{"annotation":[{"start":[77,51],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[77,52]},[]],"tag":"TypeVar","contents":"b"}]}]}]},{"annotation":[{"start":[77,57],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[77,60]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[77,57],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[77,58]},[]],"tag":"TypeVar","contents":"f"},{"annotation":[{"start":[77,59],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[77,60]},[]],"tag":"TypeVar","contents":"b"}]}]}]}]},null]},null]}]],"edClassConstraints":[],"edFunctionalDependencies":[],"edIsEmpty":false}},{"EDValue":{"edValueName":{"Ident":"discard"},"edValueType":{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"ForAll","contents":["a",{"annotation":[{"start":[77,14],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[77,60]},[]],"tag":"ForAll","contents":["b",{"annotation":[{"start":[77,21],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[77,60]},[]],"tag":"ForAll","contents":["f",{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"ConstrainedType","contents":[{"constraintAnn":[{"start":[0,0],"name":"","end":[0,0]},[]],"constraintClass":[["Control","Bind"],"Discard"],"constraintArgs":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeVar","contents":"a"}],"constraintData":null},{"annotation":[{"start":[77,26],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[77,60]},[]],"tag":"ConstrainedType","contents":[{"constraintAnn":[{"start":[77,26],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[77,32]},[]],"constraintClass":[["Control","Bind"],"Bind"],"constraintArgs":[{"annotation":[{"start":[77,31],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[77,32]},[]],"tag":"TypeVar","contents":"f"}],"constraintData":null},{"annotation":[{"start":[77,36],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[77,60]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[77,36],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[77,60]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[77,40],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[77,42]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[77,36],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[77,39]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[77,36],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[77,37]},[]],"tag":"TypeVar","contents":"f"},{"annotation":[{"start":[77,38],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[77,39]},[]],"tag":"TypeVar","contents":"a"}]}]},{"annotation":[{"start":[77,43],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[77,60]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[77,43],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[77,60]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[77,54],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[77,56]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[77,44],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[77,52]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[77,44],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[77,52]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[77,46],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[77,48]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[77,44],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[77,45]},[]],"tag":"TypeVar","contents":"a"}]},{"annotation":[{"start":[77,49],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[77,52]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[77,49],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[77,50]},[]],"tag":"TypeVar","contents":"f"},{"annotation":[{"start":[77,51],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[77,52]},[]],"tag":"TypeVar","contents":"b"}]}]}]},{"annotation":[{"start":[77,57],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[77,60]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[77,57],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[77,58]},[]],"tag":"TypeVar","contents":"f"},{"annotation":[{"start":[77,59],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[77,60]},[]],"tag":"TypeVar","contents":"b"}]}]}]}]}]},0]},1]},2]}}},{"EDValue":{"edValueName":{"Ident":"join"},"edValueType":{"annotation":[{"start":[83,9],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[83,45]},[]],"tag":"ForAll","contents":["m",{"annotation":[{"start":[83,16],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[83,45]},[]],"tag":"ForAll","contents":["a",{"annotation":[{"start":[83,21],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[83,45]},[]],"tag":"ConstrainedType","contents":[{"constraintAnn":[{"start":[83,21],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[83,27]},[]],"constraintClass":[["Control","Bind"],"Bind"],"constraintArgs":[{"annotation":[{"start":[83,26],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[83,27]},[]],"tag":"TypeVar","contents":"m"}],"constraintData":null},{"annotation":[{"start":[83,31],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[83,45]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[83,31],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[83,45]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[83,39],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[83,41]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[83,31],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[83,38]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[83,31],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[83,32]},[]],"tag":"TypeVar","contents":"m"},{"annotation":[{"start":[83,34],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[83,37]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[83,34],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[83,35]},[]],"tag":"TypeVar","contents":"m"},{"annotation":[{"start":[83,36],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[83,37]},[]],"tag":"TypeVar","contents":"a"}]}]}]},{"annotation":[{"start":[83,42],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[83,45]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[83,42],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[83,43]},[]],"tag":"TypeVar","contents":"m"},{"annotation":[{"start":[83,44],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[83,45]},[]],"tag":"TypeVar","contents":"a"}]}]}]},56]},57]}}},{"EDValue":{"edValueName":{"Ident":"composeKleisli"},"edValueType":{"annotation":[{"start":[95,19],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[95,81]},[]],"tag":"ForAll","contents":["m",{"annotation":[{"start":[95,26],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[95,81]},[]],"tag":"ForAll","contents":["c",{"annotation":[{"start":[95,26],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[95,81]},[]],"tag":"ForAll","contents":["b",{"annotation":[{"start":[95,26],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[95,81]},[]],"tag":"ForAll","contents":["a",{"annotation":[{"start":[95,35],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[95,81]},[]],"tag":"ConstrainedType","contents":[{"constraintAnn":[{"start":[95,35],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[95,41]},[]],"constraintClass":[["Control","Bind"],"Bind"],"constraintArgs":[{"annotation":[{"start":[95,40],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[95,41]},[]],"tag":"TypeVar","contents":"m"}],"constraintData":null},{"annotation":[{"start":[95,45],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[95,81]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[95,45],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[95,81]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[95,56],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[95,58]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[95,46],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[95,54]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[95,46],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[95,54]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[95,48],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[95,50]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[95,46],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[95,47]},[]],"tag":"TypeVar","contents":"a"}]},{"annotation":[{"start":[95,51],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[95,54]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[95,51],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[95,52]},[]],"tag":"TypeVar","contents":"m"},{"annotation":[{"start":[95,53],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[95,54]},[]],"tag":"TypeVar","contents":"b"}]}]}]},{"annotation":[{"start":[95,59],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[95,81]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[95,59],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[95,81]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[95,70],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[95,72]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[95,60],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[95,68]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[95,60],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[95,68]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[95,62],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[95,64]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[95,60],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[95,61]},[]],"tag":"TypeVar","contents":"b"}]},{"annotation":[{"start":[95,65],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[95,68]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[95,65],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[95,66]},[]],"tag":"TypeVar","contents":"m"},{"annotation":[{"start":[95,67],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[95,68]},[]],"tag":"TypeVar","contents":"c"}]}]}]},{"annotation":[{"start":[95,73],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[95,81]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[95,73],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[95,81]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[95,75],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[95,77]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[95,73],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[95,74]},[]],"tag":"TypeVar","contents":"a"}]},{"annotation":[{"start":[95,78],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[95,81]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[95,78],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[95,79]},[]],"tag":"TypeVar","contents":"m"},{"annotation":[{"start":[95,80],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[95,81]},[]],"tag":"TypeVar","contents":"c"}]}]}]}]}]},40]},41]},42]},43]}}},{"EDValue":{"edValueName":{"Ident":"composeKleisliFlipped"},"edValueType":{"annotation":[{"start":[101,26],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[101,88]},[]],"tag":"ForAll","contents":["m",{"annotation":[{"start":[101,33],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[101,88]},[]],"tag":"ForAll","contents":["c",{"annotation":[{"start":[101,33],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[101,88]},[]],"tag":"ForAll","contents":["b",{"annotation":[{"start":[101,33],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[101,88]},[]],"tag":"ForAll","contents":["a",{"annotation":[{"start":[101,42],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[101,88]},[]],"tag":"ConstrainedType","contents":[{"constraintAnn":[{"start":[101,42],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[101,48]},[]],"constraintClass":[["Control","Bind"],"Bind"],"constraintArgs":[{"annotation":[{"start":[101,47],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[101,48]},[]],"tag":"TypeVar","contents":"m"}],"constraintData":null},{"annotation":[{"start":[101,52],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[101,88]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[101,52],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[101,88]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[101,63],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[101,65]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[101,53],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[101,61]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[101,53],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[101,61]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[101,55],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[101,57]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[101,53],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[101,54]},[]],"tag":"TypeVar","contents":"b"}]},{"annotation":[{"start":[101,58],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[101,61]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[101,58],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[101,59]},[]],"tag":"TypeVar","contents":"m"},{"annotation":[{"start":[101,60],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[101,61]},[]],"tag":"TypeVar","contents":"c"}]}]}]},{"annotation":[{"start":[101,66],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[101,88]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[101,66],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[101,88]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[101,77],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[101,79]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[101,67],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[101,75]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[101,67],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[101,75]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[101,69],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[101,71]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[101,67],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[101,68]},[]],"tag":"TypeVar","contents":"a"}]},{"annotation":[{"start":[101,72],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[101,75]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[101,72],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[101,73]},[]],"tag":"TypeVar","contents":"m"},{"annotation":[{"start":[101,74],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[101,75]},[]],"tag":"TypeVar","contents":"b"}]}]}]},{"annotation":[{"start":[101,80],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[101,88]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[101,80],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[101,88]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[101,82],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[101,84]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[101,80],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[101,81]},[]],"tag":"TypeVar","contents":"a"}]},{"annotation":[{"start":[101,85],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[101,88]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[101,85],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[101,86]},[]],"tag":"TypeVar","contents":"m"},{"annotation":[{"start":[101,87],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[101,88]},[]],"tag":"TypeVar","contents":"c"}]}]}]}]}]},32]},33]},34]},35]}}},{"EDValue":{"edValueName":{"Ident":"ifM"},"edValueType":{"annotation":[{"start":[115,8],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[115,60]},[]],"tag":"ForAll","contents":["m",{"annotation":[{"start":[115,15],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[115,60]},[]],"tag":"ForAll","contents":["a",{"annotation":[{"start":[115,20],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[115,60]},[]],"tag":"ConstrainedType","contents":[{"constraintAnn":[{"start":[115,20],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[115,26]},[]],"constraintClass":[["Control","Bind"],"Bind"],"constraintArgs":[{"annotation":[{"start":[115,25],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[115,26]},[]],"tag":"TypeVar","contents":"m"}],"constraintData":null},{"annotation":[{"start":[115,30],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[115,60]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[115,30],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[115,60]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[115,40],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[115,42]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[115,30],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[115,39]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[115,30],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[115,31]},[]],"tag":"TypeVar","contents":"m"},{"annotation":[{"start":[115,32],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[115,39]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Boolean"]}]}]},{"annotation":[{"start":[115,43],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[115,60]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[115,43],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[115,60]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[115,47],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[115,49]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[115,43],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[115,46]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[115,43],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[115,44]},[]],"tag":"TypeVar","contents":"m"},{"annotation":[{"start":[115,45],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[115,46]},[]],"tag":"TypeVar","contents":"a"}]}]},{"annotation":[{"start":[115,50],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[115,60]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[115,50],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[115,60]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[115,54],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[115,56]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[115,50],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[115,53]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[115,50],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[115,51]},[]],"tag":"TypeVar","contents":"m"},{"annotation":[{"start":[115,52],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[115,53]},[]],"tag":"TypeVar","contents":"a"}]}]},{"annotation":[{"start":[115,57],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[115,60]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[115,57],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[115,58]},[]],"tag":"TypeVar","contents":"m"},{"annotation":[{"start":[115,59],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[115,60]},[]],"tag":"TypeVar","contents":"a"}]}]}]}]}]},52]},53]}}},{"EDInstance":{"edInstanceClassName":[["Control","Bind"],"Bind"],"edInstanceName":{"Ident":"bindFn"},"edInstanceTypes":[{"annotation":[{"start":[63,26],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[63,32]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[63,26],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[63,30]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[63,31],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[63,32]},[]],"tag":"TypeVar","contents":"r"}]}],"edInstanceConstraints":[],"edInstanceChain":[[["Control","Bind"],{"Ident":"bindFn"}]],"edInstanceChainIndex":0}},{"EDInstance":{"edInstanceClassName":[["Control","Bind"],"Bind"],"edInstanceName":{"Ident":"bindArray"},"edInstanceTypes":[{"annotation":[{"start":[66,28],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[66,33]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Array"]}],"edInstanceConstraints":[],"edInstanceChain":[[["Control","Bind"],{"Ident":"bindArray"}]],"edInstanceChainIndex":0}},{"EDInstance":{"edInstanceClassName":[["Control","Bind"],"Discard"],"edInstanceName":{"Ident":"discardUnit"},"edInstanceTypes":[{"annotation":[{"start":[79,33],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[79,37]},[]],"tag":"TypeConstructor","contents":[["Data","Unit"],"Unit"]}],"edInstanceConstraints":[],"edInstanceChain":[[["Control","Bind"],{"Ident":"discardUnit"}]],"edInstanceChainIndex":0}}],"efSourceSpan":{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Control/Bind.purs","end":[116,57]}} \ No newline at end of file
diff --git a/tests/purs/publish/basic-example/output/Control.Category/externs.json b/tests/purs/publish/basic-example/output/Control.Category/externs.json
deleted file mode 100644
index 123e2cc..0000000
--- a/tests/purs/publish/basic-example/output/Control.Category/externs.json
+++ /dev/null
@@ -1 +0,0 @@
-{"efVersion":"0.13.4","efModuleName":["Control","Category"],"efExports":[{"ReExportRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Control/Category.purs","end":[20,17]},{"exportSourceImportedFrom":["Control","Semigroupoid"],"exportSourceDefinedIn":["Control","Semigroupoid"]},{"TypeClassRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Control/Category.purs","end":[20,17]},"Semigroupoid"]}]},{"ReExportRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Control/Category.purs","end":[20,17]},{"exportSourceImportedFrom":["Control","Semigroupoid"],"exportSourceDefinedIn":["Control","Semigroupoid"]},{"ValueRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Control/Category.purs","end":[20,17]},{"Ident":"compose"}]}]},{"ReExportRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Control/Category.purs","end":[20,17]},{"exportSourceImportedFrom":["Control","Semigroupoid"],"exportSourceDefinedIn":["Control","Semigroupoid"]},{"ValueOpRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Control/Category.purs","end":[20,17]},"<<<"]}]},{"ReExportRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Control/Category.purs","end":[20,17]},{"exportSourceImportedFrom":["Control","Semigroupoid"],"exportSourceDefinedIn":["Control","Semigroupoid"]},{"ValueOpRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Control/Category.purs","end":[20,17]},">>>"]}]},{"TypeClassRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Control/Category.purs","end":[20,17]},"Category"]},{"ValueRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Control/Category.purs","end":[20,17]},{"Ident":"identity"}]},{"ModuleRef":[{"start":[3,5],"name":"../../../support/bower_components/purescript-prelude/src/Control/Category.purs","end":[3,32]},["Control","Semigroupoid"]]},{"TypeInstanceRef":[{"start":[0,0],"name":"<generated>","end":[0,0]},{"Ident":"categoryFn"}]}],"efImports":[{"eiModule":["Prim"],"eiImportType":{"Implicit":[]},"eiImportedAs":["Prim"]},{"eiModule":["Prim"],"eiImportType":{"Implicit":[]},"eiImportedAs":null},{"eiModule":["Control","Semigroupoid"],"eiImportType":{"Explicit":[{"TypeClassRef":[{"start":[6,30],"name":"../../../support/bower_components/purescript-prelude/src/Control/Category.purs","end":[6,48]},"Semigroupoid"]},{"ValueRef":[{"start":[6,50],"name":"../../../support/bower_components/purescript-prelude/src/Control/Category.purs","end":[6,57]},{"Ident":"compose"}]},{"ValueOpRef":[{"start":[6,59],"name":"../../../support/bower_components/purescript-prelude/src/Control/Category.purs","end":[6,64]},"<<<"]},{"ValueOpRef":[{"start":[6,66],"name":"../../../support/bower_components/purescript-prelude/src/Control/Category.purs","end":[6,71]},">>>"]}]},"eiImportedAs":null}],"efFixities":[],"efTypeFixities":[],"efDeclarations":[{"EDType":{"edTypeName":"Category","edTypeKind":{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"FunKind","contents":[{"annotation":[{"start":[17,25],"name":"../../../support/bower_components/purescript-prelude/src/Control/Category.purs","end":[17,28]},[]],"tag":"FunKind","contents":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"NamedKind","contents":[["Prim"],"Type"]},{"annotation":[{"start":[17,25],"name":"../../../support/bower_components/purescript-prelude/src/Control/Category.purs","end":[17,30]},[]],"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":"Category","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":["identity",{"annotation":[{"start":[17,15],"name":"../../../support/bower_components/purescript-prelude/src/Control/Category.purs","end":[17,30]},[]],"tag":"ForAll","contents":["t",{"annotation":[{"start":[17,25],"name":"../../../support/bower_components/purescript-prelude/src/Control/Category.purs","end":[17,30]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[17,25],"name":"../../../support/bower_components/purescript-prelude/src/Control/Category.purs","end":[17,28]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[17,25],"name":"../../../support/bower_components/purescript-prelude/src/Control/Category.purs","end":[17,26]},[]],"tag":"TypeVar","contents":"a"},{"annotation":[{"start":[17,27],"name":"../../../support/bower_components/purescript-prelude/src/Control/Category.purs","end":[17,28]},[]],"tag":"TypeVar","contents":"t"}]},{"annotation":[{"start":[17,29],"name":"../../../support/bower_components/purescript-prelude/src/Control/Category.purs","end":[17,30]},[]],"tag":"TypeVar","contents":"t"}]},null]},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"RCons","contents":["Semigroupoid0",{"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","Semigroupoid"],"Semigroupoid"]},{"annotation":[{"start":[16,20],"name":"../../../support/bower_components/purescript-prelude/src/Control/Category.purs","end":[16,21]},[]],"tag":"TypeVar","contents":"a"}]}]},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"REmpty"}]}]}]}}},{"EDClass":{"edClassName":"Category","edClassTypeArguments":[["a",null]],"edClassMembers":[[{"Ident":"identity"},{"annotation":[{"start":[17,15],"name":"../../../support/bower_components/purescript-prelude/src/Control/Category.purs","end":[17,30]},[]],"tag":"ForAll","contents":["t",{"annotation":[{"start":[17,25],"name":"../../../support/bower_components/purescript-prelude/src/Control/Category.purs","end":[17,30]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[17,25],"name":"../../../support/bower_components/purescript-prelude/src/Control/Category.purs","end":[17,28]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[17,25],"name":"../../../support/bower_components/purescript-prelude/src/Control/Category.purs","end":[17,26]},[]],"tag":"TypeVar","contents":"a"},{"annotation":[{"start":[17,27],"name":"../../../support/bower_components/purescript-prelude/src/Control/Category.purs","end":[17,28]},[]],"tag":"TypeVar","contents":"t"}]},{"annotation":[{"start":[17,29],"name":"../../../support/bower_components/purescript-prelude/src/Control/Category.purs","end":[17,30]},[]],"tag":"TypeVar","contents":"t"}]},null]}]],"edClassConstraints":[{"constraintAnn":[{"start":[16,7],"name":"../../../support/bower_components/purescript-prelude/src/Control/Category.purs","end":[16,21]},[]],"constraintClass":[["Control","Semigroupoid"],"Semigroupoid"],"constraintArgs":[{"annotation":[{"start":[16,20],"name":"../../../support/bower_components/purescript-prelude/src/Control/Category.purs","end":[16,21]},[]],"tag":"TypeVar","contents":"a"}],"constraintData":null}],"edFunctionalDependencies":[],"edIsEmpty":false}},{"EDValue":{"edValueName":{"Ident":"identity"},"edValueType":{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"ForAll","contents":["a",{"annotation":[{"start":[17,15],"name":"../../../support/bower_components/purescript-prelude/src/Control/Category.purs","end":[17,30]},[]],"tag":"ForAll","contents":["t",{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"ConstrainedType","contents":[{"constraintAnn":[{"start":[0,0],"name":"","end":[0,0]},[]],"constraintClass":[["Control","Category"],"Category"],"constraintArgs":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeVar","contents":"a"}],"constraintData":null},{"annotation":[{"start":[17,25],"name":"../../../support/bower_components/purescript-prelude/src/Control/Category.purs","end":[17,30]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[17,25],"name":"../../../support/bower_components/purescript-prelude/src/Control/Category.purs","end":[17,28]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[17,25],"name":"../../../support/bower_components/purescript-prelude/src/Control/Category.purs","end":[17,26]},[]],"tag":"TypeVar","contents":"a"},{"annotation":[{"start":[17,27],"name":"../../../support/bower_components/purescript-prelude/src/Control/Category.purs","end":[17,28]},[]],"tag":"TypeVar","contents":"t"}]},{"annotation":[{"start":[17,29],"name":"../../../support/bower_components/purescript-prelude/src/Control/Category.purs","end":[17,30]},[]],"tag":"TypeVar","contents":"t"}]}]},0]},1]}}},{"EDInstance":{"edInstanceClassName":[["Control","Category"],"Category"],"edInstanceName":{"Ident":"categoryFn"},"edInstanceTypes":[{"annotation":[{"start":[19,33],"name":"../../../support/bower_components/purescript-prelude/src/Control/Category.purs","end":[19,37]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]}],"edInstanceConstraints":[],"edInstanceChain":[[["Control","Category"],{"Ident":"categoryFn"}]],"edInstanceChainIndex":0}}],"efSourceSpan":{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Control/Category.purs","end":[20,17]}} \ No newline at end of file
diff --git a/tests/purs/publish/basic-example/output/Control.Monad/externs.json b/tests/purs/publish/basic-example/output/Control.Monad/externs.json
deleted file mode 100644
index 6e542e3..0000000
--- a/tests/purs/publish/basic-example/output/Control.Monad/externs.json
+++ /dev/null
@@ -1 +0,0 @@
-{"efVersion":"0.13.4","efModuleName":["Control","Monad"],"efExports":[{"ReExportRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Control/Monad.purs","end":[81,13]},{"exportSourceImportedFrom":["Control","Applicative"],"exportSourceDefinedIn":["Control","Applicative"]},{"TypeClassRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Control/Monad.purs","end":[81,13]},"Applicative"]}]},{"ReExportRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Control/Monad.purs","end":[81,13]},{"exportSourceImportedFrom":["Control","Apply"],"exportSourceDefinedIn":["Control","Apply"]},{"TypeClassRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Control/Monad.purs","end":[81,13]},"Apply"]}]},{"ReExportRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Control/Monad.purs","end":[81,13]},{"exportSourceImportedFrom":["Control","Bind"],"exportSourceDefinedIn":["Control","Bind"]},{"TypeClassRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Control/Monad.purs","end":[81,13]},"Bind"]}]},{"ReExportRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Control/Monad.purs","end":[81,13]},{"exportSourceImportedFrom":["Data","Functor"],"exportSourceDefinedIn":["Data","Functor"]},{"TypeClassRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Control/Monad.purs","end":[81,13]},"Functor"]}]},{"ReExportRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Control/Monad.purs","end":[81,13]},{"exportSourceImportedFrom":["Control","Apply"],"exportSourceDefinedIn":["Control","Apply"]},{"ValueRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Control/Monad.purs","end":[81,13]},{"Ident":"apply"}]}]},{"ReExportRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Control/Monad.purs","end":[81,13]},{"exportSourceImportedFrom":["Control","Bind"],"exportSourceDefinedIn":["Control","Bind"]},{"ValueRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Control/Monad.purs","end":[81,13]},{"Ident":"bind"}]}]},{"ReExportRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Control/Monad.purs","end":[81,13]},{"exportSourceImportedFrom":["Control","Bind"],"exportSourceDefinedIn":["Control","Bind"]},{"ValueRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Control/Monad.purs","end":[81,13]},{"Ident":"ifM"}]}]},{"ReExportRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Control/Monad.purs","end":[81,13]},{"exportSourceImportedFrom":["Control","Bind"],"exportSourceDefinedIn":["Control","Bind"]},{"ValueRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Control/Monad.purs","end":[81,13]},{"Ident":"join"}]}]},{"ReExportRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Control/Monad.purs","end":[81,13]},{"exportSourceImportedFrom":["Control","Applicative"],"exportSourceDefinedIn":["Control","Applicative"]},{"ValueRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Control/Monad.purs","end":[81,13]},{"Ident":"liftA1"}]}]},{"ReExportRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Control/Monad.purs","end":[81,13]},{"exportSourceImportedFrom":["Data","Functor"],"exportSourceDefinedIn":["Data","Functor"]},{"ValueRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Control/Monad.purs","end":[81,13]},{"Ident":"map"}]}]},{"ReExportRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Control/Monad.purs","end":[81,13]},{"exportSourceImportedFrom":["Control","Applicative"],"exportSourceDefinedIn":["Control","Applicative"]},{"ValueRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Control/Monad.purs","end":[81,13]},{"Ident":"pure"}]}]},{"ReExportRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Control/Monad.purs","end":[81,13]},{"exportSourceImportedFrom":["Control","Applicative"],"exportSourceDefinedIn":["Control","Applicative"]},{"ValueRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Control/Monad.purs","end":[81,13]},{"Ident":"unless"}]}]},{"ReExportRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Control/Monad.purs","end":[81,13]},{"exportSourceImportedFrom":["Data","Functor"],"exportSourceDefinedIn":["Data","Functor"]},{"ValueRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Control/Monad.purs","end":[81,13]},{"Ident":"void"}]}]},{"ReExportRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Control/Monad.purs","end":[81,13]},{"exportSourceImportedFrom":["Control","Applicative"],"exportSourceDefinedIn":["Control","Applicative"]},{"ValueRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Control/Monad.purs","end":[81,13]},{"Ident":"when"}]}]},{"ReExportRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Control/Monad.purs","end":[81,13]},{"exportSourceImportedFrom":["Data","Functor"],"exportSourceDefinedIn":["Data","Functor"]},{"ValueOpRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Control/Monad.purs","end":[81,13]},"$>"]}]},{"ReExportRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Control/Monad.purs","end":[81,13]},{"exportSourceImportedFrom":["Control","Apply"],"exportSourceDefinedIn":["Control","Apply"]},{"ValueOpRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Control/Monad.purs","end":[81,13]},"*>"]}]},{"ReExportRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Control/Monad.purs","end":[81,13]},{"exportSourceImportedFrom":["Data","Functor"],"exportSourceDefinedIn":["Data","Functor"]},{"ValueOpRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Control/Monad.purs","end":[81,13]},"<#>"]}]},{"ReExportRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Control/Monad.purs","end":[81,13]},{"exportSourceImportedFrom":["Data","Functor"],"exportSourceDefinedIn":["Data","Functor"]},{"ValueOpRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Control/Monad.purs","end":[81,13]},"<$"]}]},{"ReExportRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Control/Monad.purs","end":[81,13]},{"exportSourceImportedFrom":["Data","Functor"],"exportSourceDefinedIn":["Data","Functor"]},{"ValueOpRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Control/Monad.purs","end":[81,13]},"<$>"]}]},{"ReExportRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Control/Monad.purs","end":[81,13]},{"exportSourceImportedFrom":["Control","Apply"],"exportSourceDefinedIn":["Control","Apply"]},{"ValueOpRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Control/Monad.purs","end":[81,13]},"<*"]}]},{"ReExportRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Control/Monad.purs","end":[81,13]},{"exportSourceImportedFrom":["Control","Apply"],"exportSourceDefinedIn":["Control","Apply"]},{"ValueOpRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Control/Monad.purs","end":[81,13]},"<*>"]}]},{"ReExportRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Control/Monad.purs","end":[81,13]},{"exportSourceImportedFrom":["Control","Bind"],"exportSourceDefinedIn":["Control","Bind"]},{"ValueOpRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Control/Monad.purs","end":[81,13]},"<=<"]}]},{"ReExportRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Control/Monad.purs","end":[81,13]},{"exportSourceImportedFrom":["Control","Bind"],"exportSourceDefinedIn":["Control","Bind"]},{"ValueOpRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Control/Monad.purs","end":[81,13]},"=<<"]}]},{"ReExportRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Control/Monad.purs","end":[81,13]},{"exportSourceImportedFrom":["Control","Bind"],"exportSourceDefinedIn":["Control","Bind"]},{"ValueOpRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Control/Monad.purs","end":[81,13]},">=>"]}]},{"ReExportRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Control/Monad.purs","end":[81,13]},{"exportSourceImportedFrom":["Control","Bind"],"exportSourceDefinedIn":["Control","Bind"]},{"ValueOpRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Control/Monad.purs","end":[81,13]},">>="]}]},{"TypeClassRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Control/Monad.purs","end":[81,13]},"Monad"]},{"ValueRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Control/Monad.purs","end":[81,13]},{"Ident":"liftM1"}]},{"ValueRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Control/Monad.purs","end":[81,13]},{"Ident":"ap"}]},{"ValueRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Control/Monad.purs","end":[81,13]},{"Ident":"whenM"}]},{"ValueRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Control/Monad.purs","end":[81,13]},{"Ident":"unlessM"}]},{"ModuleRef":[{"start":[7,5],"name":"../../../support/bower_components/purescript-prelude/src/Control/Monad.purs","end":[7,24]},["Data","Functor"]]},{"ModuleRef":[{"start":[8,5],"name":"../../../support/bower_components/purescript-prelude/src/Control/Monad.purs","end":[8,25]},["Control","Apply"]]},{"ModuleRef":[{"start":[9,5],"name":"../../../support/bower_components/purescript-prelude/src/Control/Monad.purs","end":[9,31]},["Control","Applicative"]]},{"ModuleRef":[{"start":[10,5],"name":"../../../support/bower_components/purescript-prelude/src/Control/Monad.purs","end":[10,24]},["Control","Bind"]]},{"TypeInstanceRef":[{"start":[0,0],"name":"<generated>","end":[0,0]},{"Ident":"monadFn"}]},{"TypeInstanceRef":[{"start":[0,0],"name":"<generated>","end":[0,0]},{"Ident":"monadArray"}]}],"efImports":[{"eiModule":["Prim"],"eiImportType":{"Implicit":[]},"eiImportedAs":["Prim"]},{"eiModule":["Prim"],"eiImportType":{"Implicit":[]},"eiImportedAs":null},{"eiModule":["Control","Applicative"],"eiImportType":{"Explicit":[{"TypeClassRef":[{"start":[13,29],"name":"../../../support/bower_components/purescript-prelude/src/Control/Monad.purs","end":[13,46]},"Applicative"]},{"ValueRef":[{"start":[13,48],"name":"../../../support/bower_components/purescript-prelude/src/Control/Monad.purs","end":[13,54]},{"Ident":"liftA1"}]},{"ValueRef":[{"start":[13,56],"name":"../../../support/bower_components/purescript-prelude/src/Control/Monad.purs","end":[13,60]},{"Ident":"pure"}]},{"ValueRef":[{"start":[13,62],"name":"../../../support/bower_components/purescript-prelude/src/Control/Monad.purs","end":[13,68]},{"Ident":"unless"}]},{"ValueRef":[{"start":[13,70],"name":"../../../support/bower_components/purescript-prelude/src/Control/Monad.purs","end":[13,74]},{"Ident":"when"}]}]},"eiImportedAs":null},{"eiModule":["Control","Apply"],"eiImportType":{"Explicit":[{"TypeClassRef":[{"start":[14,23],"name":"../../../support/bower_components/purescript-prelude/src/Control/Monad.purs","end":[14,34]},"Apply"]},{"ValueRef":[{"start":[14,36],"name":"../../../support/bower_components/purescript-prelude/src/Control/Monad.purs","end":[14,41]},{"Ident":"apply"}]},{"ValueOpRef":[{"start":[14,43],"name":"../../../support/bower_components/purescript-prelude/src/Control/Monad.purs","end":[14,47]},"*>"]},{"ValueOpRef":[{"start":[14,49],"name":"../../../support/bower_components/purescript-prelude/src/Control/Monad.purs","end":[14,53]},"<*"]},{"ValueOpRef":[{"start":[14,55],"name":"../../../support/bower_components/purescript-prelude/src/Control/Monad.purs","end":[14,60]},"<*>"]}]},"eiImportedAs":null},{"eiModule":["Control","Bind"],"eiImportType":{"Explicit":[{"TypeClassRef":[{"start":[15,22],"name":"../../../support/bower_components/purescript-prelude/src/Control/Monad.purs","end":[15,32]},"Bind"]},{"ValueRef":[{"start":[15,34],"name":"../../../support/bower_components/purescript-prelude/src/Control/Monad.purs","end":[15,38]},{"Ident":"bind"}]},{"ValueRef":[{"start":[15,40],"name":"../../../support/bower_components/purescript-prelude/src/Control/Monad.purs","end":[15,43]},{"Ident":"ifM"}]},{"ValueRef":[{"start":[15,45],"name":"../../../support/bower_components/purescript-prelude/src/Control/Monad.purs","end":[15,49]},{"Ident":"join"}]},{"ValueOpRef":[{"start":[15,51],"name":"../../../support/bower_components/purescript-prelude/src/Control/Monad.purs","end":[15,56]},"<=<"]},{"ValueOpRef":[{"start":[15,58],"name":"../../../support/bower_components/purescript-prelude/src/Control/Monad.purs","end":[15,63]},"=<<"]},{"ValueOpRef":[{"start":[15,65],"name":"../../../support/bower_components/purescript-prelude/src/Control/Monad.purs","end":[15,70]},">=>"]},{"ValueOpRef":[{"start":[15,72],"name":"../../../support/bower_components/purescript-prelude/src/Control/Monad.purs","end":[15,77]},">>="]}]},"eiImportedAs":null},{"eiModule":["Data","Functor"],"eiImportType":{"Explicit":[{"TypeClassRef":[{"start":[17,22],"name":"../../../support/bower_components/purescript-prelude/src/Control/Monad.purs","end":[17,35]},"Functor"]},{"ValueRef":[{"start":[17,37],"name":"../../../support/bower_components/purescript-prelude/src/Control/Monad.purs","end":[17,40]},{"Ident":"map"}]},{"ValueRef":[{"start":[17,42],"name":"../../../support/bower_components/purescript-prelude/src/Control/Monad.purs","end":[17,46]},{"Ident":"void"}]},{"ValueOpRef":[{"start":[17,48],"name":"../../../support/bower_components/purescript-prelude/src/Control/Monad.purs","end":[17,52]},"$>"]},{"ValueOpRef":[{"start":[17,54],"name":"../../../support/bower_components/purescript-prelude/src/Control/Monad.purs","end":[17,59]},"<#>"]},{"ValueOpRef":[{"start":[17,61],"name":"../../../support/bower_components/purescript-prelude/src/Control/Monad.purs","end":[17,65]},"<$"]},{"ValueOpRef":[{"start":[17,67],"name":"../../../support/bower_components/purescript-prelude/src/Control/Monad.purs","end":[17,72]},"<$>"]}]},"eiImportedAs":null},{"eiModule":["Data","Unit"],"eiImportType":{"Explicit":[{"TypeRef":[{"start":[18,19],"name":"../../../support/bower_components/purescript-prelude/src/Control/Monad.purs","end":[18,23]},"Unit",[]]}]},"eiImportedAs":null}],"efFixities":[],"efTypeFixities":[],"efDeclarations":[{"EDType":{"edTypeName":"Monad","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":"Monad","edTypeSynonymArguments":[["m",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":[31,20],"name":"../../../support/bower_components/purescript-prelude/src/Control/Monad.purs","end":[31,21]},[]],"tag":"TypeVar","contents":"m"}]}]},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"RCons","contents":["Bind1",{"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","Bind"],"Bind"]},{"annotation":[{"start":[31,28],"name":"../../../support/bower_components/purescript-prelude/src/Control/Monad.purs","end":[31,29]},[]],"tag":"TypeVar","contents":"m"}]}]},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"REmpty"}]}]}]}}},{"EDClass":{"edClassName":"Monad","edClassTypeArguments":[["m",null]],"edClassMembers":[],"edClassConstraints":[{"constraintAnn":[{"start":[31,8],"name":"../../../support/bower_components/purescript-prelude/src/Control/Monad.purs","end":[31,21]},[]],"constraintClass":[["Control","Applicative"],"Applicative"],"constraintArgs":[{"annotation":[{"start":[31,20],"name":"../../../support/bower_components/purescript-prelude/src/Control/Monad.purs","end":[31,21]},[]],"tag":"TypeVar","contents":"m"}],"constraintData":null},{"constraintAnn":[{"start":[31,23],"name":"../../../support/bower_components/purescript-prelude/src/Control/Monad.purs","end":[31,29]},[]],"constraintClass":[["Control","Bind"],"Bind"],"constraintArgs":[{"annotation":[{"start":[31,28],"name":"../../../support/bower_components/purescript-prelude/src/Control/Monad.purs","end":[31,29]},[]],"tag":"TypeVar","contents":"m"}],"constraintData":null}],"edFunctionalDependencies":[],"edIsEmpty":false}},{"EDValue":{"edValueName":{"Ident":"liftM1"},"edValueType":{"annotation":[{"start":[47,11],"name":"../../../support/bower_components/purescript-prelude/src/Control/Monad.purs","end":[47,58]},[]],"tag":"ForAll","contents":["b",{"annotation":[{"start":[47,18],"name":"../../../support/bower_components/purescript-prelude/src/Control/Monad.purs","end":[47,58]},[]],"tag":"ForAll","contents":["a",{"annotation":[{"start":[47,18],"name":"../../../support/bower_components/purescript-prelude/src/Control/Monad.purs","end":[47,58]},[]],"tag":"ForAll","contents":["m",{"annotation":[{"start":[47,25],"name":"../../../support/bower_components/purescript-prelude/src/Control/Monad.purs","end":[47,58]},[]],"tag":"ConstrainedType","contents":[{"constraintAnn":[{"start":[47,25],"name":"../../../support/bower_components/purescript-prelude/src/Control/Monad.purs","end":[47,32]},[]],"constraintClass":[["Control","Monad"],"Monad"],"constraintArgs":[{"annotation":[{"start":[47,31],"name":"../../../support/bower_components/purescript-prelude/src/Control/Monad.purs","end":[47,32]},[]],"tag":"TypeVar","contents":"m"}],"constraintData":null},{"annotation":[{"start":[47,36],"name":"../../../support/bower_components/purescript-prelude/src/Control/Monad.purs","end":[47,58]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[47,36],"name":"../../../support/bower_components/purescript-prelude/src/Control/Monad.purs","end":[47,58]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[47,45],"name":"../../../support/bower_components/purescript-prelude/src/Control/Monad.purs","end":[47,47]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[47,37],"name":"../../../support/bower_components/purescript-prelude/src/Control/Monad.purs","end":[47,43]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[47,37],"name":"../../../support/bower_components/purescript-prelude/src/Control/Monad.purs","end":[47,43]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[47,39],"name":"../../../support/bower_components/purescript-prelude/src/Control/Monad.purs","end":[47,41]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[47,37],"name":"../../../support/bower_components/purescript-prelude/src/Control/Monad.purs","end":[47,38]},[]],"tag":"TypeVar","contents":"a"}]},{"annotation":[{"start":[47,42],"name":"../../../support/bower_components/purescript-prelude/src/Control/Monad.purs","end":[47,43]},[]],"tag":"TypeVar","contents":"b"}]}]},{"annotation":[{"start":[47,48],"name":"../../../support/bower_components/purescript-prelude/src/Control/Monad.purs","end":[47,58]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[47,48],"name":"../../../support/bower_components/purescript-prelude/src/Control/Monad.purs","end":[47,58]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[47,52],"name":"../../../support/bower_components/purescript-prelude/src/Control/Monad.purs","end":[47,54]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[47,48],"name":"../../../support/bower_components/purescript-prelude/src/Control/Monad.purs","end":[47,51]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[47,48],"name":"../../../support/bower_components/purescript-prelude/src/Control/Monad.purs","end":[47,49]},[]],"tag":"TypeVar","contents":"m"},{"annotation":[{"start":[47,50],"name":"../../../support/bower_components/purescript-prelude/src/Control/Monad.purs","end":[47,51]},[]],"tag":"TypeVar","contents":"a"}]}]},{"annotation":[{"start":[47,55],"name":"../../../support/bower_components/purescript-prelude/src/Control/Monad.purs","end":[47,58]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[47,55],"name":"../../../support/bower_components/purescript-prelude/src/Control/Monad.purs","end":[47,56]},[]],"tag":"TypeVar","contents":"m"},{"annotation":[{"start":[47,57],"name":"../../../support/bower_components/purescript-prelude/src/Control/Monad.purs","end":[47,58]},[]],"tag":"TypeVar","contents":"b"}]}]}]}]},28]},29]},30]}}},{"EDValue":{"edValueName":{"Ident":"ap"},"edValueType":{"annotation":[{"start":[63,7],"name":"../../../support/bower_components/purescript-prelude/src/Control/Monad.purs","end":[63,56]},[]],"tag":"ForAll","contents":["b",{"annotation":[{"start":[63,14],"name":"../../../support/bower_components/purescript-prelude/src/Control/Monad.purs","end":[63,56]},[]],"tag":"ForAll","contents":["a",{"annotation":[{"start":[63,14],"name":"../../../support/bower_components/purescript-prelude/src/Control/Monad.purs","end":[63,56]},[]],"tag":"ForAll","contents":["m",{"annotation":[{"start":[63,21],"name":"../../../support/bower_components/purescript-prelude/src/Control/Monad.purs","end":[63,56]},[]],"tag":"ConstrainedType","contents":[{"constraintAnn":[{"start":[63,21],"name":"../../../support/bower_components/purescript-prelude/src/Control/Monad.purs","end":[63,28]},[]],"constraintClass":[["Control","Monad"],"Monad"],"constraintArgs":[{"annotation":[{"start":[63,27],"name":"../../../support/bower_components/purescript-prelude/src/Control/Monad.purs","end":[63,28]},[]],"tag":"TypeVar","contents":"m"}],"constraintData":null},{"annotation":[{"start":[63,32],"name":"../../../support/bower_components/purescript-prelude/src/Control/Monad.purs","end":[63,56]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[63,32],"name":"../../../support/bower_components/purescript-prelude/src/Control/Monad.purs","end":[63,56]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[63,43],"name":"../../../support/bower_components/purescript-prelude/src/Control/Monad.purs","end":[63,45]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[63,32],"name":"../../../support/bower_components/purescript-prelude/src/Control/Monad.purs","end":[63,42]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[63,32],"name":"../../../support/bower_components/purescript-prelude/src/Control/Monad.purs","end":[63,33]},[]],"tag":"TypeVar","contents":"m"},{"annotation":[{"start":[63,35],"name":"../../../support/bower_components/purescript-prelude/src/Control/Monad.purs","end":[63,41]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[63,35],"name":"../../../support/bower_components/purescript-prelude/src/Control/Monad.purs","end":[63,41]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[63,37],"name":"../../../support/bower_components/purescript-prelude/src/Control/Monad.purs","end":[63,39]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[63,35],"name":"../../../support/bower_components/purescript-prelude/src/Control/Monad.purs","end":[63,36]},[]],"tag":"TypeVar","contents":"a"}]},{"annotation":[{"start":[63,40],"name":"../../../support/bower_components/purescript-prelude/src/Control/Monad.purs","end":[63,41]},[]],"tag":"TypeVar","contents":"b"}]}]}]},{"annotation":[{"start":[63,46],"name":"../../../support/bower_components/purescript-prelude/src/Control/Monad.purs","end":[63,56]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[63,46],"name":"../../../support/bower_components/purescript-prelude/src/Control/Monad.purs","end":[63,56]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[63,50],"name":"../../../support/bower_components/purescript-prelude/src/Control/Monad.purs","end":[63,52]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[63,46],"name":"../../../support/bower_components/purescript-prelude/src/Control/Monad.purs","end":[63,49]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[63,46],"name":"../../../support/bower_components/purescript-prelude/src/Control/Monad.purs","end":[63,47]},[]],"tag":"TypeVar","contents":"m"},{"annotation":[{"start":[63,48],"name":"../../../support/bower_components/purescript-prelude/src/Control/Monad.purs","end":[63,49]},[]],"tag":"TypeVar","contents":"a"}]}]},{"annotation":[{"start":[63,53],"name":"../../../support/bower_components/purescript-prelude/src/Control/Monad.purs","end":[63,56]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[63,53],"name":"../../../support/bower_components/purescript-prelude/src/Control/Monad.purs","end":[63,54]},[]],"tag":"TypeVar","contents":"m"},{"annotation":[{"start":[63,55],"name":"../../../support/bower_components/purescript-prelude/src/Control/Monad.purs","end":[63,56]},[]],"tag":"TypeVar","contents":"b"}]}]}]}]},34]},35]},36]}}},{"EDValue":{"edValueName":{"Ident":"whenM"},"edValueType":{"annotation":[{"start":[71,10],"name":"../../../support/bower_components/purescript-prelude/src/Control/Monad.purs","end":[71,60]},[]],"tag":"ForAll","contents":["m",{"annotation":[{"start":[71,20],"name":"../../../support/bower_components/purescript-prelude/src/Control/Monad.purs","end":[71,60]},[]],"tag":"ConstrainedType","contents":[{"constraintAnn":[{"start":[71,20],"name":"../../../support/bower_components/purescript-prelude/src/Control/Monad.purs","end":[71,27]},[]],"constraintClass":[["Control","Monad"],"Monad"],"constraintArgs":[{"annotation":[{"start":[71,26],"name":"../../../support/bower_components/purescript-prelude/src/Control/Monad.purs","end":[71,27]},[]],"tag":"TypeVar","contents":"m"}],"constraintData":null},{"annotation":[{"start":[71,31],"name":"../../../support/bower_components/purescript-prelude/src/Control/Monad.purs","end":[71,60]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[71,31],"name":"../../../support/bower_components/purescript-prelude/src/Control/Monad.purs","end":[71,60]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[71,41],"name":"../../../support/bower_components/purescript-prelude/src/Control/Monad.purs","end":[71,43]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[71,31],"name":"../../../support/bower_components/purescript-prelude/src/Control/Monad.purs","end":[71,40]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[71,31],"name":"../../../support/bower_components/purescript-prelude/src/Control/Monad.purs","end":[71,32]},[]],"tag":"TypeVar","contents":"m"},{"annotation":[{"start":[71,33],"name":"../../../support/bower_components/purescript-prelude/src/Control/Monad.purs","end":[71,40]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Boolean"]}]}]},{"annotation":[{"start":[71,44],"name":"../../../support/bower_components/purescript-prelude/src/Control/Monad.purs","end":[71,60]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[71,44],"name":"../../../support/bower_components/purescript-prelude/src/Control/Monad.purs","end":[71,60]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[71,51],"name":"../../../support/bower_components/purescript-prelude/src/Control/Monad.purs","end":[71,53]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[71,44],"name":"../../../support/bower_components/purescript-prelude/src/Control/Monad.purs","end":[71,50]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[71,44],"name":"../../../support/bower_components/purescript-prelude/src/Control/Monad.purs","end":[71,45]},[]],"tag":"TypeVar","contents":"m"},{"annotation":[{"start":[71,46],"name":"../../../support/bower_components/purescript-prelude/src/Control/Monad.purs","end":[71,50]},[]],"tag":"TypeConstructor","contents":[["Data","Unit"],"Unit"]}]}]},{"annotation":[{"start":[71,54],"name":"../../../support/bower_components/purescript-prelude/src/Control/Monad.purs","end":[71,60]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[71,54],"name":"../../../support/bower_components/purescript-prelude/src/Control/Monad.purs","end":[71,55]},[]],"tag":"TypeVar","contents":"m"},{"annotation":[{"start":[71,56],"name":"../../../support/bower_components/purescript-prelude/src/Control/Monad.purs","end":[71,60]},[]],"tag":"TypeConstructor","contents":[["Data","Unit"],"Unit"]}]}]}]}]},0]}}},{"EDValue":{"edValueName":{"Ident":"unlessM"},"edValueType":{"annotation":[{"start":[78,12],"name":"../../../support/bower_components/purescript-prelude/src/Control/Monad.purs","end":[78,62]},[]],"tag":"ForAll","contents":["m",{"annotation":[{"start":[78,22],"name":"../../../support/bower_components/purescript-prelude/src/Control/Monad.purs","end":[78,62]},[]],"tag":"ConstrainedType","contents":[{"constraintAnn":[{"start":[78,22],"name":"../../../support/bower_components/purescript-prelude/src/Control/Monad.purs","end":[78,29]},[]],"constraintClass":[["Control","Monad"],"Monad"],"constraintArgs":[{"annotation":[{"start":[78,28],"name":"../../../support/bower_components/purescript-prelude/src/Control/Monad.purs","end":[78,29]},[]],"tag":"TypeVar","contents":"m"}],"constraintData":null},{"annotation":[{"start":[78,33],"name":"../../../support/bower_components/purescript-prelude/src/Control/Monad.purs","end":[78,62]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[78,33],"name":"../../../support/bower_components/purescript-prelude/src/Control/Monad.purs","end":[78,62]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[78,43],"name":"../../../support/bower_components/purescript-prelude/src/Control/Monad.purs","end":[78,45]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[78,33],"name":"../../../support/bower_components/purescript-prelude/src/Control/Monad.purs","end":[78,42]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[78,33],"name":"../../../support/bower_components/purescript-prelude/src/Control/Monad.purs","end":[78,34]},[]],"tag":"TypeVar","contents":"m"},{"annotation":[{"start":[78,35],"name":"../../../support/bower_components/purescript-prelude/src/Control/Monad.purs","end":[78,42]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Boolean"]}]}]},{"annotation":[{"start":[78,46],"name":"../../../support/bower_components/purescript-prelude/src/Control/Monad.purs","end":[78,62]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[78,46],"name":"../../../support/bower_components/purescript-prelude/src/Control/Monad.purs","end":[78,62]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[78,53],"name":"../../../support/bower_components/purescript-prelude/src/Control/Monad.purs","end":[78,55]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[78,46],"name":"../../../support/bower_components/purescript-prelude/src/Control/Monad.purs","end":[78,52]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[78,46],"name":"../../../support/bower_components/purescript-prelude/src/Control/Monad.purs","end":[78,47]},[]],"tag":"TypeVar","contents":"m"},{"annotation":[{"start":[78,48],"name":"../../../support/bower_components/purescript-prelude/src/Control/Monad.purs","end":[78,52]},[]],"tag":"TypeConstructor","contents":[["Data","Unit"],"Unit"]}]}]},{"annotation":[{"start":[78,56],"name":"../../../support/bower_components/purescript-prelude/src/Control/Monad.purs","end":[78,62]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[78,56],"name":"../../../support/bower_components/purescript-prelude/src/Control/Monad.purs","end":[78,57]},[]],"tag":"TypeVar","contents":"m"},{"annotation":[{"start":[78,58],"name":"../../../support/bower_components/purescript-prelude/src/Control/Monad.purs","end":[78,62]},[]],"tag":"TypeConstructor","contents":[["Data","Unit"],"Unit"]}]}]}]}]},2]}}},{"EDInstance":{"edInstanceClassName":[["Control","Monad"],"Monad"],"edInstanceName":{"Ident":"monadFn"},"edInstanceTypes":[{"annotation":[{"start":[33,28],"name":"../../../support/bower_components/purescript-prelude/src/Control/Monad.purs","end":[33,34]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[33,28],"name":"../../../support/bower_components/purescript-prelude/src/Control/Monad.purs","end":[33,32]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[33,33],"name":"../../../support/bower_components/purescript-prelude/src/Control/Monad.purs","end":[33,34]},[]],"tag":"TypeVar","contents":"r"}]}],"edInstanceConstraints":[],"edInstanceChain":[[["Control","Monad"],{"Ident":"monadFn"}]],"edInstanceChainIndex":0}},{"EDInstance":{"edInstanceClassName":[["Control","Monad"],"Monad"],"edInstanceName":{"Ident":"monadArray"},"edInstanceTypes":[{"annotation":[{"start":[34,30],"name":"../../../support/bower_components/purescript-prelude/src/Control/Monad.purs","end":[34,35]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Array"]}],"edInstanceConstraints":[],"edInstanceChain":[[["Control","Monad"],{"Ident":"monadArray"}]],"edInstanceChainIndex":0}}],"efSourceSpan":{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Control/Monad.purs","end":[81,13]}} \ No newline at end of file
diff --git a/tests/purs/publish/basic-example/output/Control.Semigroupoid/externs.json b/tests/purs/publish/basic-example/output/Control.Semigroupoid/externs.json
deleted file mode 100644
index 5ecb79e..0000000
--- a/tests/purs/publish/basic-example/output/Control.Semigroupoid/externs.json
+++ /dev/null
@@ -1 +0,0 @@
-{"efVersion":"0.13.4","efModuleName":["Control","Semigroupoid"],"efExports":[{"ValueRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Control/Semigroupoid.purs","end":[24,31]},{"Ident":"compose"}]},{"TypeClassRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Control/Semigroupoid.purs","end":[24,31]},"Semigroupoid"]},{"ValueOpRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Control/Semigroupoid.purs","end":[24,31]},"<<<"]},{"ValueRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Control/Semigroupoid.purs","end":[24,31]},{"Ident":"composeFlipped"}]},{"ValueOpRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Control/Semigroupoid.purs","end":[24,31]},">>>"]},{"TypeInstanceRef":[{"start":[0,0],"name":"<generated>","end":[0,0]},{"Ident":"semigroupoidFn"}]}],"efImports":[{"eiModule":["Prim"],"eiImportType":{"Implicit":[]},"eiImportedAs":["Prim"]},{"eiModule":["Prim"],"eiImportType":{"Implicit":[]},"eiImportedAs":null}],"efFixities":[{"efAssociativity":"infixr","efPrecedence":9,"efOperator":"<<<","efAlias":[["Control","Semigroupoid"],{"Left":{"Ident":"compose"}}]},{"efAssociativity":"infixr","efPrecedence":9,"efOperator":">>>","efAlias":[["Control","Semigroupoid"],{"Left":{"Ident":"composeFlipped"}}]}],"efTypeFixities":[],"efDeclarations":[{"EDValue":{"edValueName":{"Ident":"compose"},"edValueType":{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"ForAll","contents":["a",{"annotation":[{"start":[13,14],"name":"../../../support/bower_components/purescript-prelude/src/Control/Semigroupoid.purs","end":[13,51]},[]],"tag":"ForAll","contents":["d",{"annotation":[{"start":[13,21],"name":"../../../support/bower_components/purescript-prelude/src/Control/Semigroupoid.purs","end":[13,51]},[]],"tag":"ForAll","contents":["c",{"annotation":[{"start":[13,21],"name":"../../../support/bower_components/purescript-prelude/src/Control/Semigroupoid.purs","end":[13,51]},[]],"tag":"ForAll","contents":["b",{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"ConstrainedType","contents":[{"constraintAnn":[{"start":[0,0],"name":"","end":[0,0]},[]],"constraintClass":[["Control","Semigroupoid"],"Semigroupoid"],"constraintArgs":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeVar","contents":"a"}],"constraintData":null},{"annotation":[{"start":[13,28],"name":"../../../support/bower_components/purescript-prelude/src/Control/Semigroupoid.purs","end":[13,51]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[13,28],"name":"../../../support/bower_components/purescript-prelude/src/Control/Semigroupoid.purs","end":[13,51]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[13,34],"name":"../../../support/bower_components/purescript-prelude/src/Control/Semigroupoid.purs","end":[13,36]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[13,28],"name":"../../../support/bower_components/purescript-prelude/src/Control/Semigroupoid.purs","end":[13,33]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[13,28],"name":"../../../support/bower_components/purescript-prelude/src/Control/Semigroupoid.purs","end":[13,31]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[13,28],"name":"../../../support/bower_components/purescript-prelude/src/Control/Semigroupoid.purs","end":[13,29]},[]],"tag":"TypeVar","contents":"a"},{"annotation":[{"start":[13,30],"name":"../../../support/bower_components/purescript-prelude/src/Control/Semigroupoid.purs","end":[13,31]},[]],"tag":"TypeVar","contents":"c"}]},{"annotation":[{"start":[13,32],"name":"../../../support/bower_components/purescript-prelude/src/Control/Semigroupoid.purs","end":[13,33]},[]],"tag":"TypeVar","contents":"d"}]}]},{"annotation":[{"start":[13,37],"name":"../../../support/bower_components/purescript-prelude/src/Control/Semigroupoid.purs","end":[13,51]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[13,37],"name":"../../../support/bower_components/purescript-prelude/src/Control/Semigroupoid.purs","end":[13,51]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[13,43],"name":"../../../support/bower_components/purescript-prelude/src/Control/Semigroupoid.purs","end":[13,45]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[13,37],"name":"../../../support/bower_components/purescript-prelude/src/Control/Semigroupoid.purs","end":[13,42]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[13,37],"name":"../../../support/bower_components/purescript-prelude/src/Control/Semigroupoid.purs","end":[13,40]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[13,37],"name":"../../../support/bower_components/purescript-prelude/src/Control/Semigroupoid.purs","end":[13,38]},[]],"tag":"TypeVar","contents":"a"},{"annotation":[{"start":[13,39],"name":"../../../support/bower_components/purescript-prelude/src/Control/Semigroupoid.purs","end":[13,40]},[]],"tag":"TypeVar","contents":"b"}]},{"annotation":[{"start":[13,41],"name":"../../../support/bower_components/purescript-prelude/src/Control/Semigroupoid.purs","end":[13,42]},[]],"tag":"TypeVar","contents":"c"}]}]},{"annotation":[{"start":[13,46],"name":"../../../support/bower_components/purescript-prelude/src/Control/Semigroupoid.purs","end":[13,51]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[13,46],"name":"../../../support/bower_components/purescript-prelude/src/Control/Semigroupoid.purs","end":[13,49]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[13,46],"name":"../../../support/bower_components/purescript-prelude/src/Control/Semigroupoid.purs","end":[13,47]},[]],"tag":"TypeVar","contents":"a"},{"annotation":[{"start":[13,48],"name":"../../../support/bower_components/purescript-prelude/src/Control/Semigroupoid.purs","end":[13,49]},[]],"tag":"TypeVar","contents":"b"}]},{"annotation":[{"start":[13,50],"name":"../../../support/bower_components/purescript-prelude/src/Control/Semigroupoid.purs","end":[13,51]},[]],"tag":"TypeVar","contents":"d"}]}]}]}]},6]},7]},8]},9]}}},{"EDType":{"edTypeName":"Semigroupoid","edTypeKind":{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"FunKind","contents":[{"annotation":[{"start":[13,28],"name":"../../../support/bower_components/purescript-prelude/src/Control/Semigroupoid.purs","end":[13,31]},[]],"tag":"FunKind","contents":[{"annotation":[{"start":[13,39],"name":"../../../support/bower_components/purescript-prelude/src/Control/Semigroupoid.purs","end":[13,40]},[]],"tag":"NamedKind","contents":[["Prim"],"Type"]},{"annotation":[{"start":[13,28],"name":"../../../support/bower_components/purescript-prelude/src/Control/Semigroupoid.purs","end":[13,33]},[]],"tag":"FunKind","contents":[{"annotation":[{"start":[13,39],"name":"../../../support/bower_components/purescript-prelude/src/Control/Semigroupoid.purs","end":[13,40]},[]],"tag":"NamedKind","contents":[["Prim"],"Type"]},{"annotation":[{"start":[13,34],"name":"../../../support/bower_components/purescript-prelude/src/Control/Semigroupoid.purs","end":[13,36]},[]],"tag":"NamedKind","contents":[["Prim"],"Type"]}]}]},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"NamedKind","contents":[["Prim"],"Type"]}]},"edTypeDeclarationKind":"TypeSynonym"}},{"EDTypeSynonym":{"edTypeSynonymName":"Semigroupoid","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":["compose",{"annotation":[{"start":[13,14],"name":"../../../support/bower_components/purescript-prelude/src/Control/Semigroupoid.purs","end":[13,51]},[]],"tag":"ForAll","contents":["d",{"annotation":[{"start":[13,21],"name":"../../../support/bower_components/purescript-prelude/src/Control/Semigroupoid.purs","end":[13,51]},[]],"tag":"ForAll","contents":["c",{"annotation":[{"start":[13,21],"name":"../../../support/bower_components/purescript-prelude/src/Control/Semigroupoid.purs","end":[13,51]},[]],"tag":"ForAll","contents":["b",{"annotation":[{"start":[13,28],"name":"../../../support/bower_components/purescript-prelude/src/Control/Semigroupoid.purs","end":[13,51]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[13,28],"name":"../../../support/bower_components/purescript-prelude/src/Control/Semigroupoid.purs","end":[13,51]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[13,34],"name":"../../../support/bower_components/purescript-prelude/src/Control/Semigroupoid.purs","end":[13,36]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[13,28],"name":"../../../support/bower_components/purescript-prelude/src/Control/Semigroupoid.purs","end":[13,33]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[13,28],"name":"../../../support/bower_components/purescript-prelude/src/Control/Semigroupoid.purs","end":[13,31]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[13,28],"name":"../../../support/bower_components/purescript-prelude/src/Control/Semigroupoid.purs","end":[13,29]},[]],"tag":"TypeVar","contents":"a"},{"annotation":[{"start":[13,30],"name":"../../../support/bower_components/purescript-prelude/src/Control/Semigroupoid.purs","end":[13,31]},[]],"tag":"TypeVar","contents":"c"}]},{"annotation":[{"start":[13,32],"name":"../../../support/bower_components/purescript-prelude/src/Control/Semigroupoid.purs","end":[13,33]},[]],"tag":"TypeVar","contents":"d"}]}]},{"annotation":[{"start":[13,37],"name":"../../../support/bower_components/purescript-prelude/src/Control/Semigroupoid.purs","end":[13,51]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[13,37],"name":"../../../support/bower_components/purescript-prelude/src/Control/Semigroupoid.purs","end":[13,51]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[13,43],"name":"../../../support/bower_components/purescript-prelude/src/Control/Semigroupoid.purs","end":[13,45]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[13,37],"name":"../../../support/bower_components/purescript-prelude/src/Control/Semigroupoid.purs","end":[13,42]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[13,37],"name":"../../../support/bower_components/purescript-prelude/src/Control/Semigroupoid.purs","end":[13,40]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[13,37],"name":"../../../support/bower_components/purescript-prelude/src/Control/Semigroupoid.purs","end":[13,38]},[]],"tag":"TypeVar","contents":"a"},{"annotation":[{"start":[13,39],"name":"../../../support/bower_components/purescript-prelude/src/Control/Semigroupoid.purs","end":[13,40]},[]],"tag":"TypeVar","contents":"b"}]},{"annotation":[{"start":[13,41],"name":"../../../support/bower_components/purescript-prelude/src/Control/Semigroupoid.purs","end":[13,42]},[]],"tag":"TypeVar","contents":"c"}]}]},{"annotation":[{"start":[13,46],"name":"../../../support/bower_components/purescript-prelude/src/Control/Semigroupoid.purs","end":[13,51]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[13,46],"name":"../../../support/bower_components/purescript-prelude/src/Control/Semigroupoid.purs","end":[13,49]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[13,46],"name":"../../../support/bower_components/purescript-prelude/src/Control/Semigroupoid.purs","end":[13,47]},[]],"tag":"TypeVar","contents":"a"},{"annotation":[{"start":[13,48],"name":"../../../support/bower_components/purescript-prelude/src/Control/Semigroupoid.purs","end":[13,49]},[]],"tag":"TypeVar","contents":"b"}]},{"annotation":[{"start":[13,50],"name":"../../../support/bower_components/purescript-prelude/src/Control/Semigroupoid.purs","end":[13,51]},[]],"tag":"TypeVar","contents":"d"}]}]}]},null]},null]},null]},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"REmpty"}]}]}}},{"EDClass":{"edClassName":"Semigroupoid","edClassTypeArguments":[["a",null]],"edClassMembers":[[{"Ident":"compose"},{"annotation":[{"start":[13,14],"name":"../../../support/bower_components/purescript-prelude/src/Control/Semigroupoid.purs","end":[13,51]},[]],"tag":"ForAll","contents":["d",{"annotation":[{"start":[13,21],"name":"../../../support/bower_components/purescript-prelude/src/Control/Semigroupoid.purs","end":[13,51]},[]],"tag":"ForAll","contents":["c",{"annotation":[{"start":[13,21],"name":"../../../support/bower_components/purescript-prelude/src/Control/Semigroupoid.purs","end":[13,51]},[]],"tag":"ForAll","contents":["b",{"annotation":[{"start":[13,28],"name":"../../../support/bower_components/purescript-prelude/src/Control/Semigroupoid.purs","end":[13,51]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[13,28],"name":"../../../support/bower_components/purescript-prelude/src/Control/Semigroupoid.purs","end":[13,51]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[13,34],"name":"../../../support/bower_components/purescript-prelude/src/Control/Semigroupoid.purs","end":[13,36]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[13,28],"name":"../../../support/bower_components/purescript-prelude/src/Control/Semigroupoid.purs","end":[13,33]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[13,28],"name":"../../../support/bower_components/purescript-prelude/src/Control/Semigroupoid.purs","end":[13,31]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[13,28],"name":"../../../support/bower_components/purescript-prelude/src/Control/Semigroupoid.purs","end":[13,29]},[]],"tag":"TypeVar","contents":"a"},{"annotation":[{"start":[13,30],"name":"../../../support/bower_components/purescript-prelude/src/Control/Semigroupoid.purs","end":[13,31]},[]],"tag":"TypeVar","contents":"c"}]},{"annotation":[{"start":[13,32],"name":"../../../support/bower_components/purescript-prelude/src/Control/Semigroupoid.purs","end":[13,33]},[]],"tag":"TypeVar","contents":"d"}]}]},{"annotation":[{"start":[13,37],"name":"../../../support/bower_components/purescript-prelude/src/Control/Semigroupoid.purs","end":[13,51]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[13,37],"name":"../../../support/bower_components/purescript-prelude/src/Control/Semigroupoid.purs","end":[13,51]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[13,43],"name":"../../../support/bower_components/purescript-prelude/src/Control/Semigroupoid.purs","end":[13,45]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[13,37],"name":"../../../support/bower_components/purescript-prelude/src/Control/Semigroupoid.purs","end":[13,42]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[13,37],"name":"../../../support/bower_components/purescript-prelude/src/Control/Semigroupoid.purs","end":[13,40]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[13,37],"name":"../../../support/bower_components/purescript-prelude/src/Control/Semigroupoid.purs","end":[13,38]},[]],"tag":"TypeVar","contents":"a"},{"annotation":[{"start":[13,39],"name":"../../../support/bower_components/purescript-prelude/src/Control/Semigroupoid.purs","end":[13,40]},[]],"tag":"TypeVar","contents":"b"}]},{"annotation":[{"start":[13,41],"name":"../../../support/bower_components/purescript-prelude/src/Control/Semigroupoid.purs","end":[13,42]},[]],"tag":"TypeVar","contents":"c"}]}]},{"annotation":[{"start":[13,46],"name":"../../../support/bower_components/purescript-prelude/src/Control/Semigroupoid.purs","end":[13,51]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[13,46],"name":"../../../support/bower_components/purescript-prelude/src/Control/Semigroupoid.purs","end":[13,49]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[13,46],"name":"../../../support/bower_components/purescript-prelude/src/Control/Semigroupoid.purs","end":[13,47]},[]],"tag":"TypeVar","contents":"a"},{"annotation":[{"start":[13,48],"name":"../../../support/bower_components/purescript-prelude/src/Control/Semigroupoid.purs","end":[13,49]},[]],"tag":"TypeVar","contents":"b"}]},{"annotation":[{"start":[13,50],"name":"../../../support/bower_components/purescript-prelude/src/Control/Semigroupoid.purs","end":[13,51]},[]],"tag":"TypeVar","contents":"d"}]}]}]},null]},null]},null]}]],"edClassConstraints":[],"edFunctionalDependencies":[],"edIsEmpty":false}},{"EDValue":{"edValueName":{"Ident":"composeFlipped"},"edValueType":{"annotation":[{"start":[21,19],"name":"../../../support/bower_components/purescript-prelude/src/Control/Semigroupoid.purs","end":[21,76]},[]],"tag":"ForAll","contents":["d",{"annotation":[{"start":[21,26],"name":"../../../support/bower_components/purescript-prelude/src/Control/Semigroupoid.purs","end":[21,76]},[]],"tag":"ForAll","contents":["c",{"annotation":[{"start":[21,26],"name":"../../../support/bower_components/purescript-prelude/src/Control/Semigroupoid.purs","end":[21,76]},[]],"tag":"ForAll","contents":["b",{"annotation":[{"start":[21,26],"name":"../../../support/bower_components/purescript-prelude/src/Control/Semigroupoid.purs","end":[21,76]},[]],"tag":"ForAll","contents":["a",{"annotation":[{"start":[21,35],"name":"../../../support/bower_components/purescript-prelude/src/Control/Semigroupoid.purs","end":[21,76]},[]],"tag":"ConstrainedType","contents":[{"constraintAnn":[{"start":[21,35],"name":"../../../support/bower_components/purescript-prelude/src/Control/Semigroupoid.purs","end":[21,49]},[]],"constraintClass":[["Control","Semigroupoid"],"Semigroupoid"],"constraintArgs":[{"annotation":[{"start":[21,48],"name":"../../../support/bower_components/purescript-prelude/src/Control/Semigroupoid.purs","end":[21,49]},[]],"tag":"TypeVar","contents":"a"}],"constraintData":null},{"annotation":[{"start":[21,53],"name":"../../../support/bower_components/purescript-prelude/src/Control/Semigroupoid.purs","end":[21,76]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[21,53],"name":"../../../support/bower_components/purescript-prelude/src/Control/Semigroupoid.purs","end":[21,76]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[21,59],"name":"../../../support/bower_components/purescript-prelude/src/Control/Semigroupoid.purs","end":[21,61]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[21,53],"name":"../../../support/bower_components/purescript-prelude/src/Control/Semigroupoid.purs","end":[21,58]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[21,53],"name":"../../../support/bower_components/purescript-prelude/src/Control/Semigroupoid.purs","end":[21,56]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[21,53],"name":"../../../support/bower_components/purescript-prelude/src/Control/Semigroupoid.purs","end":[21,54]},[]],"tag":"TypeVar","contents":"a"},{"annotation":[{"start":[21,55],"name":"../../../support/bower_components/purescript-prelude/src/Control/Semigroupoid.purs","end":[21,56]},[]],"tag":"TypeVar","contents":"b"}]},{"annotation":[{"start":[21,57],"name":"../../../support/bower_components/purescript-prelude/src/Control/Semigroupoid.purs","end":[21,58]},[]],"tag":"TypeVar","contents":"c"}]}]},{"annotation":[{"start":[21,62],"name":"../../../support/bower_components/purescript-prelude/src/Control/Semigroupoid.purs","end":[21,76]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[21,62],"name":"../../../support/bower_components/purescript-prelude/src/Control/Semigroupoid.purs","end":[21,76]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[21,68],"name":"../../../support/bower_components/purescript-prelude/src/Control/Semigroupoid.purs","end":[21,70]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[21,62],"name":"../../../support/bower_components/purescript-prelude/src/Control/Semigroupoid.purs","end":[21,67]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[21,62],"name":"../../../support/bower_components/purescript-prelude/src/Control/Semigroupoid.purs","end":[21,65]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[21,62],"name":"../../../support/bower_components/purescript-prelude/src/Control/Semigroupoid.purs","end":[21,63]},[]],"tag":"TypeVar","contents":"a"},{"annotation":[{"start":[21,64],"name":"../../../support/bower_components/purescript-prelude/src/Control/Semigroupoid.purs","end":[21,65]},[]],"tag":"TypeVar","contents":"c"}]},{"annotation":[{"start":[21,66],"name":"../../../support/bower_components/purescript-prelude/src/Control/Semigroupoid.purs","end":[21,67]},[]],"tag":"TypeVar","contents":"d"}]}]},{"annotation":[{"start":[21,71],"name":"../../../support/bower_components/purescript-prelude/src/Control/Semigroupoid.purs","end":[21,76]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[21,71],"name":"../../../support/bower_components/purescript-prelude/src/Control/Semigroupoid.purs","end":[21,74]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[21,71],"name":"../../../support/bower_components/purescript-prelude/src/Control/Semigroupoid.purs","end":[21,72]},[]],"tag":"TypeVar","contents":"a"},{"annotation":[{"start":[21,73],"name":"../../../support/bower_components/purescript-prelude/src/Control/Semigroupoid.purs","end":[21,74]},[]],"tag":"TypeVar","contents":"b"}]},{"annotation":[{"start":[21,75],"name":"../../../support/bower_components/purescript-prelude/src/Control/Semigroupoid.purs","end":[21,76]},[]],"tag":"TypeVar","contents":"d"}]}]}]}]},10]},11]},12]},13]}}},{"EDInstance":{"edInstanceClassName":[["Control","Semigroupoid"],"Semigroupoid"],"edInstanceName":{"Ident":"semigroupoidFn"},"edInstanceTypes":[{"annotation":[{"start":[15,41],"name":"../../../support/bower_components/purescript-prelude/src/Control/Semigroupoid.purs","end":[15,45]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]}],"edInstanceConstraints":[],"edInstanceChain":[[["Control","Semigroupoid"],{"Ident":"semigroupoidFn"}]],"edInstanceChainIndex":0}}],"efSourceSpan":{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Control/Semigroupoid.purs","end":[24,31]}} \ No newline at end of file
diff --git a/tests/purs/publish/basic-example/output/Data.Boolean/externs.json b/tests/purs/publish/basic-example/output/Data.Boolean/externs.json
deleted file mode 100644
index f81eff4..0000000
--- a/tests/purs/publish/basic-example/output/Data.Boolean/externs.json
+++ /dev/null
@@ -1 +0,0 @@
-{"efVersion":"0.13.4","efModuleName":["Data","Boolean"],"efExports":[{"ValueRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Data/Boolean.purs","end":[10,17]},{"Ident":"otherwise"}]}],"efImports":[{"eiModule":["Prim"],"eiImportType":{"Implicit":[]},"eiImportedAs":["Prim"]},{"eiModule":["Prim"],"eiImportType":{"Implicit":[]},"eiImportedAs":null}],"efFixities":[],"efTypeFixities":[],"efDeclarations":[{"EDValue":{"edValueName":{"Ident":"otherwise"},"edValueType":{"annotation":[{"start":[9,14],"name":"../../../support/bower_components/purescript-prelude/src/Data/Boolean.purs","end":[9,21]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Boolean"]}}}],"efSourceSpan":{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Data/Boolean.purs","end":[10,17]}} \ No newline at end of file
diff --git a/tests/purs/publish/basic-example/output/Data.BooleanAlgebra/externs.json b/tests/purs/publish/basic-example/output/Data.BooleanAlgebra/externs.json
deleted file mode 100644
index 1ce0a24..0000000
--- a/tests/purs/publish/basic-example/output/Data.BooleanAlgebra/externs.json
+++ /dev/null
@@ -1 +0,0 @@
-{"efVersion":"0.13.4","efModuleName":["Data","BooleanAlgebra"],"efExports":[{"ReExportRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Data/BooleanAlgebra.purs","end":[40,71]},{"exportSourceImportedFrom":["Data","HeytingAlgebra"],"exportSourceDefinedIn":["Data","HeytingAlgebra"]},{"TypeClassRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Data/BooleanAlgebra.purs","end":[40,71]},"HeytingAlgebra"]}]},{"ReExportRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Data/BooleanAlgebra.purs","end":[40,71]},{"exportSourceImportedFrom":["Data","HeytingAlgebra"],"exportSourceDefinedIn":["Data","HeytingAlgebra"]},{"TypeClassRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Data/BooleanAlgebra.purs","end":[40,71]},"HeytingAlgebraRecord"]}]},{"ReExportRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Data/BooleanAlgebra.purs","end":[40,71]},{"exportSourceImportedFrom":["Data","HeytingAlgebra"],"exportSourceDefinedIn":["Data","HeytingAlgebra"]},{"ValueRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Data/BooleanAlgebra.purs","end":[40,71]},{"Ident":"conj"}]}]},{"ReExportRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Data/BooleanAlgebra.purs","end":[40,71]},{"exportSourceImportedFrom":["Data","HeytingAlgebra"],"exportSourceDefinedIn":["Data","HeytingAlgebra"]},{"ValueRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Data/BooleanAlgebra.purs","end":[40,71]},{"Ident":"disj"}]}]},{"ReExportRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Data/BooleanAlgebra.purs","end":[40,71]},{"exportSourceImportedFrom":["Data","HeytingAlgebra"],"exportSourceDefinedIn":["Data","HeytingAlgebra"]},{"ValueRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Data/BooleanAlgebra.purs","end":[40,71]},{"Ident":"ff"}]}]},{"ReExportRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Data/BooleanAlgebra.purs","end":[40,71]},{"exportSourceImportedFrom":["Data","HeytingAlgebra"],"exportSourceDefinedIn":["Data","HeytingAlgebra"]},{"ValueRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Data/BooleanAlgebra.purs","end":[40,71]},{"Ident":"implies"}]}]},{"ReExportRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Data/BooleanAlgebra.purs","end":[40,71]},{"exportSourceImportedFrom":["Data","HeytingAlgebra"],"exportSourceDefinedIn":["Data","HeytingAlgebra"]},{"ValueRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Data/BooleanAlgebra.purs","end":[40,71]},{"Ident":"not"}]}]},{"ReExportRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Data/BooleanAlgebra.purs","end":[40,71]},{"exportSourceImportedFrom":["Data","HeytingAlgebra"],"exportSourceDefinedIn":["Data","HeytingAlgebra"]},{"ValueRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Data/BooleanAlgebra.purs","end":[40,71]},{"Ident":"tt"}]}]},{"ReExportRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Data/BooleanAlgebra.purs","end":[40,71]},{"exportSourceImportedFrom":["Data","HeytingAlgebra"],"exportSourceDefinedIn":["Data","HeytingAlgebra"]},{"ValueOpRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Data/BooleanAlgebra.purs","end":[40,71]},"&&"]}]},{"ReExportRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Data/BooleanAlgebra.purs","end":[40,71]},{"exportSourceImportedFrom":["Data","HeytingAlgebra"],"exportSourceDefinedIn":["Data","HeytingAlgebra"]},{"ValueOpRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Data/BooleanAlgebra.purs","end":[40,71]},"||"]}]},{"TypeClassRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Data/BooleanAlgebra.purs","end":[40,71]},"BooleanAlgebra"]},{"ModuleRef":[{"start":[3,5],"name":"../../../support/bower_components/purescript-prelude/src/Data/BooleanAlgebra.purs","end":[3,31]},["Data","HeytingAlgebra"]]},{"TypeClassRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Data/BooleanAlgebra.purs","end":[40,71]},"BooleanAlgebraRecord"]},{"TypeInstanceRef":[{"start":[0,0],"name":"<generated>","end":[0,0]},{"Ident":"booleanAlgebraBoolean"}]},{"TypeInstanceRef":[{"start":[0,0],"name":"<generated>","end":[0,0]},{"Ident":"booleanAlgebraUnit"}]},{"TypeInstanceRef":[{"start":[0,0],"name":"<generated>","end":[0,0]},{"Ident":"booleanAlgebraFn"}]},{"TypeInstanceRef":[{"start":[0,0],"name":"<generated>","end":[0,0]},{"Ident":"booleanAlgebraRecord"}]},{"TypeInstanceRef":[{"start":[0,0],"name":"<generated>","end":[0,0]},{"Ident":"booleanAlgebraRecordNil"}]},{"TypeInstanceRef":[{"start":[0,0],"name":"<generated>","end":[0,0]},{"Ident":"booleanAlgebraRecordCons"}]}],"efImports":[{"eiModule":["Prim"],"eiImportType":{"Implicit":[]},"eiImportedAs":["Prim"]},{"eiModule":["Prim"],"eiImportType":{"Implicit":[]},"eiImportedAs":null},{"eiModule":["Data","HeytingAlgebra"],"eiImportType":{"Explicit":[{"TypeClassRef":[{"start":[7,29],"name":"../../../support/bower_components/purescript-prelude/src/Data/BooleanAlgebra.purs","end":[7,49]},"HeytingAlgebra"]},{"TypeClassRef":[{"start":[7,51],"name":"../../../support/bower_components/purescript-prelude/src/Data/BooleanAlgebra.purs","end":[7,77]},"HeytingAlgebraRecord"]},{"ValueRef":[{"start":[7,79],"name":"../../../support/bower_components/purescript-prelude/src/Data/BooleanAlgebra.purs","end":[7,81]},{"Ident":"ff"}]},{"ValueRef":[{"start":[7,83],"name":"../../../support/bower_components/purescript-prelude/src/Data/BooleanAlgebra.purs","end":[7,85]},{"Ident":"tt"}]},{"ValueRef":[{"start":[7,87],"name":"../../../support/bower_components/purescript-prelude/src/Data/BooleanAlgebra.purs","end":[7,94]},{"Ident":"implies"}]},{"ValueRef":[{"start":[7,96],"name":"../../../support/bower_components/purescript-prelude/src/Data/BooleanAlgebra.purs","end":[7,100]},{"Ident":"conj"}]},{"ValueRef":[{"start":[7,102],"name":"../../../support/bower_components/purescript-prelude/src/Data/BooleanAlgebra.purs","end":[7,106]},{"Ident":"disj"}]},{"ValueRef":[{"start":[7,108],"name":"../../../support/bower_components/purescript-prelude/src/Data/BooleanAlgebra.purs","end":[7,111]},{"Ident":"not"}]},{"ValueOpRef":[{"start":[7,113],"name":"../../../support/bower_components/purescript-prelude/src/Data/BooleanAlgebra.purs","end":[7,117]},"&&"]},{"ValueOpRef":[{"start":[7,119],"name":"../../../support/bower_components/purescript-prelude/src/Data/BooleanAlgebra.purs","end":[7,123]},"||"]}]},"eiImportedAs":null},{"eiModule":["Data","Symbol"],"eiImportType":{"Explicit":[{"TypeClassRef":[{"start":[8,21],"name":"../../../support/bower_components/purescript-prelude/src/Data/BooleanAlgebra.purs","end":[8,35]},"IsSymbol"]}]},"eiImportedAs":null},{"eiModule":["Data","Unit"],"eiImportType":{"Explicit":[{"TypeRef":[{"start":[9,19],"name":"../../../support/bower_components/purescript-prelude/src/Data/BooleanAlgebra.purs","end":[9,23]},"Unit",[]]}]},"eiImportedAs":null},{"eiModule":["Prim","Row"],"eiImportType":{"Implicit":[]},"eiImportedAs":["Row"]},{"eiModule":["Prim","RowList"],"eiImportType":{"Implicit":[]},"eiImportedAs":["RL"]}],"efFixities":[],"efTypeFixities":[],"efDeclarations":[{"EDType":{"edTypeName":"BooleanAlgebra","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":"BooleanAlgebra","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":["HeytingAlgebra0",{"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","HeytingAlgebra"],"HeytingAlgebra"]},{"annotation":[{"start":[21,22],"name":"../../../support/bower_components/purescript-prelude/src/Data/BooleanAlgebra.purs","end":[21,23]},[]],"tag":"TypeVar","contents":"a"}]}]},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"REmpty"}]}]}}},{"EDClass":{"edClassName":"BooleanAlgebra","edClassTypeArguments":[["a",null]],"edClassMembers":[],"edClassConstraints":[{"constraintAnn":[{"start":[21,7],"name":"../../../support/bower_components/purescript-prelude/src/Data/BooleanAlgebra.purs","end":[21,23]},[]],"constraintClass":[["Data","HeytingAlgebra"],"HeytingAlgebra"],"constraintArgs":[{"annotation":[{"start":[21,22],"name":"../../../support/bower_components/purescript-prelude/src/Data/BooleanAlgebra.purs","end":[21,23]},[]],"tag":"TypeVar","contents":"a"}],"constraintData":null}],"edFunctionalDependencies":[],"edIsEmpty":false}},{"EDType":{"edTypeName":"BooleanAlgebraRecord","edTypeKind":{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"FunKind","contents":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"NamedKind","contents":[["Prim","RowList"],"RowList"]},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"FunKind","contents":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"Row","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":"Row","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":"BooleanAlgebraRecord","edTypeSynonymArguments":[["rowlist",null],["row",null],["subrow",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":["HeytingAlgebraRecord0",{"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":"TypeApp","contents":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeConstructor","contents":[["Data","HeytingAlgebra"],"HeytingAlgebraRecord"]},{"annotation":[{"start":[30,28],"name":"../../../support/bower_components/purescript-prelude/src/Data/BooleanAlgebra.purs","end":[30,35]},[]],"tag":"TypeVar","contents":"rowlist"}]},{"annotation":[{"start":[30,36],"name":"../../../support/bower_components/purescript-prelude/src/Data/BooleanAlgebra.purs","end":[30,39]},[]],"tag":"TypeVar","contents":"row"}]},{"annotation":[{"start":[30,40],"name":"../../../support/bower_components/purescript-prelude/src/Data/BooleanAlgebra.purs","end":[30,46]},[]],"tag":"TypeVar","contents":"subrow"}]}]},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"REmpty"}]}]}}},{"EDClass":{"edClassName":"BooleanAlgebraRecord","edClassTypeArguments":[["rowlist",null],["row",null],["subrow",null]],"edClassMembers":[],"edClassConstraints":[{"constraintAnn":[{"start":[30,7],"name":"../../../support/bower_components/purescript-prelude/src/Data/BooleanAlgebra.purs","end":[30,46]},[]],"constraintClass":[["Data","HeytingAlgebra"],"HeytingAlgebraRecord"],"constraintArgs":[{"annotation":[{"start":[30,28],"name":"../../../support/bower_components/purescript-prelude/src/Data/BooleanAlgebra.purs","end":[30,35]},[]],"tag":"TypeVar","contents":"rowlist"},{"annotation":[{"start":[30,36],"name":"../../../support/bower_components/purescript-prelude/src/Data/BooleanAlgebra.purs","end":[30,39]},[]],"tag":"TypeVar","contents":"row"},{"annotation":[{"start":[30,40],"name":"../../../support/bower_components/purescript-prelude/src/Data/BooleanAlgebra.purs","end":[30,46]},[]],"tag":"TypeVar","contents":"subrow"}],"constraintData":null}],"edFunctionalDependencies":[{"determiners":[0],"determined":[2]}],"edIsEmpty":false}},{"EDInstance":{"edInstanceClassName":[["Data","BooleanAlgebra"],"BooleanAlgebra"],"edInstanceName":{"Ident":"booleanAlgebraBoolean"},"edInstanceTypes":[{"annotation":[{"start":[23,50],"name":"../../../support/bower_components/purescript-prelude/src/Data/BooleanAlgebra.purs","end":[23,57]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Boolean"]}],"edInstanceConstraints":[],"edInstanceChain":[[["Data","BooleanAlgebra"],{"Ident":"booleanAlgebraBoolean"}]],"edInstanceChainIndex":0}},{"EDInstance":{"edInstanceClassName":[["Data","BooleanAlgebra"],"BooleanAlgebra"],"edInstanceName":{"Ident":"booleanAlgebraUnit"},"edInstanceTypes":[{"annotation":[{"start":[24,47],"name":"../../../support/bower_components/purescript-prelude/src/Data/BooleanAlgebra.purs","end":[24,51]},[]],"tag":"TypeConstructor","contents":[["Data","Unit"],"Unit"]}],"edInstanceConstraints":[],"edInstanceChain":[[["Data","BooleanAlgebra"],{"Ident":"booleanAlgebraUnit"}]],"edInstanceChainIndex":0}},{"EDInstance":{"edInstanceClassName":[["Data","BooleanAlgebra"],"BooleanAlgebra"],"edInstanceName":{"Ident":"booleanAlgebraFn"},"edInstanceTypes":[{"annotation":[{"start":[25,66],"name":"../../../support/bower_components/purescript-prelude/src/Data/BooleanAlgebra.purs","end":[25,72]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[25,66],"name":"../../../support/bower_components/purescript-prelude/src/Data/BooleanAlgebra.purs","end":[25,72]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[25,68],"name":"../../../support/bower_components/purescript-prelude/src/Data/BooleanAlgebra.purs","end":[25,70]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[25,66],"name":"../../../support/bower_components/purescript-prelude/src/Data/BooleanAlgebra.purs","end":[25,67]},[]],"tag":"TypeVar","contents":"a"}]},{"annotation":[{"start":[25,71],"name":"../../../support/bower_components/purescript-prelude/src/Data/BooleanAlgebra.purs","end":[25,72]},[]],"tag":"TypeVar","contents":"b"}]}],"edInstanceConstraints":[{"constraintAnn":[{"start":[25,30],"name":"../../../support/bower_components/purescript-prelude/src/Data/BooleanAlgebra.purs","end":[25,46]},[]],"constraintClass":[["Data","BooleanAlgebra"],"BooleanAlgebra"],"constraintArgs":[{"annotation":[{"start":[25,45],"name":"../../../support/bower_components/purescript-prelude/src/Data/BooleanAlgebra.purs","end":[25,46]},[]],"tag":"TypeVar","contents":"b"}],"constraintData":null}],"edInstanceChain":[[["Data","BooleanAlgebra"],{"Ident":"booleanAlgebraFn"}]],"edInstanceChainIndex":0}},{"EDInstance":{"edInstanceClassName":[["Data","BooleanAlgebra"],"BooleanAlgebra"],"edInstanceName":{"Ident":"booleanAlgebraRecord"},"edInstanceTypes":[{"annotation":[{"start":[26,112],"name":"../../../support/bower_components/purescript-prelude/src/Data/BooleanAlgebra.purs","end":[26,122]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[26,112],"name":"../../../support/bower_components/purescript-prelude/src/Data/BooleanAlgebra.purs","end":[26,118]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Record"]},{"annotation":[{"start":[26,119],"name":"../../../support/bower_components/purescript-prelude/src/Data/BooleanAlgebra.purs","end":[26,122]},[]],"tag":"TypeVar","contents":"row"}]}],"edInstanceConstraints":[{"constraintAnn":[{"start":[26,35],"name":"../../../support/bower_components/purescript-prelude/src/Data/BooleanAlgebra.purs","end":[26,56]},[]],"constraintClass":[["Prim","RowList"],"RowToList"],"constraintArgs":[{"annotation":[{"start":[26,48],"name":"../../../support/bower_components/purescript-prelude/src/Data/BooleanAlgebra.purs","end":[26,51]},[]],"tag":"TypeVar","contents":"row"},{"annotation":[{"start":[26,52],"name":"../../../support/bower_components/purescript-prelude/src/Data/BooleanAlgebra.purs","end":[26,56]},[]],"tag":"TypeVar","contents":"list"}],"constraintData":null},{"constraintAnn":[{"start":[26,58],"name":"../../../support/bower_components/purescript-prelude/src/Data/BooleanAlgebra.purs","end":[26,91]},[]],"constraintClass":[["Data","BooleanAlgebra"],"BooleanAlgebraRecord"],"constraintArgs":[{"annotation":[{"start":[26,79],"name":"../../../support/bower_components/purescript-prelude/src/Data/BooleanAlgebra.purs","end":[26,83]},[]],"tag":"TypeVar","contents":"list"},{"annotation":[{"start":[26,84],"name":"../../../support/bower_components/purescript-prelude/src/Data/BooleanAlgebra.purs","end":[26,87]},[]],"tag":"TypeVar","contents":"row"},{"annotation":[{"start":[26,88],"name":"../../../support/bower_components/purescript-prelude/src/Data/BooleanAlgebra.purs","end":[26,91]},[]],"tag":"TypeVar","contents":"row"}],"constraintData":null}],"edInstanceChain":[[["Data","BooleanAlgebra"],{"Ident":"booleanAlgebraRecord"}]],"edInstanceChainIndex":0}},{"EDInstance":{"edInstanceClassName":[["Data","BooleanAlgebra"],"BooleanAlgebraRecord"],"edInstanceName":{"Ident":"booleanAlgebraRecordNil"},"edInstanceTypes":[{"annotation":[{"start":[32,58],"name":"../../../support/bower_components/purescript-prelude/src/Data/BooleanAlgebra.purs","end":[32,64]},[]],"tag":"TypeConstructor","contents":[["Prim","RowList"],"Nil"]},{"annotation":[{"start":[32,65],"name":"../../../support/bower_components/purescript-prelude/src/Data/BooleanAlgebra.purs","end":[32,68]},[]],"tag":"TypeVar","contents":"row"},{"annotation":[{"start":[32,70],"name":"../../../support/bower_components/purescript-prelude/src/Data/BooleanAlgebra.purs","end":[32,71]},[]],"tag":"REmpty"}],"edInstanceConstraints":[],"edInstanceChain":[[["Data","BooleanAlgebra"],{"Ident":"booleanAlgebraRecordNil"}]],"edInstanceChainIndex":0}},{"EDInstance":{"edInstanceClassName":[["Data","BooleanAlgebra"],"BooleanAlgebraRecord"],"edInstanceName":{"Ident":"booleanAlgebraRecordCons"},"edInstanceTypes":[{"annotation":[{"start":[40,30],"name":"../../../support/bower_components/purescript-prelude/src/Data/BooleanAlgebra.purs","end":[40,59]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[40,30],"name":"../../../support/bower_components/purescript-prelude/src/Data/BooleanAlgebra.purs","end":[40,47]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[40,30],"name":"../../../support/bower_components/purescript-prelude/src/Data/BooleanAlgebra.purs","end":[40,41]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[40,30],"name":"../../../support/bower_components/purescript-prelude/src/Data/BooleanAlgebra.purs","end":[40,37]},[]],"tag":"TypeConstructor","contents":[["Prim","RowList"],"Cons"]},{"annotation":[{"start":[40,38],"name":"../../../support/bower_components/purescript-prelude/src/Data/BooleanAlgebra.purs","end":[40,41]},[]],"tag":"TypeVar","contents":"key"}]},{"annotation":[{"start":[40,42],"name":"../../../support/bower_components/purescript-prelude/src/Data/BooleanAlgebra.purs","end":[40,47]},[]],"tag":"TypeVar","contents":"focus"}]},{"annotation":[{"start":[40,48],"name":"../../../support/bower_components/purescript-prelude/src/Data/BooleanAlgebra.purs","end":[40,59]},[]],"tag":"TypeVar","contents":"rowlistTail"}]},{"annotation":[{"start":[40,61],"name":"../../../support/bower_components/purescript-prelude/src/Data/BooleanAlgebra.purs","end":[40,64]},[]],"tag":"TypeVar","contents":"row"},{"annotation":[{"start":[40,65],"name":"../../../support/bower_components/purescript-prelude/src/Data/BooleanAlgebra.purs","end":[40,71]},[]],"tag":"TypeVar","contents":"subrow"}],"edInstanceConstraints":[{"constraintAnn":[{"start":[35,10],"name":"../../../support/bower_components/purescript-prelude/src/Data/BooleanAlgebra.purs","end":[35,22]},[]],"constraintClass":[["Data","Symbol"],"IsSymbol"],"constraintArgs":[{"annotation":[{"start":[35,19],"name":"../../../support/bower_components/purescript-prelude/src/Data/BooleanAlgebra.purs","end":[35,22]},[]],"tag":"TypeVar","contents":"key"}],"constraintData":null},{"constraintAnn":[{"start":[36,10],"name":"../../../support/bower_components/purescript-prelude/src/Data/BooleanAlgebra.purs","end":[36,46]},[]],"constraintClass":[["Prim","Row"],"Cons"],"constraintArgs":[{"annotation":[{"start":[36,19],"name":"../../../support/bower_components/purescript-prelude/src/Data/BooleanAlgebra.purs","end":[36,22]},[]],"tag":"TypeVar","contents":"key"},{"annotation":[{"start":[36,23],"name":"../../../support/bower_components/purescript-prelude/src/Data/BooleanAlgebra.purs","end":[36,28]},[]],"tag":"TypeVar","contents":"focus"},{"annotation":[{"start":[36,29],"name":"../../../support/bower_components/purescript-prelude/src/Data/BooleanAlgebra.purs","end":[36,39]},[]],"tag":"TypeVar","contents":"subrowTail"},{"annotation":[{"start":[36,40],"name":"../../../support/bower_components/purescript-prelude/src/Data/BooleanAlgebra.purs","end":[36,46]},[]],"tag":"TypeVar","contents":"subrow"}],"constraintData":null},{"constraintAnn":[{"start":[37,10],"name":"../../../support/bower_components/purescript-prelude/src/Data/BooleanAlgebra.purs","end":[37,57]},[]],"constraintClass":[["Data","BooleanAlgebra"],"BooleanAlgebraRecord"],"constraintArgs":[{"annotation":[{"start":[37,31],"name":"../../../support/bower_components/purescript-prelude/src/Data/BooleanAlgebra.purs","end":[37,42]},[]],"tag":"TypeVar","contents":"rowlistTail"},{"annotation":[{"start":[37,43],"name":"../../../support/bower_components/purescript-prelude/src/Data/BooleanAlgebra.purs","end":[37,46]},[]],"tag":"TypeVar","contents":"row"},{"annotation":[{"start":[37,47],"name":"../../../support/bower_components/purescript-prelude/src/Data/BooleanAlgebra.purs","end":[37,57]},[]],"tag":"TypeVar","contents":"subrowTail"}],"constraintData":null},{"constraintAnn":[{"start":[38,10],"name":"../../../support/bower_components/purescript-prelude/src/Data/BooleanAlgebra.purs","end":[38,30]},[]],"constraintClass":[["Data","BooleanAlgebra"],"BooleanAlgebra"],"constraintArgs":[{"annotation":[{"start":[38,25],"name":"../../../support/bower_components/purescript-prelude/src/Data/BooleanAlgebra.purs","end":[38,30]},[]],"tag":"TypeVar","contents":"focus"}],"constraintData":null}],"edInstanceChain":[[["Data","BooleanAlgebra"],{"Ident":"booleanAlgebraRecordCons"}]],"edInstanceChainIndex":0}}],"efSourceSpan":{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Data/BooleanAlgebra.purs","end":[40,71]}} \ No newline at end of file
diff --git a/tests/purs/publish/basic-example/output/Data.Bounded/externs.json b/tests/purs/publish/basic-example/output/Data.Bounded/externs.json
deleted file mode 100644
index 393101e..0000000
--- a/tests/purs/publish/basic-example/output/Data.Bounded/externs.json
+++ /dev/null
@@ -1 +0,0 @@
-{"efVersion":"0.13.4","efModuleName":["Data","Bounded"],"efExports":[{"ReExportRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Data/Bounded.purs","end":[56,24]},{"exportSourceImportedFrom":["Data","Ord"],"exportSourceDefinedIn":["Data","Ordering"]},{"TypeRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Data/Bounded.purs","end":[56,24]},"Ordering",["EQ","GT","LT"]]}]},{"ReExportRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Data/Bounded.purs","end":[56,24]},{"exportSourceImportedFrom":["Data","Ord"],"exportSourceDefinedIn":["Data","Ord"]},{"TypeClassRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Data/Bounded.purs","end":[56,24]},"Ord"]}]},{"ReExportRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Data/Bounded.purs","end":[56,24]},{"exportSourceImportedFrom":["Data","Ord"],"exportSourceDefinedIn":["Data","Ord"]},{"ValueRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Data/Bounded.purs","end":[56,24]},{"Ident":"compare"}]}]},{"ReExportRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Data/Bounded.purs","end":[56,24]},{"exportSourceImportedFrom":["Data","Ord"],"exportSourceDefinedIn":["Data","Ord"]},{"ValueOpRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Data/Bounded.purs","end":[56,24]},"<"]}]},{"ReExportRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Data/Bounded.purs","end":[56,24]},{"exportSourceImportedFrom":["Data","Ord"],"exportSourceDefinedIn":["Data","Ord"]},{"ValueOpRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Data/Bounded.purs","end":[56,24]},"<="]}]},{"ReExportRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Data/Bounded.purs","end":[56,24]},{"exportSourceImportedFrom":["Data","Ord"],"exportSourceDefinedIn":["Data","Ord"]},{"ValueOpRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Data/Bounded.purs","end":[56,24]},">"]}]},{"ReExportRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Data/Bounded.purs","end":[56,24]},{"exportSourceImportedFrom":["Data","Ord"],"exportSourceDefinedIn":["Data","Ord"]},{"ValueOpRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Data/Bounded.purs","end":[56,24]},">="]}]},{"TypeClassRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Data/Bounded.purs","end":[56,24]},"Bounded"]},{"ValueRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Data/Bounded.purs","end":[56,24]},{"Ident":"bottom"}]},{"ValueRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Data/Bounded.purs","end":[56,24]},{"Ident":"top"}]},{"ModuleRef":[{"start":[5,5],"name":"../../../support/bower_components/purescript-prelude/src/Data/Bounded.purs","end":[5,20]},["Data","Ord"]]},{"TypeInstanceRef":[{"start":[0,0],"name":"<generated>","end":[0,0]},{"Ident":"boundedBoolean"}]},{"TypeInstanceRef":[{"start":[0,0],"name":"<generated>","end":[0,0]},{"Ident":"boundedInt"}]},{"TypeInstanceRef":[{"start":[0,0],"name":"<generated>","end":[0,0]},{"Ident":"boundedChar"}]},{"TypeInstanceRef":[{"start":[0,0],"name":"<generated>","end":[0,0]},{"Ident":"boundedOrdering"}]},{"TypeInstanceRef":[{"start":[0,0],"name":"<generated>","end":[0,0]},{"Ident":"boundedUnit"}]},{"TypeInstanceRef":[{"start":[0,0],"name":"<generated>","end":[0,0]},{"Ident":"boundedNumber"}]}],"efImports":[{"eiModule":["Prim"],"eiImportType":{"Implicit":[]},"eiImportedAs":["Prim"]},{"eiModule":["Prim"],"eiImportType":{"Implicit":[]},"eiImportedAs":null},{"eiModule":["Data","Ord"],"eiImportType":{"Explicit":[{"TypeClassRef":[{"start":[8,18],"name":"../../../support/bower_components/purescript-prelude/src/Data/Bounded.purs","end":[8,27]},"Ord"]},{"TypeRef":[{"start":[8,29],"name":"../../../support/bower_components/purescript-prelude/src/Data/Bounded.purs","end":[8,41]},"Ordering",null]},{"ValueRef":[{"start":[8,43],"name":"../../../support/bower_components/purescript-prelude/src/Data/Bounded.purs","end":[8,50]},{"Ident":"compare"}]},{"ValueOpRef":[{"start":[8,52],"name":"../../../support/bower_components/purescript-prelude/src/Data/Bounded.purs","end":[8,55]},"<"]},{"ValueOpRef":[{"start":[8,57],"name":"../../../support/bower_components/purescript-prelude/src/Data/Bounded.purs","end":[8,61]},"<="]},{"ValueOpRef":[{"start":[8,63],"name":"../../../support/bower_components/purescript-prelude/src/Data/Bounded.purs","end":[8,66]},">"]},{"ValueOpRef":[{"start":[8,68],"name":"../../../support/bower_components/purescript-prelude/src/Data/Bounded.purs","end":[8,72]},">="]}]},"eiImportedAs":null},{"eiModule":["Data","Unit"],"eiImportType":{"Explicit":[{"TypeRef":[{"start":[9,19],"name":"../../../support/bower_components/purescript-prelude/src/Data/Bounded.purs","end":[9,23]},"Unit",[]]},{"ValueRef":[{"start":[9,25],"name":"../../../support/bower_components/purescript-prelude/src/Data/Bounded.purs","end":[9,29]},{"Ident":"unit"}]}]},"eiImportedAs":null}],"efFixities":[],"efTypeFixities":[],"efDeclarations":[{"EDType":{"edTypeName":"Bounded","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":"Bounded","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":["top",{"annotation":[{"start":[18,10],"name":"../../../support/bower_components/purescript-prelude/src/Data/Bounded.purs","end":[18,11]},[]],"tag":"TypeVar","contents":"a"},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"RCons","contents":["bottom",{"annotation":[{"start":[19,13],"name":"../../../support/bower_components/purescript-prelude/src/Data/Bounded.purs","end":[19,14]},[]],"tag":"TypeVar","contents":"a"},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"RCons","contents":["Ord0",{"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","Ord"],"Ord"]},{"annotation":[{"start":[17,11],"name":"../../../support/bower_components/purescript-prelude/src/Data/Bounded.purs","end":[17,12]},[]],"tag":"TypeVar","contents":"a"}]}]},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"REmpty"}]}]}]}]}}},{"EDClass":{"edClassName":"Bounded","edClassTypeArguments":[["a",null]],"edClassMembers":[[{"Ident":"top"},{"annotation":[{"start":[18,10],"name":"../../../support/bower_components/purescript-prelude/src/Data/Bounded.purs","end":[18,11]},[]],"tag":"TypeVar","contents":"a"}],[{"Ident":"bottom"},{"annotation":[{"start":[19,13],"name":"../../../support/bower_components/purescript-prelude/src/Data/Bounded.purs","end":[19,14]},[]],"tag":"TypeVar","contents":"a"}]],"edClassConstraints":[{"constraintAnn":[{"start":[17,7],"name":"../../../support/bower_components/purescript-prelude/src/Data/Bounded.purs","end":[17,12]},[]],"constraintClass":[["Data","Ord"],"Ord"],"constraintArgs":[{"annotation":[{"start":[17,11],"name":"../../../support/bower_components/purescript-prelude/src/Data/Bounded.purs","end":[17,12]},[]],"tag":"TypeVar","contents":"a"}],"constraintData":null}],"edFunctionalDependencies":[],"edIsEmpty":false}},{"EDValue":{"edValueName":{"Ident":"bottom"},"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":[["Data","Bounded"],"Bounded"],"constraintArgs":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeVar","contents":"a"}],"constraintData":null},{"annotation":[{"start":[19,13],"name":"../../../support/bower_components/purescript-prelude/src/Data/Bounded.purs","end":[19,14]},[]],"tag":"TypeVar","contents":"a"}]},1]}}},{"EDValue":{"edValueName":{"Ident":"top"},"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":[["Data","Bounded"],"Bounded"],"constraintArgs":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeVar","contents":"a"}],"constraintData":null},{"annotation":[{"start":[18,10],"name":"../../../support/bower_components/purescript-prelude/src/Data/Bounded.purs","end":[18,11]},[]],"tag":"TypeVar","contents":"a"}]},0]}}},{"EDInstance":{"edInstanceClassName":[["Data","Bounded"],"Bounded"],"edInstanceName":{"Ident":"boundedBoolean"},"edInstanceTypes":[{"annotation":[{"start":[21,36],"name":"../../../support/bower_components/purescript-prelude/src/Data/Bounded.purs","end":[21,43]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Boolean"]}],"edInstanceConstraints":[],"edInstanceChain":[[["Data","Bounded"],{"Ident":"boundedBoolean"}]],"edInstanceChainIndex":0}},{"EDInstance":{"edInstanceClassName":[["Data","Bounded"],"Bounded"],"edInstanceName":{"Ident":"boundedInt"},"edInstanceTypes":[{"annotation":[{"start":[28,32],"name":"../../../support/bower_components/purescript-prelude/src/Data/Bounded.purs","end":[28,35]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Int"]}],"edInstanceConstraints":[],"edInstanceChain":[[["Data","Bounded"],{"Ident":"boundedInt"}]],"edInstanceChainIndex":0}},{"EDInstance":{"edInstanceClassName":[["Data","Bounded"],"Bounded"],"edInstanceName":{"Ident":"boundedChar"},"edInstanceTypes":[{"annotation":[{"start":[36,33],"name":"../../../support/bower_components/purescript-prelude/src/Data/Bounded.purs","end":[36,37]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Char"]}],"edInstanceConstraints":[],"edInstanceChain":[[["Data","Bounded"],{"Ident":"boundedChar"}]],"edInstanceChainIndex":0}},{"EDInstance":{"edInstanceClassName":[["Data","Bounded"],"Bounded"],"edInstanceName":{"Ident":"boundedOrdering"},"edInstanceTypes":[{"annotation":[{"start":[43,37],"name":"../../../support/bower_components/purescript-prelude/src/Data/Bounded.purs","end":[43,45]},[]],"tag":"TypeConstructor","contents":[["Data","Ordering"],"Ordering"]}],"edInstanceConstraints":[],"edInstanceChain":[[["Data","Bounded"],{"Ident":"boundedOrdering"}]],"edInstanceChainIndex":0}},{"EDInstance":{"edInstanceClassName":[["Data","Bounded"],"Bounded"],"edInstanceName":{"Ident":"boundedUnit"},"edInstanceTypes":[{"annotation":[{"start":[47,33],"name":"../../../support/bower_components/purescript-prelude/src/Data/Bounded.purs","end":[47,37]},[]],"tag":"TypeConstructor","contents":[["Data","Unit"],"Unit"]}],"edInstanceConstraints":[],"edInstanceChain":[[["Data","Bounded"],{"Ident":"boundedUnit"}]],"edInstanceChainIndex":0}},{"EDInstance":{"edInstanceClassName":[["Data","Bounded"],"Bounded"],"edInstanceName":{"Ident":"boundedNumber"},"edInstanceTypes":[{"annotation":[{"start":[54,35],"name":"../../../support/bower_components/purescript-prelude/src/Data/Bounded.purs","end":[54,41]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Number"]}],"edInstanceConstraints":[],"edInstanceChain":[[["Data","Bounded"],{"Ident":"boundedNumber"}]],"edInstanceChainIndex":0}}],"efSourceSpan":{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Data/Bounded.purs","end":[56,24]}} \ No newline at end of file
diff --git a/tests/purs/publish/basic-example/output/Data.CommutativeRing/externs.json b/tests/purs/publish/basic-example/output/Data.CommutativeRing/externs.json
deleted file mode 100644
index a6d9b25..0000000
--- a/tests/purs/publish/basic-example/output/Data.CommutativeRing/externs.json
+++ /dev/null
@@ -1 +0,0 @@
-{"efVersion":"0.13.4","efModuleName":["Data","CommutativeRing"],"efExports":[{"ReExportRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Data/CommutativeRing.purs","end":[42,72]},{"exportSourceImportedFrom":["Data","Ring"],"exportSourceDefinedIn":["Data","Ring"]},{"TypeClassRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Data/CommutativeRing.purs","end":[42,72]},"Ring"]}]},{"ReExportRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Data/CommutativeRing.purs","end":[42,72]},{"exportSourceImportedFrom":["Data","Ring"],"exportSourceDefinedIn":["Data","Ring"]},{"TypeClassRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Data/CommutativeRing.purs","end":[42,72]},"RingRecord"]}]},{"ReExportRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Data/CommutativeRing.purs","end":[42,72]},{"exportSourceImportedFrom":["Data","Semiring"],"exportSourceDefinedIn":["Data","Semiring"]},{"TypeClassRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Data/CommutativeRing.purs","end":[42,72]},"Semiring"]}]},{"ReExportRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Data/CommutativeRing.purs","end":[42,72]},{"exportSourceImportedFrom":["Data","Semiring"],"exportSourceDefinedIn":["Data","Semiring"]},{"ValueRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Data/CommutativeRing.purs","end":[42,72]},{"Ident":"add"}]}]},{"ReExportRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Data/CommutativeRing.purs","end":[42,72]},{"exportSourceImportedFrom":["Data","Semiring"],"exportSourceDefinedIn":["Data","Semiring"]},{"ValueRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Data/CommutativeRing.purs","end":[42,72]},{"Ident":"mul"}]}]},{"ReExportRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Data/CommutativeRing.purs","end":[42,72]},{"exportSourceImportedFrom":["Data","Semiring"],"exportSourceDefinedIn":["Data","Semiring"]},{"ValueRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Data/CommutativeRing.purs","end":[42,72]},{"Ident":"one"}]}]},{"ReExportRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Data/CommutativeRing.purs","end":[42,72]},{"exportSourceImportedFrom":["Data","Semiring"],"exportSourceDefinedIn":["Data","Semiring"]},{"ValueRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Data/CommutativeRing.purs","end":[42,72]},{"Ident":"zero"}]}]},{"ReExportRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Data/CommutativeRing.purs","end":[42,72]},{"exportSourceImportedFrom":["Data","Semiring"],"exportSourceDefinedIn":["Data","Semiring"]},{"ValueOpRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Data/CommutativeRing.purs","end":[42,72]},"*"]}]},{"ReExportRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Data/CommutativeRing.purs","end":[42,72]},{"exportSourceImportedFrom":["Data","Semiring"],"exportSourceDefinedIn":["Data","Semiring"]},{"ValueOpRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Data/CommutativeRing.purs","end":[42,72]},"+"]}]},{"TypeClassRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Data/CommutativeRing.purs","end":[42,72]},"CommutativeRing"]},{"ModuleRef":[{"start":[3,5],"name":"../../../support/bower_components/purescript-prelude/src/Data/CommutativeRing.purs","end":[3,21]},["Data","Ring"]]},{"ModuleRef":[{"start":[4,5],"name":"../../../support/bower_components/purescript-prelude/src/Data/CommutativeRing.purs","end":[4,25]},["Data","Semiring"]]},{"TypeClassRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Data/CommutativeRing.purs","end":[42,72]},"CommutativeRingRecord"]},{"TypeInstanceRef":[{"start":[0,0],"name":"<generated>","end":[0,0]},{"Ident":"commutativeRingInt"}]},{"TypeInstanceRef":[{"start":[0,0],"name":"<generated>","end":[0,0]},{"Ident":"commutativeRingNumber"}]},{"TypeInstanceRef":[{"start":[0,0],"name":"<generated>","end":[0,0]},{"Ident":"commutativeRingUnit"}]},{"TypeInstanceRef":[{"start":[0,0],"name":"<generated>","end":[0,0]},{"Ident":"commutativeRingFn"}]},{"TypeInstanceRef":[{"start":[0,0],"name":"<generated>","end":[0,0]},{"Ident":"commutativeRingRecord"}]},{"TypeInstanceRef":[{"start":[0,0],"name":"<generated>","end":[0,0]},{"Ident":"commutativeRingRecordNil"}]},{"TypeInstanceRef":[{"start":[0,0],"name":"<generated>","end":[0,0]},{"Ident":"commutativeRingRecordCons"}]}],"efImports":[{"eiModule":["Prim"],"eiImportType":{"Implicit":[]},"eiImportedAs":["Prim"]},{"eiModule":["Prim"],"eiImportType":{"Implicit":[]},"eiImportedAs":null},{"eiModule":["Data","Ring"],"eiImportType":{"Explicit":[{"TypeClassRef":[{"start":[8,19],"name":"../../../support/bower_components/purescript-prelude/src/Data/CommutativeRing.purs","end":[8,29]},"Ring"]},{"TypeClassRef":[{"start":[8,31],"name":"../../../support/bower_components/purescript-prelude/src/Data/CommutativeRing.purs","end":[8,47]},"RingRecord"]}]},"eiImportedAs":null},{"eiModule":["Data","Semiring"],"eiImportType":{"Explicit":[{"TypeClassRef":[{"start":[9,23],"name":"../../../support/bower_components/purescript-prelude/src/Data/CommutativeRing.purs","end":[9,37]},"Semiring"]},{"ValueRef":[{"start":[9,39],"name":"../../../support/bower_components/purescript-prelude/src/Data/CommutativeRing.purs","end":[9,42]},{"Ident":"add"}]},{"ValueRef":[{"start":[9,44],"name":"../../../support/bower_components/purescript-prelude/src/Data/CommutativeRing.purs","end":[9,47]},{"Ident":"mul"}]},{"ValueRef":[{"start":[9,49],"name":"../../../support/bower_components/purescript-prelude/src/Data/CommutativeRing.purs","end":[9,52]},{"Ident":"one"}]},{"ValueRef":[{"start":[9,54],"name":"../../../support/bower_components/purescript-prelude/src/Data/CommutativeRing.purs","end":[9,58]},{"Ident":"zero"}]},{"ValueOpRef":[{"start":[9,60],"name":"../../../support/bower_components/purescript-prelude/src/Data/CommutativeRing.purs","end":[9,63]},"*"]},{"ValueOpRef":[{"start":[9,65],"name":"../../../support/bower_components/purescript-prelude/src/Data/CommutativeRing.purs","end":[9,68]},"+"]}]},"eiImportedAs":null},{"eiModule":["Data","Symbol"],"eiImportType":{"Explicit":[{"TypeClassRef":[{"start":[10,21],"name":"../../../support/bower_components/purescript-prelude/src/Data/CommutativeRing.purs","end":[10,35]},"IsSymbol"]}]},"eiImportedAs":null},{"eiModule":["Data","Unit"],"eiImportType":{"Explicit":[{"TypeRef":[{"start":[11,19],"name":"../../../support/bower_components/purescript-prelude/src/Data/CommutativeRing.purs","end":[11,23]},"Unit",[]]}]},"eiImportedAs":null},{"eiModule":["Prim","Row"],"eiImportType":{"Implicit":[]},"eiImportedAs":["Row"]},{"eiModule":["Prim","RowList"],"eiImportType":{"Implicit":[]},"eiImportedAs":["RL"]}],"efFixities":[],"efTypeFixities":[],"efDeclarations":[{"EDType":{"edTypeName":"CommutativeRing","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":"CommutativeRing","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":["Ring0",{"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","Ring"],"Ring"]},{"annotation":[{"start":[22,12],"name":"../../../support/bower_components/purescript-prelude/src/Data/CommutativeRing.purs","end":[22,13]},[]],"tag":"TypeVar","contents":"a"}]}]},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"REmpty"}]}]}}},{"EDClass":{"edClassName":"CommutativeRing","edClassTypeArguments":[["a",null]],"edClassMembers":[],"edClassConstraints":[{"constraintAnn":[{"start":[22,7],"name":"../../../support/bower_components/purescript-prelude/src/Data/CommutativeRing.purs","end":[22,13]},[]],"constraintClass":[["Data","Ring"],"Ring"],"constraintArgs":[{"annotation":[{"start":[22,12],"name":"../../../support/bower_components/purescript-prelude/src/Data/CommutativeRing.purs","end":[22,13]},[]],"tag":"TypeVar","contents":"a"}],"constraintData":null}],"edFunctionalDependencies":[],"edIsEmpty":false}},{"EDType":{"edTypeName":"CommutativeRingRecord","edTypeKind":{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"FunKind","contents":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"NamedKind","contents":[["Prim","RowList"],"RowList"]},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"FunKind","contents":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"Row","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":"Row","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":"CommutativeRingRecord","edTypeSynonymArguments":[["rowlist",null],["row",null],["subrow",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":["RingRecord0",{"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":"TypeApp","contents":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeConstructor","contents":[["Data","Ring"],"RingRecord"]},{"annotation":[{"start":[32,18],"name":"../../../support/bower_components/purescript-prelude/src/Data/CommutativeRing.purs","end":[32,25]},[]],"tag":"TypeVar","contents":"rowlist"}]},{"annotation":[{"start":[32,26],"name":"../../../support/bower_components/purescript-prelude/src/Data/CommutativeRing.purs","end":[32,29]},[]],"tag":"TypeVar","contents":"row"}]},{"annotation":[{"start":[32,30],"name":"../../../support/bower_components/purescript-prelude/src/Data/CommutativeRing.purs","end":[32,36]},[]],"tag":"TypeVar","contents":"subrow"}]}]},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"REmpty"}]}]}}},{"EDClass":{"edClassName":"CommutativeRingRecord","edClassTypeArguments":[["rowlist",null],["row",null],["subrow",null]],"edClassMembers":[],"edClassConstraints":[{"constraintAnn":[{"start":[32,7],"name":"../../../support/bower_components/purescript-prelude/src/Data/CommutativeRing.purs","end":[32,36]},[]],"constraintClass":[["Data","Ring"],"RingRecord"],"constraintArgs":[{"annotation":[{"start":[32,18],"name":"../../../support/bower_components/purescript-prelude/src/Data/CommutativeRing.purs","end":[32,25]},[]],"tag":"TypeVar","contents":"rowlist"},{"annotation":[{"start":[32,26],"name":"../../../support/bower_components/purescript-prelude/src/Data/CommutativeRing.purs","end":[32,29]},[]],"tag":"TypeVar","contents":"row"},{"annotation":[{"start":[32,30],"name":"../../../support/bower_components/purescript-prelude/src/Data/CommutativeRing.purs","end":[32,36]},[]],"tag":"TypeVar","contents":"subrow"}],"constraintData":null}],"edFunctionalDependencies":[{"determiners":[0],"determined":[2]}],"edIsEmpty":false}},{"EDInstance":{"edInstanceClassName":[["Data","CommutativeRing"],"CommutativeRing"],"edInstanceName":{"Ident":"commutativeRingInt"},"edInstanceTypes":[{"annotation":[{"start":[24,48],"name":"../../../support/bower_components/purescript-prelude/src/Data/CommutativeRing.purs","end":[24,51]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Int"]}],"edInstanceConstraints":[],"edInstanceChain":[[["Data","CommutativeRing"],{"Ident":"commutativeRingInt"}]],"edInstanceChainIndex":0}},{"EDInstance":{"edInstanceClassName":[["Data","CommutativeRing"],"CommutativeRing"],"edInstanceName":{"Ident":"commutativeRingNumber"},"edInstanceTypes":[{"annotation":[{"start":[25,51],"name":"../../../support/bower_components/purescript-prelude/src/Data/CommutativeRing.purs","end":[25,57]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Number"]}],"edInstanceConstraints":[],"edInstanceChain":[[["Data","CommutativeRing"],{"Ident":"commutativeRingNumber"}]],"edInstanceChainIndex":0}},{"EDInstance":{"edInstanceClassName":[["Data","CommutativeRing"],"CommutativeRing"],"edInstanceName":{"Ident":"commutativeRingUnit"},"edInstanceTypes":[{"annotation":[{"start":[26,49],"name":"../../../support/bower_components/purescript-prelude/src/Data/CommutativeRing.purs","end":[26,53]},[]],"tag":"TypeConstructor","contents":[["Data","Unit"],"Unit"]}],"edInstanceConstraints":[],"edInstanceChain":[[["Data","CommutativeRing"],{"Ident":"commutativeRingUnit"}]],"edInstanceChainIndex":0}},{"EDInstance":{"edInstanceClassName":[["Data","CommutativeRing"],"CommutativeRing"],"edInstanceName":{"Ident":"commutativeRingFn"},"edInstanceTypes":[{"annotation":[{"start":[27,69],"name":"../../../support/bower_components/purescript-prelude/src/Data/CommutativeRing.purs","end":[27,75]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[27,69],"name":"../../../support/bower_components/purescript-prelude/src/Data/CommutativeRing.purs","end":[27,75]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[27,71],"name":"../../../support/bower_components/purescript-prelude/src/Data/CommutativeRing.purs","end":[27,73]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[27,69],"name":"../../../support/bower_components/purescript-prelude/src/Data/CommutativeRing.purs","end":[27,70]},[]],"tag":"TypeVar","contents":"a"}]},{"annotation":[{"start":[27,74],"name":"../../../support/bower_components/purescript-prelude/src/Data/CommutativeRing.purs","end":[27,75]},[]],"tag":"TypeVar","contents":"b"}]}],"edInstanceConstraints":[{"constraintAnn":[{"start":[27,31],"name":"../../../support/bower_components/purescript-prelude/src/Data/CommutativeRing.purs","end":[27,48]},[]],"constraintClass":[["Data","CommutativeRing"],"CommutativeRing"],"constraintArgs":[{"annotation":[{"start":[27,47],"name":"../../../support/bower_components/purescript-prelude/src/Data/CommutativeRing.purs","end":[27,48]},[]],"tag":"TypeVar","contents":"b"}],"constraintData":null}],"edInstanceChain":[[["Data","CommutativeRing"],{"Ident":"commutativeRingFn"}]],"edInstanceChainIndex":0}},{"EDInstance":{"edInstanceClassName":[["Data","CommutativeRing"],"CommutativeRing"],"edInstanceName":{"Ident":"commutativeRingRecord"},"edInstanceTypes":[{"annotation":[{"start":[28,115],"name":"../../../support/bower_components/purescript-prelude/src/Data/CommutativeRing.purs","end":[28,125]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[28,115],"name":"../../../support/bower_components/purescript-prelude/src/Data/CommutativeRing.purs","end":[28,121]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Record"]},{"annotation":[{"start":[28,122],"name":"../../../support/bower_components/purescript-prelude/src/Data/CommutativeRing.purs","end":[28,125]},[]],"tag":"TypeVar","contents":"row"}]}],"edInstanceConstraints":[{"constraintAnn":[{"start":[28,36],"name":"../../../support/bower_components/purescript-prelude/src/Data/CommutativeRing.purs","end":[28,57]},[]],"constraintClass":[["Prim","RowList"],"RowToList"],"constraintArgs":[{"annotation":[{"start":[28,49],"name":"../../../support/bower_components/purescript-prelude/src/Data/CommutativeRing.purs","end":[28,52]},[]],"tag":"TypeVar","contents":"row"},{"annotation":[{"start":[28,53],"name":"../../../support/bower_components/purescript-prelude/src/Data/CommutativeRing.purs","end":[28,57]},[]],"tag":"TypeVar","contents":"list"}],"constraintData":null},{"constraintAnn":[{"start":[28,59],"name":"../../../support/bower_components/purescript-prelude/src/Data/CommutativeRing.purs","end":[28,93]},[]],"constraintClass":[["Data","CommutativeRing"],"CommutativeRingRecord"],"constraintArgs":[{"annotation":[{"start":[28,81],"name":"../../../support/bower_components/purescript-prelude/src/Data/CommutativeRing.purs","end":[28,85]},[]],"tag":"TypeVar","contents":"list"},{"annotation":[{"start":[28,86],"name":"../../../support/bower_components/purescript-prelude/src/Data/CommutativeRing.purs","end":[28,89]},[]],"tag":"TypeVar","contents":"row"},{"annotation":[{"start":[28,90],"name":"../../../support/bower_components/purescript-prelude/src/Data/CommutativeRing.purs","end":[28,93]},[]],"tag":"TypeVar","contents":"row"}],"constraintData":null}],"edInstanceChain":[[["Data","CommutativeRing"],{"Ident":"commutativeRingRecord"}]],"edInstanceChainIndex":0}},{"EDInstance":{"edInstanceClassName":[["Data","CommutativeRing"],"CommutativeRingRecord"],"edInstanceName":{"Ident":"commutativeRingRecordNil"},"edInstanceTypes":[{"annotation":[{"start":[34,60],"name":"../../../support/bower_components/purescript-prelude/src/Data/CommutativeRing.purs","end":[34,66]},[]],"tag":"TypeConstructor","contents":[["Prim","RowList"],"Nil"]},{"annotation":[{"start":[34,67],"name":"../../../support/bower_components/purescript-prelude/src/Data/CommutativeRing.purs","end":[34,70]},[]],"tag":"TypeVar","contents":"row"},{"annotation":[{"start":[34,72],"name":"../../../support/bower_components/purescript-prelude/src/Data/CommutativeRing.purs","end":[34,73]},[]],"tag":"REmpty"}],"edInstanceConstraints":[],"edInstanceChain":[[["Data","CommutativeRing"],{"Ident":"commutativeRingRecordNil"}]],"edInstanceChainIndex":0}},{"EDInstance":{"edInstanceClassName":[["Data","CommutativeRing"],"CommutativeRingRecord"],"edInstanceName":{"Ident":"commutativeRingRecordCons"},"edInstanceTypes":[{"annotation":[{"start":[42,31],"name":"../../../support/bower_components/purescript-prelude/src/Data/CommutativeRing.purs","end":[42,60]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[42,31],"name":"../../../support/bower_components/purescript-prelude/src/Data/CommutativeRing.purs","end":[42,48]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[42,31],"name":"../../../support/bower_components/purescript-prelude/src/Data/CommutativeRing.purs","end":[42,42]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[42,31],"name":"../../../support/bower_components/purescript-prelude/src/Data/CommutativeRing.purs","end":[42,38]},[]],"tag":"TypeConstructor","contents":[["Prim","RowList"],"Cons"]},{"annotation":[{"start":[42,39],"name":"../../../support/bower_components/purescript-prelude/src/Data/CommutativeRing.purs","end":[42,42]},[]],"tag":"TypeVar","contents":"key"}]},{"annotation":[{"start":[42,43],"name":"../../../support/bower_components/purescript-prelude/src/Data/CommutativeRing.purs","end":[42,48]},[]],"tag":"TypeVar","contents":"focus"}]},{"annotation":[{"start":[42,49],"name":"../../../support/bower_components/purescript-prelude/src/Data/CommutativeRing.purs","end":[42,60]},[]],"tag":"TypeVar","contents":"rowlistTail"}]},{"annotation":[{"start":[42,62],"name":"../../../support/bower_components/purescript-prelude/src/Data/CommutativeRing.purs","end":[42,65]},[]],"tag":"TypeVar","contents":"row"},{"annotation":[{"start":[42,66],"name":"../../../support/bower_components/purescript-prelude/src/Data/CommutativeRing.purs","end":[42,72]},[]],"tag":"TypeVar","contents":"subrow"}],"edInstanceConstraints":[{"constraintAnn":[{"start":[37,10],"name":"../../../support/bower_components/purescript-prelude/src/Data/CommutativeRing.purs","end":[37,22]},[]],"constraintClass":[["Data","Symbol"],"IsSymbol"],"constraintArgs":[{"annotation":[{"start":[37,19],"name":"../../../support/bower_components/purescript-prelude/src/Data/CommutativeRing.purs","end":[37,22]},[]],"tag":"TypeVar","contents":"key"}],"constraintData":null},{"constraintAnn":[{"start":[38,10],"name":"../../../support/bower_components/purescript-prelude/src/Data/CommutativeRing.purs","end":[38,46]},[]],"constraintClass":[["Prim","Row"],"Cons"],"constraintArgs":[{"annotation":[{"start":[38,19],"name":"../../../support/bower_components/purescript-prelude/src/Data/CommutativeRing.purs","end":[38,22]},[]],"tag":"TypeVar","contents":"key"},{"annotation":[{"start":[38,23],"name":"../../../support/bower_components/purescript-prelude/src/Data/CommutativeRing.purs","end":[38,28]},[]],"tag":"TypeVar","contents":"focus"},{"annotation":[{"start":[38,29],"name":"../../../support/bower_components/purescript-prelude/src/Data/CommutativeRing.purs","end":[38,39]},[]],"tag":"TypeVar","contents":"subrowTail"},{"annotation":[{"start":[38,40],"name":"../../../support/bower_components/purescript-prelude/src/Data/CommutativeRing.purs","end":[38,46]},[]],"tag":"TypeVar","contents":"subrow"}],"constraintData":null},{"constraintAnn":[{"start":[39,10],"name":"../../../support/bower_components/purescript-prelude/src/Data/CommutativeRing.purs","end":[39,58]},[]],"constraintClass":[["Data","CommutativeRing"],"CommutativeRingRecord"],"constraintArgs":[{"annotation":[{"start":[39,32],"name":"../../../support/bower_components/purescript-prelude/src/Data/CommutativeRing.purs","end":[39,43]},[]],"tag":"TypeVar","contents":"rowlistTail"},{"annotation":[{"start":[39,44],"name":"../../../support/bower_components/purescript-prelude/src/Data/CommutativeRing.purs","end":[39,47]},[]],"tag":"TypeVar","contents":"row"},{"annotation":[{"start":[39,48],"name":"../../../support/bower_components/purescript-prelude/src/Data/CommutativeRing.purs","end":[39,58]},[]],"tag":"TypeVar","contents":"subrowTail"}],"constraintData":null},{"constraintAnn":[{"start":[40,10],"name":"../../../support/bower_components/purescript-prelude/src/Data/CommutativeRing.purs","end":[40,31]},[]],"constraintClass":[["Data","CommutativeRing"],"CommutativeRing"],"constraintArgs":[{"annotation":[{"start":[40,26],"name":"../../../support/bower_components/purescript-prelude/src/Data/CommutativeRing.purs","end":[40,31]},[]],"tag":"TypeVar","contents":"focus"}],"constraintData":null}],"edInstanceChain":[[["Data","CommutativeRing"],{"Ident":"commutativeRingRecordCons"}]],"edInstanceChainIndex":0}}],"efSourceSpan":{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Data/CommutativeRing.purs","end":[42,72]}} \ No newline at end of file
diff --git a/tests/purs/publish/basic-example/output/Data.DivisionRing/externs.json b/tests/purs/publish/basic-example/output/Data.DivisionRing/externs.json
deleted file mode 100644
index 40b7c73..0000000
--- a/tests/purs/publish/basic-example/output/Data.DivisionRing/externs.json
+++ /dev/null
@@ -1 +0,0 @@
-{"efVersion":"0.13.4","efModuleName":["Data","DivisionRing"],"efExports":[{"ReExportRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Data/DivisionRing.purs","end":[55,20]},{"exportSourceImportedFrom":["Data","Ring"],"exportSourceDefinedIn":["Data","Ring"]},{"TypeClassRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Data/DivisionRing.purs","end":[55,20]},"Ring"]}]},{"ReExportRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Data/DivisionRing.purs","end":[55,20]},{"exportSourceImportedFrom":["Data","Semiring"],"exportSourceDefinedIn":["Data","Semiring"]},{"TypeClassRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Data/DivisionRing.purs","end":[55,20]},"Semiring"]}]},{"ReExportRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Data/DivisionRing.purs","end":[55,20]},{"exportSourceImportedFrom":["Data","Semiring"],"exportSourceDefinedIn":["Data","Semiring"]},{"ValueRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Data/DivisionRing.purs","end":[55,20]},{"Ident":"add"}]}]},{"ReExportRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Data/DivisionRing.purs","end":[55,20]},{"exportSourceImportedFrom":["Data","Semiring"],"exportSourceDefinedIn":["Data","Semiring"]},{"ValueRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Data/DivisionRing.purs","end":[55,20]},{"Ident":"mul"}]}]},{"ReExportRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Data/DivisionRing.purs","end":[55,20]},{"exportSourceImportedFrom":["Data","Ring"],"exportSourceDefinedIn":["Data","Ring"]},{"ValueRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Data/DivisionRing.purs","end":[55,20]},{"Ident":"negate"}]}]},{"ReExportRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Data/DivisionRing.purs","end":[55,20]},{"exportSourceImportedFrom":["Data","Semiring"],"exportSourceDefinedIn":["Data","Semiring"]},{"ValueRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Data/DivisionRing.purs","end":[55,20]},{"Ident":"one"}]}]},{"ReExportRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Data/DivisionRing.purs","end":[55,20]},{"exportSourceImportedFrom":["Data","Ring"],"exportSourceDefinedIn":["Data","Ring"]},{"ValueRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Data/DivisionRing.purs","end":[55,20]},{"Ident":"sub"}]}]},{"ReExportRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Data/DivisionRing.purs","end":[55,20]},{"exportSourceImportedFrom":["Data","Semiring"],"exportSourceDefinedIn":["Data","Semiring"]},{"ValueRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Data/DivisionRing.purs","end":[55,20]},{"Ident":"zero"}]}]},{"ReExportRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Data/DivisionRing.purs","end":[55,20]},{"exportSourceImportedFrom":["Data","Semiring"],"exportSourceDefinedIn":["Data","Semiring"]},{"ValueOpRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Data/DivisionRing.purs","end":[55,20]},"*"]}]},{"ReExportRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Data/DivisionRing.purs","end":[55,20]},{"exportSourceImportedFrom":["Data","Semiring"],"exportSourceDefinedIn":["Data","Semiring"]},{"ValueOpRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Data/DivisionRing.purs","end":[55,20]},"+"]}]},{"TypeClassRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Data/DivisionRing.purs","end":[55,20]},"DivisionRing"]},{"ValueRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Data/DivisionRing.purs","end":[55,20]},{"Ident":"recip"}]},{"ValueRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Data/DivisionRing.purs","end":[55,20]},{"Ident":"leftDiv"}]},{"ValueRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Data/DivisionRing.purs","end":[55,20]},{"Ident":"rightDiv"}]},{"ModuleRef":[{"start":[6,5],"name":"../../../support/bower_components/purescript-prelude/src/Data/DivisionRing.purs","end":[6,21]},["Data","Ring"]]},{"ModuleRef":[{"start":[7,5],"name":"../../../support/bower_components/purescript-prelude/src/Data/DivisionRing.purs","end":[7,25]},["Data","Semiring"]]},{"TypeInstanceRef":[{"start":[0,0],"name":"<generated>","end":[0,0]},{"Ident":"divisionringNumber"}]}],"efImports":[{"eiModule":["Prim"],"eiImportType":{"Implicit":[]},"eiImportedAs":["Prim"]},{"eiModule":["Prim"],"eiImportType":{"Implicit":[]},"eiImportedAs":null},{"eiModule":["Data","EuclideanRing"],"eiImportType":{"Explicit":[{"ValueOpRef":[{"start":[10,28],"name":"../../../support/bower_components/purescript-prelude/src/Data/DivisionRing.purs","end":[10,31]},"/"]}]},"eiImportedAs":null},{"eiModule":["Data","Ring"],"eiImportType":{"Explicit":[{"TypeClassRef":[{"start":[11,19],"name":"../../../support/bower_components/purescript-prelude/src/Data/DivisionRing.purs","end":[11,29]},"Ring"]},{"ValueRef":[{"start":[11,31],"name":"../../../support/bower_components/purescript-prelude/src/Data/DivisionRing.purs","end":[11,37]},{"Ident":"negate"}]},{"ValueRef":[{"start":[11,39],"name":"../../../support/bower_components/purescript-prelude/src/Data/DivisionRing.purs","end":[11,42]},{"Ident":"sub"}]}]},"eiImportedAs":null},{"eiModule":["Data","Semiring"],"eiImportType":{"Explicit":[{"TypeClassRef":[{"start":[12,23],"name":"../../../support/bower_components/purescript-prelude/src/Data/DivisionRing.purs","end":[12,37]},"Semiring"]},{"ValueRef":[{"start":[12,39],"name":"../../../support/bower_components/purescript-prelude/src/Data/DivisionRing.purs","end":[12,42]},{"Ident":"add"}]},{"ValueRef":[{"start":[12,44],"name":"../../../support/bower_components/purescript-prelude/src/Data/DivisionRing.purs","end":[12,47]},{"Ident":"mul"}]},{"ValueRef":[{"start":[12,49],"name":"../../../support/bower_components/purescript-prelude/src/Data/DivisionRing.purs","end":[12,52]},{"Ident":"one"}]},{"ValueRef":[{"start":[12,54],"name":"../../../support/bower_components/purescript-prelude/src/Data/DivisionRing.purs","end":[12,58]},{"Ident":"zero"}]},{"ValueOpRef":[{"start":[12,60],"name":"../../../support/bower_components/purescript-prelude/src/Data/DivisionRing.purs","end":[12,63]},"*"]},{"ValueOpRef":[{"start":[12,65],"name":"../../../support/bower_components/purescript-prelude/src/Data/DivisionRing.purs","end":[12,68]},"+"]}]},"eiImportedAs":null}],"efFixities":[],"efTypeFixities":[],"efDeclarations":[{"EDType":{"edTypeName":"DivisionRing","edTypeKind":{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"FunKind","contents":[{"annotation":[{"start":[30,14],"name":"../../../support/bower_components/purescript-prelude/src/Data/DivisionRing.purs","end":[30,16]},[]],"tag":"NamedKind","contents":[["Prim"],"Type"]},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"NamedKind","contents":[["Prim"],"Type"]}]},"edTypeDeclarationKind":"TypeSynonym"}},{"EDTypeSynonym":{"edTypeSynonymName":"DivisionRing","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":["recip",{"annotation":[{"start":[30,12],"name":"../../../support/bower_components/purescript-prelude/src/Data/DivisionRing.purs","end":[30,18]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[30,12],"name":"../../../support/bower_components/purescript-prelude/src/Data/DivisionRing.purs","end":[30,18]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[30,14],"name":"../../../support/bower_components/purescript-prelude/src/Data/DivisionRing.purs","end":[30,16]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[30,12],"name":"../../../support/bower_components/purescript-prelude/src/Data/DivisionRing.purs","end":[30,13]},[]],"tag":"TypeVar","contents":"a"}]},{"annotation":[{"start":[30,17],"name":"../../../support/bower_components/purescript-prelude/src/Data/DivisionRing.purs","end":[30,18]},[]],"tag":"TypeVar","contents":"a"}]},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"RCons","contents":["Ring0",{"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","Ring"],"Ring"]},{"annotation":[{"start":[29,12],"name":"../../../support/bower_components/purescript-prelude/src/Data/DivisionRing.purs","end":[29,13]},[]],"tag":"TypeVar","contents":"a"}]}]},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"REmpty"}]}]}]}}},{"EDClass":{"edClassName":"DivisionRing","edClassTypeArguments":[["a",null]],"edClassMembers":[[{"Ident":"recip"},{"annotation":[{"start":[30,12],"name":"../../../support/bower_components/purescript-prelude/src/Data/DivisionRing.purs","end":[30,18]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[30,12],"name":"../../../support/bower_components/purescript-prelude/src/Data/DivisionRing.purs","end":[30,18]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[30,14],"name":"../../../support/bower_components/purescript-prelude/src/Data/DivisionRing.purs","end":[30,16]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[30,12],"name":"../../../support/bower_components/purescript-prelude/src/Data/DivisionRing.purs","end":[30,13]},[]],"tag":"TypeVar","contents":"a"}]},{"annotation":[{"start":[30,17],"name":"../../../support/bower_components/purescript-prelude/src/Data/DivisionRing.purs","end":[30,18]},[]],"tag":"TypeVar","contents":"a"}]}]],"edClassConstraints":[{"constraintAnn":[{"start":[29,7],"name":"../../../support/bower_components/purescript-prelude/src/Data/DivisionRing.purs","end":[29,13]},[]],"constraintClass":[["Data","Ring"],"Ring"],"constraintArgs":[{"annotation":[{"start":[29,12],"name":"../../../support/bower_components/purescript-prelude/src/Data/DivisionRing.purs","end":[29,13]},[]],"tag":"TypeVar","contents":"a"}],"constraintData":null}],"edFunctionalDependencies":[],"edIsEmpty":false}},{"EDValue":{"edValueName":{"Ident":"recip"},"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":[["Data","DivisionRing"],"DivisionRing"],"constraintArgs":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeVar","contents":"a"}],"constraintData":null},{"annotation":[{"start":[30,12],"name":"../../../support/bower_components/purescript-prelude/src/Data/DivisionRing.purs","end":[30,18]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[30,12],"name":"../../../support/bower_components/purescript-prelude/src/Data/DivisionRing.purs","end":[30,18]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[30,14],"name":"../../../support/bower_components/purescript-prelude/src/Data/DivisionRing.purs","end":[30,16]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[30,12],"name":"../../../support/bower_components/purescript-prelude/src/Data/DivisionRing.purs","end":[30,13]},[]],"tag":"TypeVar","contents":"a"}]},{"annotation":[{"start":[30,17],"name":"../../../support/bower_components/purescript-prelude/src/Data/DivisionRing.purs","end":[30,18]},[]],"tag":"TypeVar","contents":"a"}]}]},0]}}},{"EDValue":{"edValueName":{"Ident":"leftDiv"},"edValueType":{"annotation":[{"start":[40,12],"name":"../../../support/bower_components/purescript-prelude/src/Data/DivisionRing.purs","end":[40,51]},[]],"tag":"ForAll","contents":["a",{"annotation":[{"start":[40,22],"name":"../../../support/bower_components/purescript-prelude/src/Data/DivisionRing.purs","end":[40,51]},[]],"tag":"ConstrainedType","contents":[{"constraintAnn":[{"start":[40,22],"name":"../../../support/bower_components/purescript-prelude/src/Data/DivisionRing.purs","end":[40,36]},[]],"constraintClass":[["Data","DivisionRing"],"DivisionRing"],"constraintArgs":[{"annotation":[{"start":[40,35],"name":"../../../support/bower_components/purescript-prelude/src/Data/DivisionRing.purs","end":[40,36]},[]],"tag":"TypeVar","contents":"a"}],"constraintData":null},{"annotation":[{"start":[40,40],"name":"../../../support/bower_components/purescript-prelude/src/Data/DivisionRing.purs","end":[40,51]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[40,40],"name":"../../../support/bower_components/purescript-prelude/src/Data/DivisionRing.purs","end":[40,51]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[40,42],"name":"../../../support/bower_components/purescript-prelude/src/Data/DivisionRing.purs","end":[40,44]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[40,40],"name":"../../../support/bower_components/purescript-prelude/src/Data/DivisionRing.purs","end":[40,41]},[]],"tag":"TypeVar","contents":"a"}]},{"annotation":[{"start":[40,45],"name":"../../../support/bower_components/purescript-prelude/src/Data/DivisionRing.purs","end":[40,51]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[40,45],"name":"../../../support/bower_components/purescript-prelude/src/Data/DivisionRing.purs","end":[40,51]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[40,47],"name":"../../../support/bower_components/purescript-prelude/src/Data/DivisionRing.purs","end":[40,49]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[40,45],"name":"../../../support/bower_components/purescript-prelude/src/Data/DivisionRing.purs","end":[40,46]},[]],"tag":"TypeVar","contents":"a"}]},{"annotation":[{"start":[40,50],"name":"../../../support/bower_components/purescript-prelude/src/Data/DivisionRing.purs","end":[40,51]},[]],"tag":"TypeVar","contents":"a"}]}]}]},3]}}},{"EDValue":{"edValueName":{"Ident":"rightDiv"},"edValueType":{"annotation":[{"start":[51,13],"name":"../../../support/bower_components/purescript-prelude/src/Data/DivisionRing.purs","end":[51,52]},[]],"tag":"ForAll","contents":["a",{"annotation":[{"start":[51,23],"name":"../../../support/bower_components/purescript-prelude/src/Data/DivisionRing.purs","end":[51,52]},[]],"tag":"ConstrainedType","contents":[{"constraintAnn":[{"start":[51,23],"name":"../../../support/bower_components/purescript-prelude/src/Data/DivisionRing.purs","end":[51,37]},[]],"constraintClass":[["Data","DivisionRing"],"DivisionRing"],"constraintArgs":[{"annotation":[{"start":[51,36],"name":"../../../support/bower_components/purescript-prelude/src/Data/DivisionRing.purs","end":[51,37]},[]],"tag":"TypeVar","contents":"a"}],"constraintData":null},{"annotation":[{"start":[51,41],"name":"../../../support/bower_components/purescript-prelude/src/Data/DivisionRing.purs","end":[51,52]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[51,41],"name":"../../../support/bower_components/purescript-prelude/src/Data/DivisionRing.purs","end":[51,52]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[51,43],"name":"../../../support/bower_components/purescript-prelude/src/Data/DivisionRing.purs","end":[51,45]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[51,41],"name":"../../../support/bower_components/purescript-prelude/src/Data/DivisionRing.purs","end":[51,42]},[]],"tag":"TypeVar","contents":"a"}]},{"annotation":[{"start":[51,46],"name":"../../../support/bower_components/purescript-prelude/src/Data/DivisionRing.purs","end":[51,52]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[51,46],"name":"../../../support/bower_components/purescript-prelude/src/Data/DivisionRing.purs","end":[51,52]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[51,48],"name":"../../../support/bower_components/purescript-prelude/src/Data/DivisionRing.purs","end":[51,50]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[51,46],"name":"../../../support/bower_components/purescript-prelude/src/Data/DivisionRing.purs","end":[51,47]},[]],"tag":"TypeVar","contents":"a"}]},{"annotation":[{"start":[51,51],"name":"../../../support/bower_components/purescript-prelude/src/Data/DivisionRing.purs","end":[51,52]},[]],"tag":"TypeVar","contents":"a"}]}]}]},1]}}},{"EDInstance":{"edInstanceClassName":[["Data","DivisionRing"],"DivisionRing"],"edInstanceName":{"Ident":"divisionringNumber"},"edInstanceTypes":[{"annotation":[{"start":[54,45],"name":"../../../support/bower_components/purescript-prelude/src/Data/DivisionRing.purs","end":[54,51]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Number"]}],"edInstanceConstraints":[],"edInstanceChain":[[["Data","DivisionRing"],{"Ident":"divisionringNumber"}]],"edInstanceChainIndex":0}}],"efSourceSpan":{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Data/DivisionRing.purs","end":[55,20]}} \ No newline at end of file
diff --git a/tests/purs/publish/basic-example/output/Data.Eq/externs.json b/tests/purs/publish/basic-example/output/Data.Eq/externs.json
deleted file mode 100644
index fff9594..0000000
--- a/tests/purs/publish/basic-example/output/Data.Eq/externs.json
+++ /dev/null
@@ -1 +0,0 @@
-{"efVersion":"0.13.4","efModuleName":["Data","Eq"],"efExports":[{"TypeClassRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","end":[99,61]},"Eq"]},{"ValueRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","end":[99,61]},{"Ident":"eq"}]},{"ValueOpRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","end":[99,61]},"=="]},{"ValueRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","end":[99,61]},{"Ident":"notEq"}]},{"ValueOpRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","end":[99,61]},"/="]},{"TypeClassRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","end":[99,61]},"Eq1"]},{"ValueRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","end":[99,61]},{"Ident":"eq1"}]},{"ValueRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","end":[99,61]},{"Ident":"notEq1"}]},{"TypeClassRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","end":[99,61]},"EqRecord"]},{"ValueRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","end":[99,61]},{"Ident":"eqRecord"}]},{"TypeInstanceRef":[{"start":[0,0],"name":"<generated>","end":[0,0]},{"Ident":"eqBoolean"}]},{"TypeInstanceRef":[{"start":[0,0],"name":"<generated>","end":[0,0]},{"Ident":"eqInt"}]},{"TypeInstanceRef":[{"start":[0,0],"name":"<generated>","end":[0,0]},{"Ident":"eqNumber"}]},{"TypeInstanceRef":[{"start":[0,0],"name":"<generated>","end":[0,0]},{"Ident":"eqChar"}]},{"TypeInstanceRef":[{"start":[0,0],"name":"<generated>","end":[0,0]},{"Ident":"eqString"}]},{"TypeInstanceRef":[{"start":[0,0],"name":"<generated>","end":[0,0]},{"Ident":"eqUnit"}]},{"TypeInstanceRef":[{"start":[0,0],"name":"<generated>","end":[0,0]},{"Ident":"eqVoid"}]},{"TypeInstanceRef":[{"start":[0,0],"name":"<generated>","end":[0,0]},{"Ident":"eqArray"}]},{"TypeInstanceRef":[{"start":[0,0],"name":"<generated>","end":[0,0]},{"Ident":"eqRec"}]},{"TypeInstanceRef":[{"start":[0,0],"name":"<generated>","end":[0,0]},{"Ident":"eq1Array"}]},{"TypeInstanceRef":[{"start":[0,0],"name":"<generated>","end":[0,0]},{"Ident":"eqRowNil"}]},{"TypeInstanceRef":[{"start":[0,0],"name":"<generated>","end":[0,0]},{"Ident":"eqRowCons"}]}],"efImports":[{"eiModule":["Prim"],"eiImportType":{"Implicit":[]},"eiImportedAs":["Prim"]},{"eiModule":["Prim"],"eiImportType":{"Implicit":[]},"eiImportedAs":null},{"eiModule":["Data","HeytingAlgebra"],"eiImportType":{"Explicit":[{"ValueOpRef":[{"start":[7,29],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","end":[7,33]},"&&"]}]},"eiImportedAs":null},{"eiModule":["Data","Symbol"],"eiImportType":{"Explicit":[{"TypeClassRef":[{"start":[8,21],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","end":[8,35]},"IsSymbol"]},{"TypeRef":[{"start":[8,37],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","end":[8,47]},"SProxy",null]},{"ValueRef":[{"start":[8,49],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","end":[8,62]},{"Ident":"reflectSymbol"}]}]},"eiImportedAs":null},{"eiModule":["Data","Unit"],"eiImportType":{"Explicit":[{"TypeRef":[{"start":[9,19],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","end":[9,23]},"Unit",[]]}]},"eiImportedAs":null},{"eiModule":["Data","Void"],"eiImportType":{"Explicit":[{"TypeRef":[{"start":[10,19],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","end":[10,23]},"Void",[]]}]},"eiImportedAs":null},{"eiModule":["Prim","Row"],"eiImportType":{"Implicit":[]},"eiImportedAs":["Row"]},{"eiModule":["Prim","RowList"],"eiImportType":{"Implicit":[]},"eiImportedAs":["RL"]},{"eiModule":["Record","Unsafe"],"eiImportType":{"Explicit":[{"ValueRef":[{"start":[13,23],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","end":[13,32]},{"Ident":"unsafeGet"}]}]},"eiImportedAs":null},{"eiModule":["Type","Data","RowList"],"eiImportType":{"Explicit":[{"TypeRef":[{"start":[14,27],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","end":[14,38]},"RLProxy",null]}]},"eiImportedAs":null}],"efFixities":[{"efAssociativity":"infix","efPrecedence":4,"efOperator":"==","efAlias":[["Data","Eq"],{"Left":{"Ident":"eq"}}]},{"efAssociativity":"infix","efPrecedence":4,"efOperator":"/=","efAlias":[["Data","Eq"],{"Left":{"Ident":"notEq"}}]}],"efTypeFixities":[],"efDeclarations":[{"EDType":{"edTypeName":"Eq","edTypeKind":{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"FunKind","contents":[{"annotation":[{"start":[29,11],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","end":[29,13]},[]],"tag":"NamedKind","contents":[["Prim"],"Type"]},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"NamedKind","contents":[["Prim"],"Type"]}]},"edTypeDeclarationKind":"TypeSynonym"}},{"EDTypeSynonym":{"edTypeSynonymName":"Eq","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":["eq",{"annotation":[{"start":[29,9],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","end":[29,26]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[29,9],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","end":[29,26]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[29,11],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","end":[29,13]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[29,9],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","end":[29,10]},[]],"tag":"TypeVar","contents":"a"}]},{"annotation":[{"start":[29,14],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","end":[29,26]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[29,14],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","end":[29,26]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[29,16],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","end":[29,18]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[29,14],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","end":[29,15]},[]],"tag":"TypeVar","contents":"a"}]},{"annotation":[{"start":[29,19],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","end":[29,26]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Boolean"]}]}]},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"REmpty"}]}]}}},{"EDClass":{"edClassName":"Eq","edClassTypeArguments":[["a",null]],"edClassMembers":[[{"Ident":"eq"},{"annotation":[{"start":[29,9],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","end":[29,26]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[29,9],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","end":[29,26]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[29,11],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","end":[29,13]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[29,9],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","end":[29,10]},[]],"tag":"TypeVar","contents":"a"}]},{"annotation":[{"start":[29,14],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","end":[29,26]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[29,14],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","end":[29,26]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[29,16],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","end":[29,18]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[29,14],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","end":[29,15]},[]],"tag":"TypeVar","contents":"a"}]},{"annotation":[{"start":[29,19],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","end":[29,26]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Boolean"]}]}]}]],"edClassConstraints":[],"edFunctionalDependencies":[],"edIsEmpty":false}},{"EDValue":{"edValueName":{"Ident":"eq"},"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":[["Data","Eq"],"Eq"],"constraintArgs":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeVar","contents":"a"}],"constraintData":null},{"annotation":[{"start":[29,9],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","end":[29,26]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[29,9],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","end":[29,26]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[29,11],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","end":[29,13]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[29,9],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","end":[29,10]},[]],"tag":"TypeVar","contents":"a"}]},{"annotation":[{"start":[29,14],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","end":[29,26]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[29,14],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","end":[29,26]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[29,16],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","end":[29,18]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[29,14],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","end":[29,15]},[]],"tag":"TypeVar","contents":"a"}]},{"annotation":[{"start":[29,19],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","end":[29,26]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Boolean"]}]}]}]},16]}}},{"EDValue":{"edValueName":{"Ident":"notEq"},"edValueType":{"annotation":[{"start":[35,10],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","end":[35,45]},[]],"tag":"ForAll","contents":["a",{"annotation":[{"start":[35,20],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","end":[35,45]},[]],"tag":"ConstrainedType","contents":[{"constraintAnn":[{"start":[35,20],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","end":[35,24]},[]],"constraintClass":[["Data","Eq"],"Eq"],"constraintArgs":[{"annotation":[{"start":[35,23],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","end":[35,24]},[]],"tag":"TypeVar","contents":"a"}],"constraintData":null},{"annotation":[{"start":[35,28],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","end":[35,45]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[35,28],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","end":[35,45]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[35,30],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","end":[35,32]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[35,28],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","end":[35,29]},[]],"tag":"TypeVar","contents":"a"}]},{"annotation":[{"start":[35,33],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","end":[35,45]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[35,33],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","end":[35,45]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[35,35],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","end":[35,37]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[35,33],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","end":[35,34]},[]],"tag":"TypeVar","contents":"a"}]},{"annotation":[{"start":[35,38],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","end":[35,45]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Boolean"]}]}]}]},36]}}},{"EDType":{"edTypeName":"Eq1","edTypeKind":{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"FunKind","contents":[{"annotation":[{"start":[72,28],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","end":[72,31]},[]],"tag":"FunKind","contents":[{"annotation":[{"start":[72,20],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","end":[72,24]},[]],"tag":"NamedKind","contents":[["Prim"],"Type"]},{"annotation":[{"start":[72,32],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","end":[72,34]},[]],"tag":"NamedKind","contents":[["Prim"],"Type"]}]},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"NamedKind","contents":[["Prim"],"Type"]}]},"edTypeDeclarationKind":"TypeSynonym"}},{"EDTypeSynonym":{"edTypeSynonymName":"Eq1","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":["eq1",{"annotation":[{"start":[72,10],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","end":[72,49]},[]],"tag":"ForAll","contents":["a",{"annotation":[{"start":[72,20],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","end":[72,49]},[]],"tag":"ConstrainedType","contents":[{"constraintAnn":[{"start":[72,20],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","end":[72,24]},[]],"constraintClass":[["Data","Eq"],"Eq"],"constraintArgs":[{"annotation":[{"start":[72,23],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","end":[72,24]},[]],"tag":"TypeVar","contents":"a"}],"constraintData":null},{"annotation":[{"start":[72,28],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","end":[72,49]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[72,28],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","end":[72,49]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[72,32],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","end":[72,34]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[72,28],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","end":[72,31]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[72,28],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","end":[72,29]},[]],"tag":"TypeVar","contents":"f"},{"annotation":[{"start":[72,30],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","end":[72,31]},[]],"tag":"TypeVar","contents":"a"}]}]},{"annotation":[{"start":[72,35],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","end":[72,49]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[72,35],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","end":[72,49]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[72,39],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","end":[72,41]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[72,35],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","end":[72,38]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[72,35],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","end":[72,36]},[]],"tag":"TypeVar","contents":"f"},{"annotation":[{"start":[72,37],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","end":[72,38]},[]],"tag":"TypeVar","contents":"a"}]}]},{"annotation":[{"start":[72,42],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","end":[72,49]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Boolean"]}]}]}]},null]},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"REmpty"}]}]}}},{"EDClass":{"edClassName":"Eq1","edClassTypeArguments":[["f",null]],"edClassMembers":[[{"Ident":"eq1"},{"annotation":[{"start":[72,10],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","end":[72,49]},[]],"tag":"ForAll","contents":["a",{"annotation":[{"start":[72,20],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","end":[72,49]},[]],"tag":"ConstrainedType","contents":[{"constraintAnn":[{"start":[72,20],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","end":[72,24]},[]],"constraintClass":[["Data","Eq"],"Eq"],"constraintArgs":[{"annotation":[{"start":[72,23],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","end":[72,24]},[]],"tag":"TypeVar","contents":"a"}],"constraintData":null},{"annotation":[{"start":[72,28],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","end":[72,49]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[72,28],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","end":[72,49]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[72,32],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","end":[72,34]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[72,28],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","end":[72,31]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[72,28],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","end":[72,29]},[]],"tag":"TypeVar","contents":"f"},{"annotation":[{"start":[72,30],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","end":[72,31]},[]],"tag":"TypeVar","contents":"a"}]}]},{"annotation":[{"start":[72,35],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","end":[72,49]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[72,35],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","end":[72,49]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[72,39],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","end":[72,41]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[72,35],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","end":[72,38]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[72,35],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","end":[72,36]},[]],"tag":"TypeVar","contents":"f"},{"annotation":[{"start":[72,37],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","end":[72,38]},[]],"tag":"TypeVar","contents":"a"}]}]},{"annotation":[{"start":[72,42],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","end":[72,49]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Boolean"]}]}]}]},null]}]],"edClassConstraints":[],"edFunctionalDependencies":[],"edIsEmpty":false}},{"EDValue":{"edValueName":{"Ident":"eq1"},"edValueType":{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"ForAll","contents":["f",{"annotation":[{"start":[72,10],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","end":[72,49]},[]],"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","Eq"],"Eq1"],"constraintArgs":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeVar","contents":"f"}],"constraintData":null},{"annotation":[{"start":[72,20],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","end":[72,49]},[]],"tag":"ConstrainedType","contents":[{"constraintAnn":[{"start":[72,20],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","end":[72,24]},[]],"constraintClass":[["Data","Eq"],"Eq"],"constraintArgs":[{"annotation":[{"start":[72,23],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","end":[72,24]},[]],"tag":"TypeVar","contents":"a"}],"constraintData":null},{"annotation":[{"start":[72,28],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","end":[72,49]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[72,28],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","end":[72,49]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[72,32],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","end":[72,34]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[72,28],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","end":[72,31]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[72,28],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","end":[72,29]},[]],"tag":"TypeVar","contents":"f"},{"annotation":[{"start":[72,30],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","end":[72,31]},[]],"tag":"TypeVar","contents":"a"}]}]},{"annotation":[{"start":[72,35],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","end":[72,49]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[72,35],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","end":[72,49]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[72,39],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","end":[72,41]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[72,35],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","end":[72,38]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[72,35],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","end":[72,36]},[]],"tag":"TypeVar","contents":"f"},{"annotation":[{"start":[72,37],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","end":[72,38]},[]],"tag":"TypeVar","contents":"a"}]}]},{"annotation":[{"start":[72,42],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","end":[72,49]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Boolean"]}]}]}]}]},14]},15]}}},{"EDValue":{"edValueName":{"Ident":"notEq1"},"edValueType":{"annotation":[{"start":[77,11],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","end":[77,61]},[]],"tag":"ForAll","contents":["a",{"annotation":[{"start":[77,18],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","end":[77,61]},[]],"tag":"ForAll","contents":["f",{"annotation":[{"start":[77,23],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","end":[77,61]},[]],"tag":"ConstrainedType","contents":[{"constraintAnn":[{"start":[77,23],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","end":[77,28]},[]],"constraintClass":[["Data","Eq"],"Eq1"],"constraintArgs":[{"annotation":[{"start":[77,27],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","end":[77,28]},[]],"tag":"TypeVar","contents":"f"}],"constraintData":null},{"annotation":[{"start":[77,32],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","end":[77,61]},[]],"tag":"ConstrainedType","contents":[{"constraintAnn":[{"start":[77,32],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","end":[77,36]},[]],"constraintClass":[["Data","Eq"],"Eq"],"constraintArgs":[{"annotation":[{"start":[77,35],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","end":[77,36]},[]],"tag":"TypeVar","contents":"a"}],"constraintData":null},{"annotation":[{"start":[77,40],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","end":[77,61]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[77,40],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","end":[77,61]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[77,44],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","end":[77,46]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[77,40],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","end":[77,43]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[77,40],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","end":[77,41]},[]],"tag":"TypeVar","contents":"f"},{"annotation":[{"start":[77,42],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","end":[77,43]},[]],"tag":"TypeVar","contents":"a"}]}]},{"annotation":[{"start":[77,47],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","end":[77,61]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[77,47],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","end":[77,61]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[77,51],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","end":[77,53]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[77,47],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","end":[77,50]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[77,47],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","end":[77,48]},[]],"tag":"TypeVar","contents":"f"},{"annotation":[{"start":[77,49],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","end":[77,50]},[]],"tag":"TypeVar","contents":"a"}]}]},{"annotation":[{"start":[77,54],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","end":[77,61]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Boolean"]}]}]}]}]},38]},39]}}},{"EDType":{"edTypeName":"EqRecord","edTypeKind":{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"FunKind","contents":[{"annotation":[{"start":[83,15],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","end":[83,22]},[]],"tag":"NamedKind","contents":[["Prim","RowList"],"RowList"]},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"FunKind","contents":[{"annotation":[{"start":[83,34],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","end":[83,40]},[]],"tag":"Row","contents":{"annotation":[{"start":[83,34],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","end":[83,40]},[]],"tag":"NamedKind","contents":[["Prim"],"Type"]}},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"NamedKind","contents":[["Prim"],"Type"]}]}]},"edTypeDeclarationKind":"TypeSynonym"}},{"EDTypeSynonym":{"edTypeSynonymName":"EqRecord","edTypeSynonymArguments":[["rowlist",null],["row",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":["eqRecord",{"annotation":[{"start":[83,15],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","end":[83,69]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[83,15],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","end":[83,69]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[83,31],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","end":[83,33]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[83,15],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","end":[83,30]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[83,15],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","end":[83,22]},[]],"tag":"TypeConstructor","contents":[["Type","Data","RowList"],"RLProxy"]},{"annotation":[{"start":[83,23],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","end":[83,30]},[]],"tag":"TypeVar","contents":"rowlist"}]}]},{"annotation":[{"start":[83,34],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","end":[83,69]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[83,34],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","end":[83,69]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[83,45],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","end":[83,47]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[83,34],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","end":[83,44]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[83,34],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","end":[83,40]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Record"]},{"annotation":[{"start":[83,41],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","end":[83,44]},[]],"tag":"TypeVar","contents":"row"}]}]},{"annotation":[{"start":[83,48],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","end":[83,69]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[83,48],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","end":[83,69]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[83,59],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","end":[83,61]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[83,48],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","end":[83,58]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[83,48],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","end":[83,54]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Record"]},{"annotation":[{"start":[83,55],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","end":[83,58]},[]],"tag":"TypeVar","contents":"row"}]}]},{"annotation":[{"start":[83,62],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","end":[83,69]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Boolean"]}]}]}]},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"REmpty"}]}]}}},{"EDClass":{"edClassName":"EqRecord","edClassTypeArguments":[["rowlist",null],["row",null]],"edClassMembers":[[{"Ident":"eqRecord"},{"annotation":[{"start":[83,15],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","end":[83,69]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[83,15],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","end":[83,69]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[83,31],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","end":[83,33]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[83,15],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","end":[83,30]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[83,15],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","end":[83,22]},[]],"tag":"TypeConstructor","contents":[["Type","Data","RowList"],"RLProxy"]},{"annotation":[{"start":[83,23],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","end":[83,30]},[]],"tag":"TypeVar","contents":"rowlist"}]}]},{"annotation":[{"start":[83,34],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","end":[83,69]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[83,34],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","end":[83,69]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[83,45],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","end":[83,47]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[83,34],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","end":[83,44]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[83,34],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","end":[83,40]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Record"]},{"annotation":[{"start":[83,41],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","end":[83,44]},[]],"tag":"TypeVar","contents":"row"}]}]},{"annotation":[{"start":[83,48],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","end":[83,69]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[83,48],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","end":[83,69]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[83,59],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","end":[83,61]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[83,48],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","end":[83,58]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[83,48],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","end":[83,54]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Record"]},{"annotation":[{"start":[83,55],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","end":[83,58]},[]],"tag":"TypeVar","contents":"row"}]}]},{"annotation":[{"start":[83,62],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","end":[83,69]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Boolean"]}]}]}]}]],"edClassConstraints":[],"edFunctionalDependencies":[],"edIsEmpty":false}},{"EDValue":{"edValueName":{"Ident":"eqRecord"},"edValueType":{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"ForAll","contents":["rowlist",{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"ForAll","contents":["row",{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"ConstrainedType","contents":[{"constraintAnn":[{"start":[0,0],"name":"","end":[0,0]},[]],"constraintClass":[["Data","Eq"],"EqRecord"],"constraintArgs":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeVar","contents":"rowlist"},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeVar","contents":"row"}],"constraintData":null},{"annotation":[{"start":[83,15],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","end":[83,69]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[83,15],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","end":[83,69]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[83,31],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","end":[83,33]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[83,15],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","end":[83,30]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[83,15],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","end":[83,22]},[]],"tag":"TypeConstructor","contents":[["Type","Data","RowList"],"RLProxy"]},{"annotation":[{"start":[83,23],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","end":[83,30]},[]],"tag":"TypeVar","contents":"rowlist"}]}]},{"annotation":[{"start":[83,34],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","end":[83,69]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[83,34],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","end":[83,69]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[83,45],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","end":[83,47]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[83,34],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","end":[83,44]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[83,34],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","end":[83,40]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Record"]},{"annotation":[{"start":[83,41],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","end":[83,44]},[]],"tag":"TypeVar","contents":"row"}]}]},{"annotation":[{"start":[83,48],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","end":[83,69]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[83,48],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","end":[83,69]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[83,59],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","end":[83,61]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[83,48],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","end":[83,58]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[83,48],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","end":[83,54]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Record"]},{"annotation":[{"start":[83,55],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","end":[83,58]},[]],"tag":"TypeVar","contents":"row"}]}]},{"annotation":[{"start":[83,62],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","end":[83,69]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Boolean"]}]}]}]}]},3]},4]}}},{"EDInstance":{"edInstanceClassName":[["Data","Eq"],"Eq"],"edInstanceName":{"Ident":"eqBoolean"},"edInstanceTypes":[{"annotation":[{"start":[40,26],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","end":[40,33]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Boolean"]}],"edInstanceConstraints":[],"edInstanceChain":[[["Data","Eq"],{"Ident":"eqBoolean"}]],"edInstanceChainIndex":0}},{"EDInstance":{"edInstanceClassName":[["Data","Eq"],"Eq"],"edInstanceName":{"Ident":"eqInt"},"edInstanceTypes":[{"annotation":[{"start":[43,22],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","end":[43,25]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Int"]}],"edInstanceConstraints":[],"edInstanceChain":[[["Data","Eq"],{"Ident":"eqInt"}]],"edInstanceChainIndex":0}},{"EDInstance":{"edInstanceClassName":[["Data","Eq"],"Eq"],"edInstanceName":{"Ident":"eqNumber"},"edInstanceTypes":[{"annotation":[{"start":[46,25],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","end":[46,31]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Number"]}],"edInstanceConstraints":[],"edInstanceChain":[[["Data","Eq"],{"Ident":"eqNumber"}]],"edInstanceChainIndex":0}},{"EDInstance":{"edInstanceClassName":[["Data","Eq"],"Eq"],"edInstanceName":{"Ident":"eqChar"},"edInstanceTypes":[{"annotation":[{"start":[49,23],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","end":[49,27]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Char"]}],"edInstanceConstraints":[],"edInstanceChain":[[["Data","Eq"],{"Ident":"eqChar"}]],"edInstanceChainIndex":0}},{"EDInstance":{"edInstanceClassName":[["Data","Eq"],"Eq"],"edInstanceName":{"Ident":"eqString"},"edInstanceTypes":[{"annotation":[{"start":[52,25],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","end":[52,31]},[]],"tag":"TypeConstructor","contents":[["Prim"],"String"]}],"edInstanceConstraints":[],"edInstanceChain":[[["Data","Eq"],{"Ident":"eqString"}]],"edInstanceChainIndex":0}},{"EDInstance":{"edInstanceClassName":[["Data","Eq"],"Eq"],"edInstanceName":{"Ident":"eqUnit"},"edInstanceTypes":[{"annotation":[{"start":[55,23],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","end":[55,27]},[]],"tag":"TypeConstructor","contents":[["Data","Unit"],"Unit"]}],"edInstanceConstraints":[],"edInstanceChain":[[["Data","Eq"],{"Ident":"eqUnit"}]],"edInstanceChainIndex":0}},{"EDInstance":{"edInstanceClassName":[["Data","Eq"],"Eq"],"edInstanceName":{"Ident":"eqVoid"},"edInstanceTypes":[{"annotation":[{"start":[58,23],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","end":[58,27]},[]],"tag":"TypeConstructor","contents":[["Data","Void"],"Void"]}],"edInstanceConstraints":[],"edInstanceChain":[[["Data","Eq"],{"Ident":"eqVoid"}]],"edInstanceChainIndex":0}},{"EDInstance":{"edInstanceClassName":[["Data","Eq"],"Eq"],"edInstanceName":{"Ident":"eqArray"},"edInstanceTypes":[{"annotation":[{"start":[61,33],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","end":[61,40]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[61,33],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","end":[61,38]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Array"]},{"annotation":[{"start":[61,39],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","end":[61,40]},[]],"tag":"TypeVar","contents":"a"}]}],"edInstanceConstraints":[{"constraintAnn":[{"start":[61,21],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","end":[61,25]},[]],"constraintClass":[["Data","Eq"],"Eq"],"constraintArgs":[{"annotation":[{"start":[61,24],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","end":[61,25]},[]],"tag":"TypeVar","contents":"a"}],"constraintData":null}],"edInstanceChain":[[["Data","Eq"],{"Ident":"eqArray"}]],"edInstanceChainIndex":0}},{"EDInstance":{"edInstanceClassName":[["Data","Eq"],"Eq"],"edInstanceName":{"Ident":"eqRec"},"edInstanceTypes":[{"annotation":[{"start":[64,69],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","end":[64,79]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[64,69],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","end":[64,75]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Record"]},{"annotation":[{"start":[64,76],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","end":[64,79]},[]],"tag":"TypeVar","contents":"row"}]}],"edInstanceConstraints":[{"constraintAnn":[{"start":[64,20],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","end":[64,41]},[]],"constraintClass":[["Prim","RowList"],"RowToList"],"constraintArgs":[{"annotation":[{"start":[64,33],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","end":[64,36]},[]],"tag":"TypeVar","contents":"row"},{"annotation":[{"start":[64,37],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","end":[64,41]},[]],"tag":"TypeVar","contents":"list"}],"constraintData":null},{"constraintAnn":[{"start":[64,43],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","end":[64,60]},[]],"constraintClass":[["Data","Eq"],"EqRecord"],"constraintArgs":[{"annotation":[{"start":[64,52],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","end":[64,56]},[]],"tag":"TypeVar","contents":"list"},{"annotation":[{"start":[64,57],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","end":[64,60]},[]],"tag":"TypeVar","contents":"row"}],"constraintData":null}],"edInstanceChain":[[["Data","Eq"],{"Ident":"eqRec"}]],"edInstanceChainIndex":0}},{"EDInstance":{"edInstanceClassName":[["Data","Eq"],"Eq1"],"edInstanceName":{"Ident":"eq1Array"},"edInstanceTypes":[{"annotation":[{"start":[74,26],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","end":[74,31]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Array"]}],"edInstanceConstraints":[],"edInstanceChain":[[["Data","Eq"],{"Ident":"eq1Array"}]],"edInstanceChainIndex":0}},{"EDInstance":{"edInstanceClassName":[["Data","Eq"],"EqRecord"],"edInstanceName":{"Ident":"eqRowNil"},"edInstanceTypes":[{"annotation":[{"start":[85,31],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","end":[85,37]},[]],"tag":"TypeConstructor","contents":[["Prim","RowList"],"Nil"]},{"annotation":[{"start":[85,38],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","end":[85,41]},[]],"tag":"TypeVar","contents":"row"}],"edInstanceConstraints":[],"edInstanceChain":[[["Data","Eq"],{"Ident":"eqRowNil"}]],"edInstanceChainIndex":0}},{"EDInstance":{"edInstanceClassName":[["Data","Eq"],"EqRecord"],"edInstanceName":{"Ident":"eqRowCons"},"edInstanceTypes":[{"annotation":[{"start":[94,18],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","end":[94,47]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[94,18],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","end":[94,35]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[94,18],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","end":[94,29]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[94,18],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","end":[94,25]},[]],"tag":"TypeConstructor","contents":[["Prim","RowList"],"Cons"]},{"annotation":[{"start":[94,26],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","end":[94,29]},[]],"tag":"TypeVar","contents":"key"}]},{"annotation":[{"start":[94,30],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","end":[94,35]},[]],"tag":"TypeVar","contents":"focus"}]},{"annotation":[{"start":[94,36],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","end":[94,47]},[]],"tag":"TypeVar","contents":"rowlistTail"}]},{"annotation":[{"start":[94,49],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","end":[94,52]},[]],"tag":"TypeVar","contents":"row"}],"edInstanceConstraints":[{"constraintAnn":[{"start":[89,10],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","end":[89,34]},[]],"constraintClass":[["Data","Eq"],"EqRecord"],"constraintArgs":[{"annotation":[{"start":[89,19],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","end":[89,30]},[]],"tag":"TypeVar","contents":"rowlistTail"},{"annotation":[{"start":[89,31],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","end":[89,34]},[]],"tag":"TypeVar","contents":"row"}],"constraintData":null},{"constraintAnn":[{"start":[90,10],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","end":[90,40]},[]],"constraintClass":[["Prim","Row"],"Cons"],"constraintArgs":[{"annotation":[{"start":[90,19],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","end":[90,22]},[]],"tag":"TypeVar","contents":"key"},{"annotation":[{"start":[90,23],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","end":[90,28]},[]],"tag":"TypeVar","contents":"focus"},{"annotation":[{"start":[90,29],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","end":[90,36]},[]],"tag":"TypeVar","contents":"rowTail"},{"annotation":[{"start":[90,37],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","end":[90,40]},[]],"tag":"TypeVar","contents":"row"}],"constraintData":null},{"constraintAnn":[{"start":[91,10],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","end":[91,22]},[]],"constraintClass":[["Data","Symbol"],"IsSymbol"],"constraintArgs":[{"annotation":[{"start":[91,19],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","end":[91,22]},[]],"tag":"TypeVar","contents":"key"}],"constraintData":null},{"constraintAnn":[{"start":[92,10],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","end":[92,18]},[]],"constraintClass":[["Data","Eq"],"Eq"],"constraintArgs":[{"annotation":[{"start":[92,13],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","end":[92,18]},[]],"tag":"TypeVar","contents":"focus"}],"constraintData":null}],"edInstanceChain":[[["Data","Eq"],{"Ident":"eqRowCons"}]],"edInstanceChainIndex":0}}],"efSourceSpan":{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Data/Eq.purs","end":[99,61]}} \ No newline at end of file
diff --git a/tests/purs/publish/basic-example/output/Data.EuclideanRing/externs.json b/tests/purs/publish/basic-example/output/Data.EuclideanRing/externs.json
deleted file mode 100644
index 6e351c1..0000000
--- a/tests/purs/publish/basic-example/output/Data.EuclideanRing/externs.json
+++ /dev/null
@@ -1 +0,0 @@
-{"efVersion":"0.13.4","efModuleName":["Data","EuclideanRing"],"efExports":[{"ReExportRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Data/EuclideanRing.purs","end":[98,25]},{"exportSourceImportedFrom":["Data","CommutativeRing"],"exportSourceDefinedIn":["Data","CommutativeRing"]},{"TypeClassRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Data/EuclideanRing.purs","end":[98,25]},"CommutativeRing"]}]},{"ReExportRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Data/EuclideanRing.purs","end":[98,25]},{"exportSourceImportedFrom":["Data","Ring"],"exportSourceDefinedIn":["Data","Ring"]},{"TypeClassRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Data/EuclideanRing.purs","end":[98,25]},"Ring"]}]},{"ReExportRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Data/EuclideanRing.purs","end":[98,25]},{"exportSourceImportedFrom":["Data","Semiring"],"exportSourceDefinedIn":["Data","Semiring"]},{"TypeClassRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Data/EuclideanRing.purs","end":[98,25]},"Semiring"]}]},{"ReExportRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Data/EuclideanRing.purs","end":[98,25]},{"exportSourceImportedFrom":["Data","Semiring"],"exportSourceDefinedIn":["Data","Semiring"]},{"ValueRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Data/EuclideanRing.purs","end":[98,25]},{"Ident":"add"}]}]},{"ReExportRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Data/EuclideanRing.purs","end":[98,25]},{"exportSourceImportedFrom":["Data","Semiring"],"exportSourceDefinedIn":["Data","Semiring"]},{"ValueRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Data/EuclideanRing.purs","end":[98,25]},{"Ident":"mul"}]}]},{"ReExportRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Data/EuclideanRing.purs","end":[98,25]},{"exportSourceImportedFrom":["Data","Semiring"],"exportSourceDefinedIn":["Data","Semiring"]},{"ValueRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Data/EuclideanRing.purs","end":[98,25]},{"Ident":"one"}]}]},{"ReExportRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Data/EuclideanRing.purs","end":[98,25]},{"exportSourceImportedFrom":["Data","Ring"],"exportSourceDefinedIn":["Data","Ring"]},{"ValueRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Data/EuclideanRing.purs","end":[98,25]},{"Ident":"sub"}]}]},{"ReExportRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Data/EuclideanRing.purs","end":[98,25]},{"exportSourceImportedFrom":["Data","Semiring"],"exportSourceDefinedIn":["Data","Semiring"]},{"ValueRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Data/EuclideanRing.purs","end":[98,25]},{"Ident":"zero"}]}]},{"ReExportRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Data/EuclideanRing.purs","end":[98,25]},{"exportSourceImportedFrom":["Data","Semiring"],"exportSourceDefinedIn":["Data","Semiring"]},{"ValueOpRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Data/EuclideanRing.purs","end":[98,25]},"*"]}]},{"ReExportRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Data/EuclideanRing.purs","end":[98,25]},{"exportSourceImportedFrom":["Data","Semiring"],"exportSourceDefinedIn":["Data","Semiring"]},{"ValueOpRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Data/EuclideanRing.purs","end":[98,25]},"+"]}]},{"ReExportRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Data/EuclideanRing.purs","end":[98,25]},{"exportSourceImportedFrom":["Data","Ring"],"exportSourceDefinedIn":["Data","Ring"]},{"ValueOpRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Data/EuclideanRing.purs","end":[98,25]},"-"]}]},{"TypeClassRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Data/EuclideanRing.purs","end":[98,25]},"EuclideanRing"]},{"ValueRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Data/EuclideanRing.purs","end":[98,25]},{"Ident":"degree"}]},{"ValueRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Data/EuclideanRing.purs","end":[98,25]},{"Ident":"div"}]},{"ValueRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Data/EuclideanRing.purs","end":[98,25]},{"Ident":"mod"}]},{"ValueOpRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Data/EuclideanRing.purs","end":[98,25]},"/"]},{"ValueRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Data/EuclideanRing.purs","end":[98,25]},{"Ident":"gcd"}]},{"ValueRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Data/EuclideanRing.purs","end":[98,25]},{"Ident":"lcm"}]},{"ModuleRef":[{"start":[5,5],"name":"../../../support/bower_components/purescript-prelude/src/Data/EuclideanRing.purs","end":[5,32]},["Data","CommutativeRing"]]},{"ModuleRef":[{"start":[6,5],"name":"../../../support/bower_components/purescript-prelude/src/Data/EuclideanRing.purs","end":[6,21]},["Data","Ring"]]},{"ModuleRef":[{"start":[7,5],"name":"../../../support/bower_components/purescript-prelude/src/Data/EuclideanRing.purs","end":[7,25]},["Data","Semiring"]]},{"TypeInstanceRef":[{"start":[0,0],"name":"<generated>","end":[0,0]},{"Ident":"euclideanRingInt"}]},{"TypeInstanceRef":[{"start":[0,0],"name":"<generated>","end":[0,0]},{"Ident":"euclideanRingNumber"}]}],"efImports":[{"eiModule":["Prim"],"eiImportType":{"Implicit":[]},"eiImportedAs":["Prim"]},{"eiModule":["Prim"],"eiImportType":{"Implicit":[]},"eiImportedAs":null},{"eiModule":["Data","BooleanAlgebra"],"eiImportType":{"Explicit":[{"ValueOpRef":[{"start":[10,29],"name":"../../../support/bower_components/purescript-prelude/src/Data/EuclideanRing.purs","end":[10,33]},"||"]}]},"eiImportedAs":null},{"eiModule":["Data","CommutativeRing"],"eiImportType":{"Explicit":[{"TypeClassRef":[{"start":[11,30],"name":"../../../support/bower_components/purescript-prelude/src/Data/EuclideanRing.purs","end":[11,51]},"CommutativeRing"]}]},"eiImportedAs":null},{"eiModule":["Data","Eq"],"eiImportType":{"Explicit":[{"TypeClassRef":[{"start":[12,17],"name":"../../../support/bower_components/purescript-prelude/src/Data/EuclideanRing.purs","end":[12,25]},"Eq"]},{"ValueOpRef":[{"start":[12,27],"name":"../../../support/bower_components/purescript-prelude/src/Data/EuclideanRing.purs","end":[12,31]},"=="]}]},"eiImportedAs":null},{"eiModule":["Data","Ring"],"eiImportType":{"Explicit":[{"TypeClassRef":[{"start":[13,19],"name":"../../../support/bower_components/purescript-prelude/src/Data/EuclideanRing.purs","end":[13,29]},"Ring"]},{"ValueRef":[{"start":[13,31],"name":"../../../support/bower_components/purescript-prelude/src/Data/EuclideanRing.purs","end":[13,34]},{"Ident":"sub"}]},{"ValueOpRef":[{"start":[13,36],"name":"../../../support/bower_components/purescript-prelude/src/Data/EuclideanRing.purs","end":[13,39]},"-"]}]},"eiImportedAs":null},{"eiModule":["Data","Semiring"],"eiImportType":{"Explicit":[{"TypeClassRef":[{"start":[14,23],"name":"../../../support/bower_components/purescript-prelude/src/Data/EuclideanRing.purs","end":[14,37]},"Semiring"]},{"ValueRef":[{"start":[14,39],"name":"../../../support/bower_components/purescript-prelude/src/Data/EuclideanRing.purs","end":[14,42]},{"Ident":"add"}]},{"ValueRef":[{"start":[14,44],"name":"../../../support/bower_components/purescript-prelude/src/Data/EuclideanRing.purs","end":[14,47]},{"Ident":"mul"}]},{"ValueRef":[{"start":[14,49],"name":"../../../support/bower_components/purescript-prelude/src/Data/EuclideanRing.purs","end":[14,52]},{"Ident":"one"}]},{"ValueRef":[{"start":[14,54],"name":"../../../support/bower_components/purescript-prelude/src/Data/EuclideanRing.purs","end":[14,58]},{"Ident":"zero"}]},{"ValueOpRef":[{"start":[14,60],"name":"../../../support/bower_components/purescript-prelude/src/Data/EuclideanRing.purs","end":[14,63]},"*"]},{"ValueOpRef":[{"start":[14,65],"name":"../../../support/bower_components/purescript-prelude/src/Data/EuclideanRing.purs","end":[14,68]},"+"]}]},"eiImportedAs":null}],"efFixities":[{"efAssociativity":"infixl","efPrecedence":7,"efOperator":"/","efAlias":[["Data","EuclideanRing"],{"Left":{"Ident":"div"}}]}],"efTypeFixities":[],"efDeclarations":[{"EDType":{"edTypeName":"EuclideanRing","edTypeKind":{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"FunKind","contents":[{"annotation":[{"start":[64,15],"name":"../../../support/bower_components/purescript-prelude/src/Data/EuclideanRing.purs","end":[64,17]},[]],"tag":"NamedKind","contents":[["Prim"],"Type"]},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"NamedKind","contents":[["Prim"],"Type"]}]},"edTypeDeclarationKind":"TypeSynonym"}},{"EDTypeSynonym":{"edTypeSynonymName":"EuclideanRing","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":["degree",{"annotation":[{"start":[64,13],"name":"../../../support/bower_components/purescript-prelude/src/Data/EuclideanRing.purs","end":[64,21]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[64,13],"name":"../../../support/bower_components/purescript-prelude/src/Data/EuclideanRing.purs","end":[64,21]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[64,15],"name":"../../../support/bower_components/purescript-prelude/src/Data/EuclideanRing.purs","end":[64,17]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[64,13],"name":"../../../support/bower_components/purescript-prelude/src/Data/EuclideanRing.purs","end":[64,14]},[]],"tag":"TypeVar","contents":"a"}]},{"annotation":[{"start":[64,18],"name":"../../../support/bower_components/purescript-prelude/src/Data/EuclideanRing.purs","end":[64,21]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Int"]}]},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"RCons","contents":["div",{"annotation":[{"start":[65,10],"name":"../../../support/bower_components/purescript-prelude/src/Data/EuclideanRing.purs","end":[65,21]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[65,10],"name":"../../../support/bower_components/purescript-prelude/src/Data/EuclideanRing.purs","end":[65,21]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[65,12],"name":"../../../support/bower_components/purescript-prelude/src/Data/EuclideanRing.purs","end":[65,14]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[65,10],"name":"../../../support/bower_components/purescript-prelude/src/Data/EuclideanRing.purs","end":[65,11]},[]],"tag":"TypeVar","contents":"a"}]},{"annotation":[{"start":[65,15],"name":"../../../support/bower_components/purescript-prelude/src/Data/EuclideanRing.purs","end":[65,21]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[65,15],"name":"../../../support/bower_components/purescript-prelude/src/Data/EuclideanRing.purs","end":[65,21]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[65,17],"name":"../../../support/bower_components/purescript-prelude/src/Data/EuclideanRing.purs","end":[65,19]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[65,15],"name":"../../../support/bower_components/purescript-prelude/src/Data/EuclideanRing.purs","end":[65,16]},[]],"tag":"TypeVar","contents":"a"}]},{"annotation":[{"start":[65,20],"name":"../../../support/bower_components/purescript-prelude/src/Data/EuclideanRing.purs","end":[65,21]},[]],"tag":"TypeVar","contents":"a"}]}]},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"RCons","contents":["mod",{"annotation":[{"start":[66,10],"name":"../../../support/bower_components/purescript-prelude/src/Data/EuclideanRing.purs","end":[66,21]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[66,10],"name":"../../../support/bower_components/purescript-prelude/src/Data/EuclideanRing.purs","end":[66,21]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[66,12],"name":"../../../support/bower_components/purescript-prelude/src/Data/EuclideanRing.purs","end":[66,14]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[66,10],"name":"../../../support/bower_components/purescript-prelude/src/Data/EuclideanRing.purs","end":[66,11]},[]],"tag":"TypeVar","contents":"a"}]},{"annotation":[{"start":[66,15],"name":"../../../support/bower_components/purescript-prelude/src/Data/EuclideanRing.purs","end":[66,21]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[66,15],"name":"../../../support/bower_components/purescript-prelude/src/Data/EuclideanRing.purs","end":[66,21]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[66,17],"name":"../../../support/bower_components/purescript-prelude/src/Data/EuclideanRing.purs","end":[66,19]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[66,15],"name":"../../../support/bower_components/purescript-prelude/src/Data/EuclideanRing.purs","end":[66,16]},[]],"tag":"TypeVar","contents":"a"}]},{"annotation":[{"start":[66,20],"name":"../../../support/bower_components/purescript-prelude/src/Data/EuclideanRing.purs","end":[66,21]},[]],"tag":"TypeVar","contents":"a"}]}]},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"RCons","contents":["CommutativeRing0",{"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","CommutativeRing"],"CommutativeRing"]},{"annotation":[{"start":[63,23],"name":"../../../support/bower_components/purescript-prelude/src/Data/EuclideanRing.purs","end":[63,24]},[]],"tag":"TypeVar","contents":"a"}]}]},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"REmpty"}]}]}]}]}]}}},{"EDClass":{"edClassName":"EuclideanRing","edClassTypeArguments":[["a",null]],"edClassMembers":[[{"Ident":"degree"},{"annotation":[{"start":[64,13],"name":"../../../support/bower_components/purescript-prelude/src/Data/EuclideanRing.purs","end":[64,21]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[64,13],"name":"../../../support/bower_components/purescript-prelude/src/Data/EuclideanRing.purs","end":[64,21]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[64,15],"name":"../../../support/bower_components/purescript-prelude/src/Data/EuclideanRing.purs","end":[64,17]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[64,13],"name":"../../../support/bower_components/purescript-prelude/src/Data/EuclideanRing.purs","end":[64,14]},[]],"tag":"TypeVar","contents":"a"}]},{"annotation":[{"start":[64,18],"name":"../../../support/bower_components/purescript-prelude/src/Data/EuclideanRing.purs","end":[64,21]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Int"]}]}],[{"Ident":"div"},{"annotation":[{"start":[65,10],"name":"../../../support/bower_components/purescript-prelude/src/Data/EuclideanRing.purs","end":[65,21]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[65,10],"name":"../../../support/bower_components/purescript-prelude/src/Data/EuclideanRing.purs","end":[65,21]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[65,12],"name":"../../../support/bower_components/purescript-prelude/src/Data/EuclideanRing.purs","end":[65,14]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[65,10],"name":"../../../support/bower_components/purescript-prelude/src/Data/EuclideanRing.purs","end":[65,11]},[]],"tag":"TypeVar","contents":"a"}]},{"annotation":[{"start":[65,15],"name":"../../../support/bower_components/purescript-prelude/src/Data/EuclideanRing.purs","end":[65,21]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[65,15],"name":"../../../support/bower_components/purescript-prelude/src/Data/EuclideanRing.purs","end":[65,21]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[65,17],"name":"../../../support/bower_components/purescript-prelude/src/Data/EuclideanRing.purs","end":[65,19]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[65,15],"name":"../../../support/bower_components/purescript-prelude/src/Data/EuclideanRing.purs","end":[65,16]},[]],"tag":"TypeVar","contents":"a"}]},{"annotation":[{"start":[65,20],"name":"../../../support/bower_components/purescript-prelude/src/Data/EuclideanRing.purs","end":[65,21]},[]],"tag":"TypeVar","contents":"a"}]}]}],[{"Ident":"mod"},{"annotation":[{"start":[66,10],"name":"../../../support/bower_components/purescript-prelude/src/Data/EuclideanRing.purs","end":[66,21]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[66,10],"name":"../../../support/bower_components/purescript-prelude/src/Data/EuclideanRing.purs","end":[66,21]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[66,12],"name":"../../../support/bower_components/purescript-prelude/src/Data/EuclideanRing.purs","end":[66,14]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[66,10],"name":"../../../support/bower_components/purescript-prelude/src/Data/EuclideanRing.purs","end":[66,11]},[]],"tag":"TypeVar","contents":"a"}]},{"annotation":[{"start":[66,15],"name":"../../../support/bower_components/purescript-prelude/src/Data/EuclideanRing.purs","end":[66,21]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[66,15],"name":"../../../support/bower_components/purescript-prelude/src/Data/EuclideanRing.purs","end":[66,21]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[66,17],"name":"../../../support/bower_components/purescript-prelude/src/Data/EuclideanRing.purs","end":[66,19]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[66,15],"name":"../../../support/bower_components/purescript-prelude/src/Data/EuclideanRing.purs","end":[66,16]},[]],"tag":"TypeVar","contents":"a"}]},{"annotation":[{"start":[66,20],"name":"../../../support/bower_components/purescript-prelude/src/Data/EuclideanRing.purs","end":[66,21]},[]],"tag":"TypeVar","contents":"a"}]}]}]],"edClassConstraints":[{"constraintAnn":[{"start":[63,7],"name":"../../../support/bower_components/purescript-prelude/src/Data/EuclideanRing.purs","end":[63,24]},[]],"constraintClass":[["Data","CommutativeRing"],"CommutativeRing"],"constraintArgs":[{"annotation":[{"start":[63,23],"name":"../../../support/bower_components/purescript-prelude/src/Data/EuclideanRing.purs","end":[63,24]},[]],"tag":"TypeVar","contents":"a"}],"constraintData":null}],"edFunctionalDependencies":[],"edIsEmpty":false}},{"EDValue":{"edValueName":{"Ident":"degree"},"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":[["Data","EuclideanRing"],"EuclideanRing"],"constraintArgs":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeVar","contents":"a"}],"constraintData":null},{"annotation":[{"start":[64,13],"name":"../../../support/bower_components/purescript-prelude/src/Data/EuclideanRing.purs","end":[64,21]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[64,13],"name":"../../../support/bower_components/purescript-prelude/src/Data/EuclideanRing.purs","end":[64,21]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[64,15],"name":"../../../support/bower_components/purescript-prelude/src/Data/EuclideanRing.purs","end":[64,17]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[64,13],"name":"../../../support/bower_components/purescript-prelude/src/Data/EuclideanRing.purs","end":[64,14]},[]],"tag":"TypeVar","contents":"a"}]},{"annotation":[{"start":[64,18],"name":"../../../support/bower_components/purescript-prelude/src/Data/EuclideanRing.purs","end":[64,21]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Int"]}]}]},7]}}},{"EDValue":{"edValueName":{"Ident":"div"},"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":[["Data","EuclideanRing"],"EuclideanRing"],"constraintArgs":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeVar","contents":"a"}],"constraintData":null},{"annotation":[{"start":[65,10],"name":"../../../support/bower_components/purescript-prelude/src/Data/EuclideanRing.purs","end":[65,21]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[65,10],"name":"../../../support/bower_components/purescript-prelude/src/Data/EuclideanRing.purs","end":[65,21]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[65,12],"name":"../../../support/bower_components/purescript-prelude/src/Data/EuclideanRing.purs","end":[65,14]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[65,10],"name":"../../../support/bower_components/purescript-prelude/src/Data/EuclideanRing.purs","end":[65,11]},[]],"tag":"TypeVar","contents":"a"}]},{"annotation":[{"start":[65,15],"name":"../../../support/bower_components/purescript-prelude/src/Data/EuclideanRing.purs","end":[65,21]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[65,15],"name":"../../../support/bower_components/purescript-prelude/src/Data/EuclideanRing.purs","end":[65,21]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[65,17],"name":"../../../support/bower_components/purescript-prelude/src/Data/EuclideanRing.purs","end":[65,19]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[65,15],"name":"../../../support/bower_components/purescript-prelude/src/Data/EuclideanRing.purs","end":[65,16]},[]],"tag":"TypeVar","contents":"a"}]},{"annotation":[{"start":[65,20],"name":"../../../support/bower_components/purescript-prelude/src/Data/EuclideanRing.purs","end":[65,21]},[]],"tag":"TypeVar","contents":"a"}]}]}]},4]}}},{"EDValue":{"edValueName":{"Ident":"mod"},"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":[["Data","EuclideanRing"],"EuclideanRing"],"constraintArgs":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeVar","contents":"a"}],"constraintData":null},{"annotation":[{"start":[66,10],"name":"../../../support/bower_components/purescript-prelude/src/Data/EuclideanRing.purs","end":[66,21]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[66,10],"name":"../../../support/bower_components/purescript-prelude/src/Data/EuclideanRing.purs","end":[66,21]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[66,12],"name":"../../../support/bower_components/purescript-prelude/src/Data/EuclideanRing.purs","end":[66,14]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[66,10],"name":"../../../support/bower_components/purescript-prelude/src/Data/EuclideanRing.purs","end":[66,11]},[]],"tag":"TypeVar","contents":"a"}]},{"annotation":[{"start":[66,15],"name":"../../../support/bower_components/purescript-prelude/src/Data/EuclideanRing.purs","end":[66,21]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[66,15],"name":"../../../support/bower_components/purescript-prelude/src/Data/EuclideanRing.purs","end":[66,21]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[66,17],"name":"../../../support/bower_components/purescript-prelude/src/Data/EuclideanRing.purs","end":[66,19]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[66,15],"name":"../../../support/bower_components/purescript-prelude/src/Data/EuclideanRing.purs","end":[66,16]},[]],"tag":"TypeVar","contents":"a"}]},{"annotation":[{"start":[66,20],"name":"../../../support/bower_components/purescript-prelude/src/Data/EuclideanRing.purs","end":[66,21]},[]],"tag":"TypeVar","contents":"a"}]}]}]},0]}}},{"EDValue":{"edValueName":{"Ident":"gcd"},"edValueType":{"annotation":[{"start":[87,8],"name":"../../../support/bower_components/purescript-prelude/src/Data/EuclideanRing.purs","end":[87,56]},[]],"tag":"ForAll","contents":["a",{"annotation":[{"start":[87,18],"name":"../../../support/bower_components/purescript-prelude/src/Data/EuclideanRing.purs","end":[87,56]},[]],"tag":"ConstrainedType","contents":[{"constraintAnn":[{"start":[87,18],"name":"../../../support/bower_components/purescript-prelude/src/Data/EuclideanRing.purs","end":[87,22]},[]],"constraintClass":[["Data","Eq"],"Eq"],"constraintArgs":[{"annotation":[{"start":[87,21],"name":"../../../support/bower_components/purescript-prelude/src/Data/EuclideanRing.purs","end":[87,22]},[]],"tag":"TypeVar","contents":"a"}],"constraintData":null},{"annotation":[{"start":[87,26],"name":"../../../support/bower_components/purescript-prelude/src/Data/EuclideanRing.purs","end":[87,56]},[]],"tag":"ConstrainedType","contents":[{"constraintAnn":[{"start":[87,26],"name":"../../../support/bower_components/purescript-prelude/src/Data/EuclideanRing.purs","end":[87,41]},[]],"constraintClass":[["Data","EuclideanRing"],"EuclideanRing"],"constraintArgs":[{"annotation":[{"start":[87,40],"name":"../../../support/bower_components/purescript-prelude/src/Data/EuclideanRing.purs","end":[87,41]},[]],"tag":"TypeVar","contents":"a"}],"constraintData":null},{"annotation":[{"start":[87,45],"name":"../../../support/bower_components/purescript-prelude/src/Data/EuclideanRing.purs","end":[87,56]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[87,45],"name":"../../../support/bower_components/purescript-prelude/src/Data/EuclideanRing.purs","end":[87,56]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[87,47],"name":"../../../support/bower_components/purescript-prelude/src/Data/EuclideanRing.purs","end":[87,49]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[87,45],"name":"../../../support/bower_components/purescript-prelude/src/Data/EuclideanRing.purs","end":[87,46]},[]],"tag":"TypeVar","contents":"a"}]},{"annotation":[{"start":[87,50],"name":"../../../support/bower_components/purescript-prelude/src/Data/EuclideanRing.purs","end":[87,56]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[87,50],"name":"../../../support/bower_components/purescript-prelude/src/Data/EuclideanRing.purs","end":[87,56]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[87,52],"name":"../../../support/bower_components/purescript-prelude/src/Data/EuclideanRing.purs","end":[87,54]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[87,50],"name":"../../../support/bower_components/purescript-prelude/src/Data/EuclideanRing.purs","end":[87,51]},[]],"tag":"TypeVar","contents":"a"}]},{"annotation":[{"start":[87,55],"name":"../../../support/bower_components/purescript-prelude/src/Data/EuclideanRing.purs","end":[87,56]},[]],"tag":"TypeVar","contents":"a"}]}]}]}]},1]}}},{"EDValue":{"edValueName":{"Ident":"lcm"},"edValueType":{"annotation":[{"start":[94,8],"name":"../../../support/bower_components/purescript-prelude/src/Data/EuclideanRing.purs","end":[94,56]},[]],"tag":"ForAll","contents":["a",{"annotation":[{"start":[94,18],"name":"../../../support/bower_components/purescript-prelude/src/Data/EuclideanRing.purs","end":[94,56]},[]],"tag":"ConstrainedType","contents":[{"constraintAnn":[{"start":[94,18],"name":"../../../support/bower_components/purescript-prelude/src/Data/EuclideanRing.purs","end":[94,22]},[]],"constraintClass":[["Data","Eq"],"Eq"],"constraintArgs":[{"annotation":[{"start":[94,21],"name":"../../../support/bower_components/purescript-prelude/src/Data/EuclideanRing.purs","end":[94,22]},[]],"tag":"TypeVar","contents":"a"}],"constraintData":null},{"annotation":[{"start":[94,26],"name":"../../../support/bower_components/purescript-prelude/src/Data/EuclideanRing.purs","end":[94,56]},[]],"tag":"ConstrainedType","contents":[{"constraintAnn":[{"start":[94,26],"name":"../../../support/bower_components/purescript-prelude/src/Data/EuclideanRing.purs","end":[94,41]},[]],"constraintClass":[["Data","EuclideanRing"],"EuclideanRing"],"constraintArgs":[{"annotation":[{"start":[94,40],"name":"../../../support/bower_components/purescript-prelude/src/Data/EuclideanRing.purs","end":[94,41]},[]],"tag":"TypeVar","contents":"a"}],"constraintData":null},{"annotation":[{"start":[94,45],"name":"../../../support/bower_components/purescript-prelude/src/Data/EuclideanRing.purs","end":[94,56]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[94,45],"name":"../../../support/bower_components/purescript-prelude/src/Data/EuclideanRing.purs","end":[94,56]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[94,47],"name":"../../../support/bower_components/purescript-prelude/src/Data/EuclideanRing.purs","end":[94,49]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[94,45],"name":"../../../support/bower_components/purescript-prelude/src/Data/EuclideanRing.purs","end":[94,46]},[]],"tag":"TypeVar","contents":"a"}]},{"annotation":[{"start":[94,50],"name":"../../../support/bower_components/purescript-prelude/src/Data/EuclideanRing.purs","end":[94,56]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[94,50],"name":"../../../support/bower_components/purescript-prelude/src/Data/EuclideanRing.purs","end":[94,56]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[94,52],"name":"../../../support/bower_components/purescript-prelude/src/Data/EuclideanRing.purs","end":[94,54]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[94,50],"name":"../../../support/bower_components/purescript-prelude/src/Data/EuclideanRing.purs","end":[94,51]},[]],"tag":"TypeVar","contents":"a"}]},{"annotation":[{"start":[94,55],"name":"../../../support/bower_components/purescript-prelude/src/Data/EuclideanRing.purs","end":[94,56]},[]],"tag":"TypeVar","contents":"a"}]}]}]}]},5]}}},{"EDInstance":{"edInstanceClassName":[["Data","EuclideanRing"],"EuclideanRing"],"edInstanceName":{"Ident":"euclideanRingInt"},"edInstanceTypes":[{"annotation":[{"start":[70,44],"name":"../../../support/bower_components/purescript-prelude/src/Data/EuclideanRing.purs","end":[70,47]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Int"]}],"edInstanceConstraints":[],"edInstanceChain":[[["Data","EuclideanRing"],{"Ident":"euclideanRingInt"}]],"edInstanceChainIndex":0}},{"EDInstance":{"edInstanceClassName":[["Data","EuclideanRing"],"EuclideanRing"],"edInstanceName":{"Ident":"euclideanRingNumber"},"edInstanceTypes":[{"annotation":[{"start":[75,47],"name":"../../../support/bower_components/purescript-prelude/src/Data/EuclideanRing.purs","end":[75,53]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Number"]}],"edInstanceConstraints":[],"edInstanceChain":[[["Data","EuclideanRing"],{"Ident":"euclideanRingNumber"}]],"edInstanceChainIndex":0}}],"efSourceSpan":{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Data/EuclideanRing.purs","end":[98,25]}} \ No newline at end of file
diff --git a/tests/purs/publish/basic-example/output/Data.Field/externs.json b/tests/purs/publish/basic-example/output/Data.Field/externs.json
deleted file mode 100644
index aa12a5f..0000000
--- a/tests/purs/publish/basic-example/output/Data.Field/externs.json
+++ /dev/null
@@ -1 +0,0 @@
-{"efVersion":"0.13.4","efModuleName":["Data","Field"],"efExports":[{"ReExportRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Data/Field.purs","end":[41,63]},{"exportSourceImportedFrom":["Data","CommutativeRing"],"exportSourceDefinedIn":["Data","CommutativeRing"]},{"TypeClassRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Data/Field.purs","end":[41,63]},"CommutativeRing"]}]},{"ReExportRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Data/Field.purs","end":[41,63]},{"exportSourceImportedFrom":["Data","DivisionRing"],"exportSourceDefinedIn":["Data","DivisionRing"]},{"TypeClassRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Data/Field.purs","end":[41,63]},"DivisionRing"]}]},{"ReExportRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Data/Field.purs","end":[41,63]},{"exportSourceImportedFrom":["Data","EuclideanRing"],"exportSourceDefinedIn":["Data","EuclideanRing"]},{"TypeClassRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Data/Field.purs","end":[41,63]},"EuclideanRing"]}]},{"ReExportRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Data/Field.purs","end":[41,63]},{"exportSourceImportedFrom":["Data","Ring"],"exportSourceDefinedIn":["Data","Ring"]},{"TypeClassRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Data/Field.purs","end":[41,63]},"Ring"]}]},{"ReExportRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Data/Field.purs","end":[41,63]},{"exportSourceImportedFrom":["Data","Semiring"],"exportSourceDefinedIn":["Data","Semiring"]},{"TypeClassRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Data/Field.purs","end":[41,63]},"Semiring"]}]},{"ReExportRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Data/Field.purs","end":[41,63]},{"exportSourceImportedFrom":["Data","Semiring"],"exportSourceDefinedIn":["Data","Semiring"]},{"ValueRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Data/Field.purs","end":[41,63]},{"Ident":"add"}]}]},{"ReExportRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Data/Field.purs","end":[41,63]},{"exportSourceImportedFrom":["Data","EuclideanRing"],"exportSourceDefinedIn":["Data","EuclideanRing"]},{"ValueRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Data/Field.purs","end":[41,63]},{"Ident":"degree"}]}]},{"ReExportRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Data/Field.purs","end":[41,63]},{"exportSourceImportedFrom":["Data","EuclideanRing"],"exportSourceDefinedIn":["Data","EuclideanRing"]},{"ValueRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Data/Field.purs","end":[41,63]},{"Ident":"div"}]}]},{"ReExportRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Data/Field.purs","end":[41,63]},{"exportSourceImportedFrom":["Data","EuclideanRing"],"exportSourceDefinedIn":["Data","EuclideanRing"]},{"ValueRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Data/Field.purs","end":[41,63]},{"Ident":"gcd"}]}]},{"ReExportRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Data/Field.purs","end":[41,63]},{"exportSourceImportedFrom":["Data","EuclideanRing"],"exportSourceDefinedIn":["Data","EuclideanRing"]},{"ValueRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Data/Field.purs","end":[41,63]},{"Ident":"lcm"}]}]},{"ReExportRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Data/Field.purs","end":[41,63]},{"exportSourceImportedFrom":["Data","EuclideanRing"],"exportSourceDefinedIn":["Data","EuclideanRing"]},{"ValueRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Data/Field.purs","end":[41,63]},{"Ident":"mod"}]}]},{"ReExportRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Data/Field.purs","end":[41,63]},{"exportSourceImportedFrom":["Data","Semiring"],"exportSourceDefinedIn":["Data","Semiring"]},{"ValueRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Data/Field.purs","end":[41,63]},{"Ident":"mul"}]}]},{"ReExportRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Data/Field.purs","end":[41,63]},{"exportSourceImportedFrom":["Data","Ring"],"exportSourceDefinedIn":["Data","Ring"]},{"ValueRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Data/Field.purs","end":[41,63]},{"Ident":"negate"}]}]},{"ReExportRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Data/Field.purs","end":[41,63]},{"exportSourceImportedFrom":["Data","Semiring"],"exportSourceDefinedIn":["Data","Semiring"]},{"ValueRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Data/Field.purs","end":[41,63]},{"Ident":"one"}]}]},{"ReExportRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Data/Field.purs","end":[41,63]},{"exportSourceImportedFrom":["Data","DivisionRing"],"exportSourceDefinedIn":["Data","DivisionRing"]},{"ValueRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Data/Field.purs","end":[41,63]},{"Ident":"recip"}]}]},{"ReExportRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Data/Field.purs","end":[41,63]},{"exportSourceImportedFrom":["Data","Ring"],"exportSourceDefinedIn":["Data","Ring"]},{"ValueRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Data/Field.purs","end":[41,63]},{"Ident":"sub"}]}]},{"ReExportRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Data/Field.purs","end":[41,63]},{"exportSourceImportedFrom":["Data","Semiring"],"exportSourceDefinedIn":["Data","Semiring"]},{"ValueRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Data/Field.purs","end":[41,63]},{"Ident":"zero"}]}]},{"ReExportRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Data/Field.purs","end":[41,63]},{"exportSourceImportedFrom":["Data","Semiring"],"exportSourceDefinedIn":["Data","Semiring"]},{"ValueOpRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Data/Field.purs","end":[41,63]},"*"]}]},{"ReExportRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Data/Field.purs","end":[41,63]},{"exportSourceImportedFrom":["Data","Semiring"],"exportSourceDefinedIn":["Data","Semiring"]},{"ValueOpRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Data/Field.purs","end":[41,63]},"+"]}]},{"ReExportRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Data/Field.purs","end":[41,63]},{"exportSourceImportedFrom":["Data","EuclideanRing"],"exportSourceDefinedIn":["Data","EuclideanRing"]},{"ValueOpRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Data/Field.purs","end":[41,63]},"/"]}]},{"TypeClassRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Data/Field.purs","end":[41,63]},"Field"]},{"ModuleRef":[{"start":[3,5],"name":"../../../support/bower_components/purescript-prelude/src/Data/Field.purs","end":[3,29]},["Data","DivisionRing"]]},{"ModuleRef":[{"start":[4,5],"name":"../../../support/bower_components/purescript-prelude/src/Data/Field.purs","end":[4,32]},["Data","CommutativeRing"]]},{"ModuleRef":[{"start":[5,5],"name":"../../../support/bower_components/purescript-prelude/src/Data/Field.purs","end":[5,30]},["Data","EuclideanRing"]]},{"ModuleRef":[{"start":[6,5],"name":"../../../support/bower_components/purescript-prelude/src/Data/Field.purs","end":[6,21]},["Data","Ring"]]},{"ModuleRef":[{"start":[7,5],"name":"../../../support/bower_components/purescript-prelude/src/Data/Field.purs","end":[7,25]},["Data","Semiring"]]},{"TypeInstanceRef":[{"start":[0,0],"name":"<generated>","end":[0,0]},{"Ident":"field"}]}],"efImports":[{"eiModule":["Prim"],"eiImportType":{"Implicit":[]},"eiImportedAs":["Prim"]},{"eiModule":["Prim"],"eiImportType":{"Implicit":[]},"eiImportedAs":null},{"eiModule":["Data","DivisionRing"],"eiImportType":{"Explicit":[{"TypeClassRef":[{"start":[10,27],"name":"../../../support/bower_components/purescript-prelude/src/Data/Field.purs","end":[10,45]},"DivisionRing"]},{"ValueRef":[{"start":[10,47],"name":"../../../support/bower_components/purescript-prelude/src/Data/Field.purs","end":[10,52]},{"Ident":"recip"}]}]},"eiImportedAs":null},{"eiModule":["Data","CommutativeRing"],"eiImportType":{"Explicit":[{"TypeClassRef":[{"start":[11,30],"name":"../../../support/bower_components/purescript-prelude/src/Data/Field.purs","end":[11,51]},"CommutativeRing"]}]},"eiImportedAs":null},{"eiModule":["Data","EuclideanRing"],"eiImportType":{"Explicit":[{"TypeClassRef":[{"start":[12,28],"name":"../../../support/bower_components/purescript-prelude/src/Data/Field.purs","end":[12,47]},"EuclideanRing"]},{"ValueRef":[{"start":[12,49],"name":"../../../support/bower_components/purescript-prelude/src/Data/Field.purs","end":[12,55]},{"Ident":"degree"}]},{"ValueRef":[{"start":[12,57],"name":"../../../support/bower_components/purescript-prelude/src/Data/Field.purs","end":[12,60]},{"Ident":"div"}]},{"ValueRef":[{"start":[12,62],"name":"../../../support/bower_components/purescript-prelude/src/Data/Field.purs","end":[12,65]},{"Ident":"mod"}]},{"ValueOpRef":[{"start":[12,67],"name":"../../../support/bower_components/purescript-prelude/src/Data/Field.purs","end":[12,70]},"/"]},{"ValueRef":[{"start":[12,72],"name":"../../../support/bower_components/purescript-prelude/src/Data/Field.purs","end":[12,75]},{"Ident":"gcd"}]},{"ValueRef":[{"start":[12,77],"name":"../../../support/bower_components/purescript-prelude/src/Data/Field.purs","end":[12,80]},{"Ident":"lcm"}]}]},"eiImportedAs":null},{"eiModule":["Data","Ring"],"eiImportType":{"Explicit":[{"TypeClassRef":[{"start":[13,19],"name":"../../../support/bower_components/purescript-prelude/src/Data/Field.purs","end":[13,29]},"Ring"]},{"ValueRef":[{"start":[13,31],"name":"../../../support/bower_components/purescript-prelude/src/Data/Field.purs","end":[13,37]},{"Ident":"negate"}]},{"ValueRef":[{"start":[13,39],"name":"../../../support/bower_components/purescript-prelude/src/Data/Field.purs","end":[13,42]},{"Ident":"sub"}]}]},"eiImportedAs":null},{"eiModule":["Data","Semiring"],"eiImportType":{"Explicit":[{"TypeClassRef":[{"start":[14,23],"name":"../../../support/bower_components/purescript-prelude/src/Data/Field.purs","end":[14,37]},"Semiring"]},{"ValueRef":[{"start":[14,39],"name":"../../../support/bower_components/purescript-prelude/src/Data/Field.purs","end":[14,42]},{"Ident":"add"}]},{"ValueRef":[{"start":[14,44],"name":"../../../support/bower_components/purescript-prelude/src/Data/Field.purs","end":[14,47]},{"Ident":"mul"}]},{"ValueRef":[{"start":[14,49],"name":"../../../support/bower_components/purescript-prelude/src/Data/Field.purs","end":[14,52]},{"Ident":"one"}]},{"ValueRef":[{"start":[14,54],"name":"../../../support/bower_components/purescript-prelude/src/Data/Field.purs","end":[14,58]},{"Ident":"zero"}]},{"ValueOpRef":[{"start":[14,60],"name":"../../../support/bower_components/purescript-prelude/src/Data/Field.purs","end":[14,63]},"*"]},{"ValueOpRef":[{"start":[14,65],"name":"../../../support/bower_components/purescript-prelude/src/Data/Field.purs","end":[14,68]},"+"]}]},"eiImportedAs":null}],"efFixities":[],"efTypeFixities":[],"efDeclarations":[{"EDType":{"edTypeName":"Field","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":"Field","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":["EuclideanRing0",{"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","EuclideanRing"],"EuclideanRing"]},{"annotation":[{"start":[39,22],"name":"../../../support/bower_components/purescript-prelude/src/Data/Field.purs","end":[39,23]},[]],"tag":"TypeVar","contents":"a"}]}]},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"RCons","contents":["DivisionRing1",{"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","DivisionRing"],"DivisionRing"]},{"annotation":[{"start":[39,38],"name":"../../../support/bower_components/purescript-prelude/src/Data/Field.purs","end":[39,39]},[]],"tag":"TypeVar","contents":"a"}]}]},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"REmpty"}]}]}]}}},{"EDClass":{"edClassName":"Field","edClassTypeArguments":[["a",null]],"edClassMembers":[],"edClassConstraints":[{"constraintAnn":[{"start":[39,8],"name":"../../../support/bower_components/purescript-prelude/src/Data/Field.purs","end":[39,23]},[]],"constraintClass":[["Data","EuclideanRing"],"EuclideanRing"],"constraintArgs":[{"annotation":[{"start":[39,22],"name":"../../../support/bower_components/purescript-prelude/src/Data/Field.purs","end":[39,23]},[]],"tag":"TypeVar","contents":"a"}],"constraintData":null},{"constraintAnn":[{"start":[39,25],"name":"../../../support/bower_components/purescript-prelude/src/Data/Field.purs","end":[39,39]},[]],"constraintClass":[["Data","DivisionRing"],"DivisionRing"],"constraintArgs":[{"annotation":[{"start":[39,38],"name":"../../../support/bower_components/purescript-prelude/src/Data/Field.purs","end":[39,39]},[]],"tag":"TypeVar","contents":"a"}],"constraintData":null}],"edFunctionalDependencies":[],"edIsEmpty":false}},{"EDInstance":{"edInstanceClassName":[["Data","Field"],"Field"],"edInstanceName":{"Ident":"field"},"edInstanceTypes":[{"annotation":[{"start":[41,62],"name":"../../../support/bower_components/purescript-prelude/src/Data/Field.purs","end":[41,63]},[]],"tag":"TypeVar","contents":"a"}],"edInstanceConstraints":[{"constraintAnn":[{"start":[41,20],"name":"../../../support/bower_components/purescript-prelude/src/Data/Field.purs","end":[41,35]},[]],"constraintClass":[["Data","EuclideanRing"],"EuclideanRing"],"constraintArgs":[{"annotation":[{"start":[41,34],"name":"../../../support/bower_components/purescript-prelude/src/Data/Field.purs","end":[41,35]},[]],"tag":"TypeVar","contents":"a"}],"constraintData":null},{"constraintAnn":[{"start":[41,37],"name":"../../../support/bower_components/purescript-prelude/src/Data/Field.purs","end":[41,51]},[]],"constraintClass":[["Data","DivisionRing"],"DivisionRing"],"constraintArgs":[{"annotation":[{"start":[41,50],"name":"../../../support/bower_components/purescript-prelude/src/Data/Field.purs","end":[41,51]},[]],"tag":"TypeVar","contents":"a"}],"constraintData":null}],"edInstanceChain":[[["Data","Field"],{"Ident":"field"}]],"edInstanceChainIndex":0}}],"efSourceSpan":{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Data/Field.purs","end":[41,63]}} \ No newline at end of file
diff --git a/tests/purs/publish/basic-example/output/Data.Function/externs.json b/tests/purs/publish/basic-example/output/Data.Function/externs.json
deleted file mode 100644
index 94ba4b0..0000000
--- a/tests/purs/publish/basic-example/output/Data.Function/externs.json
+++ /dev/null
@@ -1 +0,0 @@
-{"efVersion":"0.13.4","efModuleName":["Data","Function"],"efExports":[{"ReExportRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Data/Function.purs","end":[107,25]},{"exportSourceImportedFrom":["Control","Category"],"exportSourceDefinedIn":["Control","Semigroupoid"]},{"ValueRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Data/Function.purs","end":[107,25]},{"Ident":"compose"}]}]},{"ReExportRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Data/Function.purs","end":[107,25]},{"exportSourceImportedFrom":["Control","Category"],"exportSourceDefinedIn":["Control","Category"]},{"ValueRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Data/Function.purs","end":[107,25]},{"Ident":"identity"}]}]},{"ReExportRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Data/Function.purs","end":[107,25]},{"exportSourceImportedFrom":["Control","Category"],"exportSourceDefinedIn":["Control","Semigroupoid"]},{"ValueOpRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Data/Function.purs","end":[107,25]},"<<<"]}]},{"ReExportRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Data/Function.purs","end":[107,25]},{"exportSourceImportedFrom":["Control","Category"],"exportSourceDefinedIn":["Control","Semigroupoid"]},{"ValueOpRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Data/Function.purs","end":[107,25]},">>>"]}]},{"ValueRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Data/Function.purs","end":[107,25]},{"Ident":"flip"}]},{"ValueRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Data/Function.purs","end":[107,25]},{"Ident":"const"}]},{"ValueRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Data/Function.purs","end":[107,25]},{"Ident":"apply"}]},{"ValueOpRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Data/Function.purs","end":[107,25]},"$"]},{"ValueRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Data/Function.purs","end":[107,25]},{"Ident":"applyFlipped"}]},{"ValueOpRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Data/Function.purs","end":[107,25]},"#"]},{"ValueRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Data/Function.purs","end":[107,25]},{"Ident":"applyN"}]},{"ValueRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Data/Function.purs","end":[107,25]},{"Ident":"on"}]},{"ModuleRef":[{"start":[8,5],"name":"../../../support/bower_components/purescript-prelude/src/Data/Function.purs","end":[8,28]},["Control","Category"]]}],"efImports":[{"eiModule":["Prim"],"eiImportType":{"Implicit":[]},"eiImportedAs":["Prim"]},{"eiModule":["Prim"],"eiImportType":{"Implicit":[]},"eiImportedAs":null},{"eiModule":["Control","Category"],"eiImportType":{"Explicit":[{"ValueRef":[{"start":[11,26],"name":"../../../support/bower_components/purescript-prelude/src/Data/Function.purs","end":[11,34]},{"Ident":"identity"}]},{"ValueRef":[{"start":[11,36],"name":"../../../support/bower_components/purescript-prelude/src/Data/Function.purs","end":[11,43]},{"Ident":"compose"}]},{"ValueOpRef":[{"start":[11,45],"name":"../../../support/bower_components/purescript-prelude/src/Data/Function.purs","end":[11,50]},"<<<"]},{"ValueOpRef":[{"start":[11,52],"name":"../../../support/bower_components/purescript-prelude/src/Data/Function.purs","end":[11,57]},">>>"]}]},"eiImportedAs":null},{"eiModule":["Data","Boolean"],"eiImportType":{"Explicit":[{"ValueRef":[{"start":[12,22],"name":"../../../support/bower_components/purescript-prelude/src/Data/Function.purs","end":[12,31]},{"Ident":"otherwise"}]}]},"eiImportedAs":null},{"eiModule":["Data","Ord"],"eiImportType":{"Explicit":[{"ValueOpRef":[{"start":[13,18],"name":"../../../support/bower_components/purescript-prelude/src/Data/Function.purs","end":[13,22]},"<="]}]},"eiImportedAs":null},{"eiModule":["Data","Ring"],"eiImportType":{"Explicit":[{"ValueOpRef":[{"start":[14,19],"name":"../../../support/bower_components/purescript-prelude/src/Data/Function.purs","end":[14,22]},"-"]}]},"eiImportedAs":null}],"efFixities":[{"efAssociativity":"infixr","efPrecedence":0,"efOperator":"$","efAlias":[["Data","Function"],{"Left":{"Ident":"apply"}}]},{"efAssociativity":"infixl","efPrecedence":1,"efOperator":"#","efAlias":[["Data","Function"],{"Left":{"Ident":"applyFlipped"}}]}],"efTypeFixities":[],"efDeclarations":[{"EDValue":{"edValueName":{"Ident":"flip"},"edValueType":{"annotation":[{"start":[21,9],"name":"../../../support/bower_components/purescript-prelude/src/Data/Function.purs","end":[21,51]},[]],"tag":"ForAll","contents":["c",{"annotation":[{"start":[21,16],"name":"../../../support/bower_components/purescript-prelude/src/Data/Function.purs","end":[21,51]},[]],"tag":"ForAll","contents":["b",{"annotation":[{"start":[21,16],"name":"../../../support/bower_components/purescript-prelude/src/Data/Function.purs","end":[21,51]},[]],"tag":"ForAll","contents":["a",{"annotation":[{"start":[21,23],"name":"../../../support/bower_components/purescript-prelude/src/Data/Function.purs","end":[21,51]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[21,23],"name":"../../../support/bower_components/purescript-prelude/src/Data/Function.purs","end":[21,51]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[21,37],"name":"../../../support/bower_components/purescript-prelude/src/Data/Function.purs","end":[21,39]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[21,24],"name":"../../../support/bower_components/purescript-prelude/src/Data/Function.purs","end":[21,35]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[21,24],"name":"../../../support/bower_components/purescript-prelude/src/Data/Function.purs","end":[21,35]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[21,26],"name":"../../../support/bower_components/purescript-prelude/src/Data/Function.purs","end":[21,28]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[21,24],"name":"../../../support/bower_components/purescript-prelude/src/Data/Function.purs","end":[21,25]},[]],"tag":"TypeVar","contents":"a"}]},{"annotation":[{"start":[21,29],"name":"../../../support/bower_components/purescript-prelude/src/Data/Function.purs","end":[21,35]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[21,29],"name":"../../../support/bower_components/purescript-prelude/src/Data/Function.purs","end":[21,35]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[21,31],"name":"../../../support/bower_components/purescript-prelude/src/Data/Function.purs","end":[21,33]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[21,29],"name":"../../../support/bower_components/purescript-prelude/src/Data/Function.purs","end":[21,30]},[]],"tag":"TypeVar","contents":"b"}]},{"annotation":[{"start":[21,34],"name":"../../../support/bower_components/purescript-prelude/src/Data/Function.purs","end":[21,35]},[]],"tag":"TypeVar","contents":"c"}]}]}]},{"annotation":[{"start":[21,40],"name":"../../../support/bower_components/purescript-prelude/src/Data/Function.purs","end":[21,51]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[21,40],"name":"../../../support/bower_components/purescript-prelude/src/Data/Function.purs","end":[21,51]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[21,42],"name":"../../../support/bower_components/purescript-prelude/src/Data/Function.purs","end":[21,44]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[21,40],"name":"../../../support/bower_components/purescript-prelude/src/Data/Function.purs","end":[21,41]},[]],"tag":"TypeVar","contents":"b"}]},{"annotation":[{"start":[21,45],"name":"../../../support/bower_components/purescript-prelude/src/Data/Function.purs","end":[21,51]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[21,45],"name":"../../../support/bower_components/purescript-prelude/src/Data/Function.purs","end":[21,51]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[21,47],"name":"../../../support/bower_components/purescript-prelude/src/Data/Function.purs","end":[21,49]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[21,45],"name":"../../../support/bower_components/purescript-prelude/src/Data/Function.purs","end":[21,46]},[]],"tag":"TypeVar","contents":"a"}]},{"annotation":[{"start":[21,50],"name":"../../../support/bower_components/purescript-prelude/src/Data/Function.purs","end":[21,51]},[]],"tag":"TypeVar","contents":"c"}]}]}]},6]},7]},8]}}},{"EDValue":{"edValueName":{"Ident":"const"},"edValueType":{"annotation":[{"start":[29,10],"name":"../../../support/bower_components/purescript-prelude/src/Data/Function.purs","end":[29,33]},[]],"tag":"ForAll","contents":["b",{"annotation":[{"start":[29,17],"name":"../../../support/bower_components/purescript-prelude/src/Data/Function.purs","end":[29,33]},[]],"tag":"ForAll","contents":["a",{"annotation":[{"start":[29,22],"name":"../../../support/bower_components/purescript-prelude/src/Data/Function.purs","end":[29,33]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[29,22],"name":"../../../support/bower_components/purescript-prelude/src/Data/Function.purs","end":[29,33]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[29,24],"name":"../../../support/bower_components/purescript-prelude/src/Data/Function.purs","end":[29,26]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[29,22],"name":"../../../support/bower_components/purescript-prelude/src/Data/Function.purs","end":[29,23]},[]],"tag":"TypeVar","contents":"a"}]},{"annotation":[{"start":[29,27],"name":"../../../support/bower_components/purescript-prelude/src/Data/Function.purs","end":[29,33]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[29,27],"name":"../../../support/bower_components/purescript-prelude/src/Data/Function.purs","end":[29,33]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[29,29],"name":"../../../support/bower_components/purescript-prelude/src/Data/Function.purs","end":[29,31]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[29,27],"name":"../../../support/bower_components/purescript-prelude/src/Data/Function.purs","end":[29,28]},[]],"tag":"TypeVar","contents":"b"}]},{"annotation":[{"start":[29,32],"name":"../../../support/bower_components/purescript-prelude/src/Data/Function.purs","end":[29,33]},[]],"tag":"TypeVar","contents":"a"}]}]},12]},13]}}},{"EDValue":{"edValueName":{"Ident":"apply"},"edValueType":{"annotation":[{"start":[35,10],"name":"../../../support/bower_components/purescript-prelude/src/Data/Function.purs","end":[35,40]},[]],"tag":"ForAll","contents":["b",{"annotation":[{"start":[35,17],"name":"../../../support/bower_components/purescript-prelude/src/Data/Function.purs","end":[35,40]},[]],"tag":"ForAll","contents":["a",{"annotation":[{"start":[35,22],"name":"../../../support/bower_components/purescript-prelude/src/Data/Function.purs","end":[35,40]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[35,22],"name":"../../../support/bower_components/purescript-prelude/src/Data/Function.purs","end":[35,40]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[35,31],"name":"../../../support/bower_components/purescript-prelude/src/Data/Function.purs","end":[35,33]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[35,23],"name":"../../../support/bower_components/purescript-prelude/src/Data/Function.purs","end":[35,29]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[35,23],"name":"../../../support/bower_components/purescript-prelude/src/Data/Function.purs","end":[35,29]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[35,25],"name":"../../../support/bower_components/purescript-prelude/src/Data/Function.purs","end":[35,27]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[35,23],"name":"../../../support/bower_components/purescript-prelude/src/Data/Function.purs","end":[35,24]},[]],"tag":"TypeVar","contents":"a"}]},{"annotation":[{"start":[35,28],"name":"../../../support/bower_components/purescript-prelude/src/Data/Function.purs","end":[35,29]},[]],"tag":"TypeVar","contents":"b"}]}]},{"annotation":[{"start":[35,34],"name":"../../../support/bower_components/purescript-prelude/src/Data/Function.purs","end":[35,40]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[35,34],"name":"../../../support/bower_components/purescript-prelude/src/Data/Function.purs","end":[35,40]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[35,36],"name":"../../../support/bower_components/purescript-prelude/src/Data/Function.purs","end":[35,38]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[35,34],"name":"../../../support/bower_components/purescript-prelude/src/Data/Function.purs","end":[35,35]},[]],"tag":"TypeVar","contents":"a"}]},{"annotation":[{"start":[35,39],"name":"../../../support/bower_components/purescript-prelude/src/Data/Function.purs","end":[35,40]},[]],"tag":"TypeVar","contents":"b"}]}]},22]},23]}}},{"EDValue":{"edValueName":{"Ident":"applyFlipped"},"edValueType":{"annotation":[{"start":[61,17],"name":"../../../support/bower_components/purescript-prelude/src/Data/Function.purs","end":[61,47]},[]],"tag":"ForAll","contents":["b",{"annotation":[{"start":[61,24],"name":"../../../support/bower_components/purescript-prelude/src/Data/Function.purs","end":[61,47]},[]],"tag":"ForAll","contents":["a",{"annotation":[{"start":[61,29],"name":"../../../support/bower_components/purescript-prelude/src/Data/Function.purs","end":[61,47]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[61,29],"name":"../../../support/bower_components/purescript-prelude/src/Data/Function.purs","end":[61,47]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[61,31],"name":"../../../support/bower_components/purescript-prelude/src/Data/Function.purs","end":[61,33]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[61,29],"name":"../../../support/bower_components/purescript-prelude/src/Data/Function.purs","end":[61,30]},[]],"tag":"TypeVar","contents":"a"}]},{"annotation":[{"start":[61,34],"name":"../../../support/bower_components/purescript-prelude/src/Data/Function.purs","end":[61,47]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[61,34],"name":"../../../support/bower_components/purescript-prelude/src/Data/Function.purs","end":[61,47]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[61,43],"name":"../../../support/bower_components/purescript-prelude/src/Data/Function.purs","end":[61,45]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[61,35],"name":"../../../support/bower_components/purescript-prelude/src/Data/Function.purs","end":[61,41]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[61,35],"name":"../../../support/bower_components/purescript-prelude/src/Data/Function.purs","end":[61,41]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[61,37],"name":"../../../support/bower_components/purescript-prelude/src/Data/Function.purs","end":[61,39]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[61,35],"name":"../../../support/bower_components/purescript-prelude/src/Data/Function.purs","end":[61,36]},[]],"tag":"TypeVar","contents":"a"}]},{"annotation":[{"start":[61,40],"name":"../../../support/bower_components/purescript-prelude/src/Data/Function.purs","end":[61,41]},[]],"tag":"TypeVar","contents":"b"}]}]},{"annotation":[{"start":[61,46],"name":"../../../support/bower_components/purescript-prelude/src/Data/Function.purs","end":[61,47]},[]],"tag":"TypeVar","contents":"b"}]}]},18]},19]}}},{"EDValue":{"edValueName":{"Ident":"applyN"},"edValueType":{"annotation":[{"start":[91,11],"name":"../../../support/bower_components/purescript-prelude/src/Data/Function.purs","end":[91,46]},[]],"tag":"ForAll","contents":["a",{"annotation":[{"start":[91,21],"name":"../../../support/bower_components/purescript-prelude/src/Data/Function.purs","end":[91,46]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[91,21],"name":"../../../support/bower_components/purescript-prelude/src/Data/Function.purs","end":[91,46]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[91,30],"name":"../../../support/bower_components/purescript-prelude/src/Data/Function.purs","end":[91,32]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[91,22],"name":"../../../support/bower_components/purescript-prelude/src/Data/Function.purs","end":[91,28]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[91,22],"name":"../../../support/bower_components/purescript-prelude/src/Data/Function.purs","end":[91,28]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[91,24],"name":"../../../support/bower_components/purescript-prelude/src/Data/Function.purs","end":[91,26]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[91,22],"name":"../../../support/bower_components/purescript-prelude/src/Data/Function.purs","end":[91,23]},[]],"tag":"TypeVar","contents":"a"}]},{"annotation":[{"start":[91,27],"name":"../../../support/bower_components/purescript-prelude/src/Data/Function.purs","end":[91,28]},[]],"tag":"TypeVar","contents":"a"}]}]},{"annotation":[{"start":[91,33],"name":"../../../support/bower_components/purescript-prelude/src/Data/Function.purs","end":[91,46]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[91,33],"name":"../../../support/bower_components/purescript-prelude/src/Data/Function.purs","end":[91,46]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[91,37],"name":"../../../support/bower_components/purescript-prelude/src/Data/Function.purs","end":[91,39]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[91,33],"name":"../../../support/bower_components/purescript-prelude/src/Data/Function.purs","end":[91,36]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Int"]}]},{"annotation":[{"start":[91,40],"name":"../../../support/bower_components/purescript-prelude/src/Data/Function.purs","end":[91,46]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[91,40],"name":"../../../support/bower_components/purescript-prelude/src/Data/Function.purs","end":[91,46]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[91,42],"name":"../../../support/bower_components/purescript-prelude/src/Data/Function.purs","end":[91,44]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[91,40],"name":"../../../support/bower_components/purescript-prelude/src/Data/Function.purs","end":[91,41]},[]],"tag":"TypeVar","contents":"a"}]},{"annotation":[{"start":[91,45],"name":"../../../support/bower_components/purescript-prelude/src/Data/Function.purs","end":[91,46]},[]],"tag":"TypeVar","contents":"a"}]}]}]},16]}}},{"EDValue":{"edValueName":{"Ident":"on"},"edValueType":{"annotation":[{"start":[106,7],"name":"../../../support/bower_components/purescript-prelude/src/Data/Function.purs","end":[106,61]},[]],"tag":"ForAll","contents":["c",{"annotation":[{"start":[106,14],"name":"../../../support/bower_components/purescript-prelude/src/Data/Function.purs","end":[106,61]},[]],"tag":"ForAll","contents":["b",{"annotation":[{"start":[106,14],"name":"../../../support/bower_components/purescript-prelude/src/Data/Function.purs","end":[106,61]},[]],"tag":"ForAll","contents":["a",{"annotation":[{"start":[106,21],"name":"../../../support/bower_components/purescript-prelude/src/Data/Function.purs","end":[106,61]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[106,21],"name":"../../../support/bower_components/purescript-prelude/src/Data/Function.purs","end":[106,61]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[106,35],"name":"../../../support/bower_components/purescript-prelude/src/Data/Function.purs","end":[106,37]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[106,22],"name":"../../../support/bower_components/purescript-prelude/src/Data/Function.purs","end":[106,33]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[106,22],"name":"../../../support/bower_components/purescript-prelude/src/Data/Function.purs","end":[106,33]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[106,24],"name":"../../../support/bower_components/purescript-prelude/src/Data/Function.purs","end":[106,26]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[106,22],"name":"../../../support/bower_components/purescript-prelude/src/Data/Function.purs","end":[106,23]},[]],"tag":"TypeVar","contents":"b"}]},{"annotation":[{"start":[106,27],"name":"../../../support/bower_components/purescript-prelude/src/Data/Function.purs","end":[106,33]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[106,27],"name":"../../../support/bower_components/purescript-prelude/src/Data/Function.purs","end":[106,33]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[106,29],"name":"../../../support/bower_components/purescript-prelude/src/Data/Function.purs","end":[106,31]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[106,27],"name":"../../../support/bower_components/purescript-prelude/src/Data/Function.purs","end":[106,28]},[]],"tag":"TypeVar","contents":"b"}]},{"annotation":[{"start":[106,32],"name":"../../../support/bower_components/purescript-prelude/src/Data/Function.purs","end":[106,33]},[]],"tag":"TypeVar","contents":"c"}]}]}]},{"annotation":[{"start":[106,38],"name":"../../../support/bower_components/purescript-prelude/src/Data/Function.purs","end":[106,61]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[106,38],"name":"../../../support/bower_components/purescript-prelude/src/Data/Function.purs","end":[106,61]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[106,47],"name":"../../../support/bower_components/purescript-prelude/src/Data/Function.purs","end":[106,49]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[106,39],"name":"../../../support/bower_components/purescript-prelude/src/Data/Function.purs","end":[106,45]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[106,39],"name":"../../../support/bower_components/purescript-prelude/src/Data/Function.purs","end":[106,45]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[106,41],"name":"../../../support/bower_components/purescript-prelude/src/Data/Function.purs","end":[106,43]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[106,39],"name":"../../../support/bower_components/purescript-prelude/src/Data/Function.purs","end":[106,40]},[]],"tag":"TypeVar","contents":"a"}]},{"annotation":[{"start":[106,44],"name":"../../../support/bower_components/purescript-prelude/src/Data/Function.purs","end":[106,45]},[]],"tag":"TypeVar","contents":"b"}]}]},{"annotation":[{"start":[106,50],"name":"../../../support/bower_components/purescript-prelude/src/Data/Function.purs","end":[106,61]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[106,50],"name":"../../../support/bower_components/purescript-prelude/src/Data/Function.purs","end":[106,61]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[106,52],"name":"../../../support/bower_components/purescript-prelude/src/Data/Function.purs","end":[106,54]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[106,50],"name":"../../../support/bower_components/purescript-prelude/src/Data/Function.purs","end":[106,51]},[]],"tag":"TypeVar","contents":"a"}]},{"annotation":[{"start":[106,55],"name":"../../../support/bower_components/purescript-prelude/src/Data/Function.purs","end":[106,61]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[106,55],"name":"../../../support/bower_components/purescript-prelude/src/Data/Function.purs","end":[106,61]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[106,57],"name":"../../../support/bower_components/purescript-prelude/src/Data/Function.purs","end":[106,59]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[106,55],"name":"../../../support/bower_components/purescript-prelude/src/Data/Function.purs","end":[106,56]},[]],"tag":"TypeVar","contents":"a"}]},{"annotation":[{"start":[106,60],"name":"../../../support/bower_components/purescript-prelude/src/Data/Function.purs","end":[106,61]},[]],"tag":"TypeVar","contents":"c"}]}]}]}]},0]},1]},2]}}}],"efSourceSpan":{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Data/Function.purs","end":[107,25]}} \ No newline at end of file
diff --git a/tests/purs/publish/basic-example/output/Data.Functor/externs.json b/tests/purs/publish/basic-example/output/Data.Functor/externs.json
deleted file mode 100644
index bd34c99..0000000
--- a/tests/purs/publish/basic-example/output/Data.Functor/externs.json
+++ /dev/null
@@ -1 +0,0 @@
-{"efVersion":"0.13.4","efModuleName":["Data","Functor"],"efExports":[{"TypeClassRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Data/Functor.purs","end":[96,21]},"Functor"]},{"ValueRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Data/Functor.purs","end":[96,21]},{"Ident":"map"}]},{"ValueOpRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Data/Functor.purs","end":[96,21]},"<$>"]},{"ValueRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Data/Functor.purs","end":[96,21]},{"Ident":"mapFlipped"}]},{"ValueOpRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Data/Functor.purs","end":[96,21]},"<#>"]},{"ValueRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Data/Functor.purs","end":[96,21]},{"Ident":"void"}]},{"ValueRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Data/Functor.purs","end":[96,21]},{"Ident":"voidRight"}]},{"ValueOpRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Data/Functor.purs","end":[96,21]},"<$"]},{"ValueRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Data/Functor.purs","end":[96,21]},{"Ident":"voidLeft"}]},{"ValueOpRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Data/Functor.purs","end":[96,21]},"$>"]},{"ValueRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Data/Functor.purs","end":[96,21]},{"Ident":"flap"}]},{"ValueOpRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Data/Functor.purs","end":[96,21]},"<@>"]},{"TypeInstanceRef":[{"start":[0,0],"name":"<generated>","end":[0,0]},{"Ident":"functorFn"}]},{"TypeInstanceRef":[{"start":[0,0],"name":"<generated>","end":[0,0]},{"Ident":"functorArray"}]}],"efImports":[{"eiModule":["Prim"],"eiImportType":{"Implicit":[]},"eiImportedAs":["Prim"]},{"eiModule":["Prim"],"eiImportType":{"Implicit":[]},"eiImportedAs":null},{"eiModule":["Data","Function"],"eiImportType":{"Explicit":[{"ValueRef":[{"start":[10,23],"name":"../../../support/bower_components/purescript-prelude/src/Data/Functor.purs","end":[10,28]},{"Ident":"const"}]},{"ValueRef":[{"start":[10,30],"name":"../../../support/bower_components/purescript-prelude/src/Data/Functor.purs","end":[10,37]},{"Ident":"compose"}]}]},"eiImportedAs":null},{"eiModule":["Data","Unit"],"eiImportType":{"Explicit":[{"TypeRef":[{"start":[11,19],"name":"../../../support/bower_components/purescript-prelude/src/Data/Functor.purs","end":[11,23]},"Unit",[]]},{"ValueRef":[{"start":[11,25],"name":"../../../support/bower_components/purescript-prelude/src/Data/Functor.purs","end":[11,29]},{"Ident":"unit"}]}]},"eiImportedAs":null}],"efFixities":[{"efAssociativity":"infixl","efPrecedence":4,"efOperator":"<$>","efAlias":[["Data","Functor"],{"Left":{"Ident":"map"}}]},{"efAssociativity":"infixl","efPrecedence":1,"efOperator":"<#>","efAlias":[["Data","Functor"],{"Left":{"Ident":"mapFlipped"}}]},{"efAssociativity":"infixl","efPrecedence":4,"efOperator":"<$","efAlias":[["Data","Functor"],{"Left":{"Ident":"voidRight"}}]},{"efAssociativity":"infixl","efPrecedence":4,"efOperator":"$>","efAlias":[["Data","Functor"],{"Left":{"Ident":"voidLeft"}}]},{"efAssociativity":"infixl","efPrecedence":4,"efOperator":"<@>","efAlias":[["Data","Functor"],{"Left":{"Ident":"flap"}}]}],"efTypeFixities":[],"efDeclarations":[{"EDType":{"edTypeName":"Functor","edTypeKind":{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"FunKind","contents":[{"annotation":[{"start":[25,34],"name":"../../../support/bower_components/purescript-prelude/src/Data/Functor.purs","end":[25,37]},[]],"tag":"FunKind","contents":[{"annotation":[{"start":[25,25],"name":"../../../support/bower_components/purescript-prelude/src/Data/Functor.purs","end":[25,27]},[]],"tag":"NamedKind","contents":[["Prim"],"Type"]},{"annotation":[{"start":[25,38],"name":"../../../support/bower_components/purescript-prelude/src/Data/Functor.purs","end":[25,40]},[]],"tag":"NamedKind","contents":[["Prim"],"Type"]}]},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"NamedKind","contents":[["Prim"],"Type"]}]},"edTypeDeclarationKind":"TypeSynonym"}},{"EDTypeSynonym":{"edTypeSynonymName":"Functor","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":["map",{"annotation":[{"start":[25,10],"name":"../../../support/bower_components/purescript-prelude/src/Data/Functor.purs","end":[25,44]},[]],"tag":"ForAll","contents":["b",{"annotation":[{"start":[25,17],"name":"../../../support/bower_components/purescript-prelude/src/Data/Functor.purs","end":[25,44]},[]],"tag":"ForAll","contents":["a",{"annotation":[{"start":[25,22],"name":"../../../support/bower_components/purescript-prelude/src/Data/Functor.purs","end":[25,44]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[25,22],"name":"../../../support/bower_components/purescript-prelude/src/Data/Functor.purs","end":[25,44]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[25,31],"name":"../../../support/bower_components/purescript-prelude/src/Data/Functor.purs","end":[25,33]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[25,23],"name":"../../../support/bower_components/purescript-prelude/src/Data/Functor.purs","end":[25,29]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[25,23],"name":"../../../support/bower_components/purescript-prelude/src/Data/Functor.purs","end":[25,29]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[25,25],"name":"../../../support/bower_components/purescript-prelude/src/Data/Functor.purs","end":[25,27]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[25,23],"name":"../../../support/bower_components/purescript-prelude/src/Data/Functor.purs","end":[25,24]},[]],"tag":"TypeVar","contents":"a"}]},{"annotation":[{"start":[25,28],"name":"../../../support/bower_components/purescript-prelude/src/Data/Functor.purs","end":[25,29]},[]],"tag":"TypeVar","contents":"b"}]}]},{"annotation":[{"start":[25,34],"name":"../../../support/bower_components/purescript-prelude/src/Data/Functor.purs","end":[25,44]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[25,34],"name":"../../../support/bower_components/purescript-prelude/src/Data/Functor.purs","end":[25,44]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[25,38],"name":"../../../support/bower_components/purescript-prelude/src/Data/Functor.purs","end":[25,40]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[25,34],"name":"../../../support/bower_components/purescript-prelude/src/Data/Functor.purs","end":[25,37]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[25,34],"name":"../../../support/bower_components/purescript-prelude/src/Data/Functor.purs","end":[25,35]},[]],"tag":"TypeVar","contents":"f"},{"annotation":[{"start":[25,36],"name":"../../../support/bower_components/purescript-prelude/src/Data/Functor.purs","end":[25,37]},[]],"tag":"TypeVar","contents":"a"}]}]},{"annotation":[{"start":[25,41],"name":"../../../support/bower_components/purescript-prelude/src/Data/Functor.purs","end":[25,44]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[25,41],"name":"../../../support/bower_components/purescript-prelude/src/Data/Functor.purs","end":[25,42]},[]],"tag":"TypeVar","contents":"f"},{"annotation":[{"start":[25,43],"name":"../../../support/bower_components/purescript-prelude/src/Data/Functor.purs","end":[25,44]},[]],"tag":"TypeVar","contents":"b"}]}]}]},null]},null]},{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"REmpty"}]}]}}},{"EDClass":{"edClassName":"Functor","edClassTypeArguments":[["f",null]],"edClassMembers":[[{"Ident":"map"},{"annotation":[{"start":[25,10],"name":"../../../support/bower_components/purescript-prelude/src/Data/Functor.purs","end":[25,44]},[]],"tag":"ForAll","contents":["b",{"annotation":[{"start":[25,17],"name":"../../../support/bower_components/purescript-prelude/src/Data/Functor.purs","end":[25,44]},[]],"tag":"ForAll","contents":["a",{"annotation":[{"start":[25,22],"name":"../../../support/bower_components/purescript-prelude/src/Data/Functor.purs","end":[25,44]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[25,22],"name":"../../../support/bower_components/purescript-prelude/src/Data/Functor.purs","end":[25,44]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[25,31],"name":"../../../support/bower_components/purescript-prelude/src/Data/Functor.purs","end":[25,33]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[25,23],"name":"../../../support/bower_components/purescript-prelude/src/Data/Functor.purs","end":[25,29]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[25,23],"name":"../../../support/bower_components/purescript-prelude/src/Data/Functor.purs","end":[25,29]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[25,25],"name":"../../../support/bower_components/purescript-prelude/src/Data/Functor.purs","end":[25,27]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[25,23],"name":"../../../support/bower_components/purescript-prelude/src/Data/Functor.purs","end":[25,24]},[]],"tag":"TypeVar","contents":"a"}]},{"annotation":[{"start":[25,28],"name":"../../../support/bower_components/purescript-prelude/src/Data/Functor.purs","end":[25,29]},[]],"tag":"TypeVar","contents":"b"}]}]},{"annotation":[{"start":[25,34],"name":"../../../support/bower_components/purescript-prelude/src/Data/Functor.purs","end":[25,44]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[25,34],"name":"../../../support/bower_components/purescript-prelude/src/Data/Functor.purs","end":[25,44]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[25,38],"name":"../../../support/bower_components/purescript-prelude/src/Data/Functor.purs","end":[25,40]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[25,34],"name":"../../../support/bower_components/purescript-prelude/src/Data/Functor.purs","end":[25,37]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[25,34],"name":"../../../support/bower_components/purescript-prelude/src/Data/Functor.purs","end":[25,35]},[]],"tag":"TypeVar","contents":"f"},{"annotation":[{"start":[25,36],"name":"../../../support/bower_components/purescript-prelude/src/Data/Functor.purs","end":[25,37]},[]],"tag":"TypeVar","contents":"a"}]}]},{"annotation":[{"start":[25,41],"name":"../../../support/bower_components/purescript-prelude/src/Data/Functor.purs","end":[25,44]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[25,41],"name":"../../../support/bower_components/purescript-prelude/src/Data/Functor.purs","end":[25,42]},[]],"tag":"TypeVar","contents":"f"},{"annotation":[{"start":[25,43],"name":"../../../support/bower_components/purescript-prelude/src/Data/Functor.purs","end":[25,44]},[]],"tag":"TypeVar","contents":"b"}]}]}]},null]},null]}]],"edClassConstraints":[],"edFunctionalDependencies":[],"edIsEmpty":false}},{"EDValue":{"edValueName":{"Ident":"map"},"edValueType":{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"ForAll","contents":["f",{"annotation":[{"start":[25,10],"name":"../../../support/bower_components/purescript-prelude/src/Data/Functor.purs","end":[25,44]},[]],"tag":"ForAll","contents":["b",{"annotation":[{"start":[25,17],"name":"../../../support/bower_components/purescript-prelude/src/Data/Functor.purs","end":[25,44]},[]],"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","Functor"],"Functor"],"constraintArgs":[{"annotation":[{"start":[0,0],"name":"","end":[0,0]},[]],"tag":"TypeVar","contents":"f"}],"constraintData":null},{"annotation":[{"start":[25,22],"name":"../../../support/bower_components/purescript-prelude/src/Data/Functor.purs","end":[25,44]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[25,22],"name":"../../../support/bower_components/purescript-prelude/src/Data/Functor.purs","end":[25,44]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[25,31],"name":"../../../support/bower_components/purescript-prelude/src/Data/Functor.purs","end":[25,33]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[25,23],"name":"../../../support/bower_components/purescript-prelude/src/Data/Functor.purs","end":[25,29]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[25,23],"name":"../../../support/bower_components/purescript-prelude/src/Data/Functor.purs","end":[25,29]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[25,25],"name":"../../../support/bower_components/purescript-prelude/src/Data/Functor.purs","end":[25,27]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[25,23],"name":"../../../support/bower_components/purescript-prelude/src/Data/Functor.purs","end":[25,24]},[]],"tag":"TypeVar","contents":"a"}]},{"annotation":[{"start":[25,28],"name":"../../../support/bower_components/purescript-prelude/src/Data/Functor.purs","end":[25,29]},[]],"tag":"TypeVar","contents":"b"}]}]},{"annotation":[{"start":[25,34],"name":"../../../support/bower_components/purescript-prelude/src/Data/Functor.purs","end":[25,44]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[25,34],"name":"../../../support/bower_components/purescript-prelude/src/Data/Functor.purs","end":[25,44]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[25,38],"name":"../../../support/bower_components/purescript-prelude/src/Data/Functor.purs","end":[25,40]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[25,34],"name":"../../../support/bower_components/purescript-prelude/src/Data/Functor.purs","end":[25,37]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[25,34],"name":"../../../support/bower_components/purescript-prelude/src/Data/Functor.purs","end":[25,35]},[]],"tag":"TypeVar","contents":"f"},{"annotation":[{"start":[25,36],"name":"../../../support/bower_components/purescript-prelude/src/Data/Functor.purs","end":[25,37]},[]],"tag":"TypeVar","contents":"a"}]}]},{"annotation":[{"start":[25,41],"name":"../../../support/bower_components/purescript-prelude/src/Data/Functor.purs","end":[25,44]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[25,41],"name":"../../../support/bower_components/purescript-prelude/src/Data/Functor.purs","end":[25,42]},[]],"tag":"TypeVar","contents":"f"},{"annotation":[{"start":[25,43],"name":"../../../support/bower_components/purescript-prelude/src/Data/Functor.purs","end":[25,44]},[]],"tag":"TypeVar","contents":"b"}]}]}]}]},0]},1]},2]}}},{"EDValue":{"edValueName":{"Ident":"mapFlipped"},"edValueType":{"annotation":[{"start":[34,15],"name":"../../../support/bower_components/purescript-prelude/src/Data/Functor.purs","end":[34,64]},[]],"tag":"ForAll","contents":["b",{"annotation":[{"start":[34,22],"name":"../../../support/bower_components/purescript-prelude/src/Data/Functor.purs","end":[34,64]},[]],"tag":"ForAll","contents":["a",{"annotation":[{"start":[34,22],"name":"../../../support/bower_components/purescript-prelude/src/Data/Functor.purs","end":[34,64]},[]],"tag":"ForAll","contents":["f",{"annotation":[{"start":[34,29],"name":"../../../support/bower_components/purescript-prelude/src/Data/Functor.purs","end":[34,64]},[]],"tag":"ConstrainedType","contents":[{"constraintAnn":[{"start":[34,29],"name":"../../../support/bower_components/purescript-prelude/src/Data/Functor.purs","end":[34,38]},[]],"constraintClass":[["Data","Functor"],"Functor"],"constraintArgs":[{"annotation":[{"start":[34,37],"name":"../../../support/bower_components/purescript-prelude/src/Data/Functor.purs","end":[34,38]},[]],"tag":"TypeVar","contents":"f"}],"constraintData":null},{"annotation":[{"start":[34,42],"name":"../../../support/bower_components/purescript-prelude/src/Data/Functor.purs","end":[34,64]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[34,42],"name":"../../../support/bower_components/purescript-prelude/src/Data/Functor.purs","end":[34,64]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[34,46],"name":"../../../support/bower_components/purescript-prelude/src/Data/Functor.purs","end":[34,48]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[34,42],"name":"../../../support/bower_components/purescript-prelude/src/Data/Functor.purs","end":[34,45]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[34,42],"name":"../../../support/bower_components/purescript-prelude/src/Data/Functor.purs","end":[34,43]},[]],"tag":"TypeVar","contents":"f"},{"annotation":[{"start":[34,44],"name":"../../../support/bower_components/purescript-prelude/src/Data/Functor.purs","end":[34,45]},[]],"tag":"TypeVar","contents":"a"}]}]},{"annotation":[{"start":[34,49],"name":"../../../support/bower_components/purescript-prelude/src/Data/Functor.purs","end":[34,64]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[34,49],"name":"../../../support/bower_components/purescript-prelude/src/Data/Functor.purs","end":[34,64]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[34,58],"name":"../../../support/bower_components/purescript-prelude/src/Data/Functor.purs","end":[34,60]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[34,50],"name":"../../../support/bower_components/purescript-prelude/src/Data/Functor.purs","end":[34,56]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[34,50],"name":"../../../support/bower_components/purescript-prelude/src/Data/Functor.purs","end":[34,56]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[34,52],"name":"../../../support/bower_components/purescript-prelude/src/Data/Functor.purs","end":[34,54]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[34,50],"name":"../../../support/bower_components/purescript-prelude/src/Data/Functor.purs","end":[34,51]},[]],"tag":"TypeVar","contents":"a"}]},{"annotation":[{"start":[34,55],"name":"../../../support/bower_components/purescript-prelude/src/Data/Functor.purs","end":[34,56]},[]],"tag":"TypeVar","contents":"b"}]}]},{"annotation":[{"start":[34,61],"name":"../../../support/bower_components/purescript-prelude/src/Data/Functor.purs","end":[34,64]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[34,61],"name":"../../../support/bower_components/purescript-prelude/src/Data/Functor.purs","end":[34,62]},[]],"tag":"TypeVar","contents":"f"},{"annotation":[{"start":[34,63],"name":"../../../support/bower_components/purescript-prelude/src/Data/Functor.purs","end":[34,64]},[]],"tag":"TypeVar","contents":"b"}]}]}]}]},3]},4]},5]}}},{"EDValue":{"edValueName":{"Ident":"void"},"edValueType":{"annotation":[{"start":[59,9],"name":"../../../support/bower_components/purescript-prelude/src/Data/Functor.purs","end":[59,47]},[]],"tag":"ForAll","contents":["a",{"annotation":[{"start":[59,16],"name":"../../../support/bower_components/purescript-prelude/src/Data/Functor.purs","end":[59,47]},[]],"tag":"ForAll","contents":["f",{"annotation":[{"start":[59,21],"name":"../../../support/bower_components/purescript-prelude/src/Data/Functor.purs","end":[59,47]},[]],"tag":"ConstrainedType","contents":[{"constraintAnn":[{"start":[59,21],"name":"../../../support/bower_components/purescript-prelude/src/Data/Functor.purs","end":[59,30]},[]],"constraintClass":[["Data","Functor"],"Functor"],"constraintArgs":[{"annotation":[{"start":[59,29],"name":"../../../support/bower_components/purescript-prelude/src/Data/Functor.purs","end":[59,30]},[]],"tag":"TypeVar","contents":"f"}],"constraintData":null},{"annotation":[{"start":[59,34],"name":"../../../support/bower_components/purescript-prelude/src/Data/Functor.purs","end":[59,47]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[59,34],"name":"../../../support/bower_components/purescript-prelude/src/Data/Functor.purs","end":[59,47]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[59,38],"name":"../../../support/bower_components/purescript-prelude/src/Data/Functor.purs","end":[59,40]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[59,34],"name":"../../../support/bower_components/purescript-prelude/src/Data/Functor.purs","end":[59,37]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[59,34],"name":"../../../support/bower_components/purescript-prelude/src/Data/Functor.purs","end":[59,35]},[]],"tag":"TypeVar","contents":"f"},{"annotation":[{"start":[59,36],"name":"../../../support/bower_components/purescript-prelude/src/Data/Functor.purs","end":[59,37]},[]],"tag":"TypeVar","contents":"a"}]}]},{"annotation":[{"start":[59,41],"name":"../../../support/bower_components/purescript-prelude/src/Data/Functor.purs","end":[59,47]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[59,41],"name":"../../../support/bower_components/purescript-prelude/src/Data/Functor.purs","end":[59,42]},[]],"tag":"TypeVar","contents":"f"},{"annotation":[{"start":[59,43],"name":"../../../support/bower_components/purescript-prelude/src/Data/Functor.purs","end":[59,47]},[]],"tag":"TypeConstructor","contents":[["Data","Unit"],"Unit"]}]}]}]},9]},10]}}},{"EDValue":{"edValueName":{"Ident":"voidRight"},"edValueType":{"annotation":[{"start":[64,14],"name":"../../../support/bower_components/purescript-prelude/src/Data/Functor.purs","end":[64,56]},[]],"tag":"ForAll","contents":["b",{"annotation":[{"start":[64,21],"name":"../../../support/bower_components/purescript-prelude/src/Data/Functor.purs","end":[64,56]},[]],"tag":"ForAll","contents":["a",{"annotation":[{"start":[64,21],"name":"../../../support/bower_components/purescript-prelude/src/Data/Functor.purs","end":[64,56]},[]],"tag":"ForAll","contents":["f",{"annotation":[{"start":[64,28],"name":"../../../support/bower_components/purescript-prelude/src/Data/Functor.purs","end":[64,56]},[]],"tag":"ConstrainedType","contents":[{"constraintAnn":[{"start":[64,28],"name":"../../../support/bower_components/purescript-prelude/src/Data/Functor.purs","end":[64,37]},[]],"constraintClass":[["Data","Functor"],"Functor"],"constraintArgs":[{"annotation":[{"start":[64,36],"name":"../../../support/bower_components/purescript-prelude/src/Data/Functor.purs","end":[64,37]},[]],"tag":"TypeVar","contents":"f"}],"constraintData":null},{"annotation":[{"start":[64,41],"name":"../../../support/bower_components/purescript-prelude/src/Data/Functor.purs","end":[64,56]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[64,41],"name":"../../../support/bower_components/purescript-prelude/src/Data/Functor.purs","end":[64,56]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[64,43],"name":"../../../support/bower_components/purescript-prelude/src/Data/Functor.purs","end":[64,45]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[64,41],"name":"../../../support/bower_components/purescript-prelude/src/Data/Functor.purs","end":[64,42]},[]],"tag":"TypeVar","contents":"a"}]},{"annotation":[{"start":[64,46],"name":"../../../support/bower_components/purescript-prelude/src/Data/Functor.purs","end":[64,56]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[64,46],"name":"../../../support/bower_components/purescript-prelude/src/Data/Functor.purs","end":[64,56]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[64,50],"name":"../../../support/bower_components/purescript-prelude/src/Data/Functor.purs","end":[64,52]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[64,46],"name":"../../../support/bower_components/purescript-prelude/src/Data/Functor.purs","end":[64,49]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[64,46],"name":"../../../support/bower_components/purescript-prelude/src/Data/Functor.purs","end":[64,47]},[]],"tag":"TypeVar","contents":"f"},{"annotation":[{"start":[64,48],"name":"../../../support/bower_components/purescript-prelude/src/Data/Functor.purs","end":[64,49]},[]],"tag":"TypeVar","contents":"b"}]}]},{"annotation":[{"start":[64,53],"name":"../../../support/bower_components/purescript-prelude/src/Data/Functor.purs","end":[64,56]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[64,53],"name":"../../../support/bower_components/purescript-prelude/src/Data/Functor.purs","end":[64,54]},[]],"tag":"TypeVar","contents":"f"},{"annotation":[{"start":[64,55],"name":"../../../support/bower_components/purescript-prelude/src/Data/Functor.purs","end":[64,56]},[]],"tag":"TypeVar","contents":"a"}]}]}]}]},19]},20]},21]}}},{"EDValue":{"edValueName":{"Ident":"voidLeft"},"edValueType":{"annotation":[{"start":[70,13],"name":"../../../support/bower_components/purescript-prelude/src/Data/Functor.purs","end":[70,55]},[]],"tag":"ForAll","contents":["b",{"annotation":[{"start":[70,20],"name":"../../../support/bower_components/purescript-prelude/src/Data/Functor.purs","end":[70,55]},[]],"tag":"ForAll","contents":["a",{"annotation":[{"start":[70,20],"name":"../../../support/bower_components/purescript-prelude/src/Data/Functor.purs","end":[70,55]},[]],"tag":"ForAll","contents":["f",{"annotation":[{"start":[70,27],"name":"../../../support/bower_components/purescript-prelude/src/Data/Functor.purs","end":[70,55]},[]],"tag":"ConstrainedType","contents":[{"constraintAnn":[{"start":[70,27],"name":"../../../support/bower_components/purescript-prelude/src/Data/Functor.purs","end":[70,36]},[]],"constraintClass":[["Data","Functor"],"Functor"],"constraintArgs":[{"annotation":[{"start":[70,35],"name":"../../../support/bower_components/purescript-prelude/src/Data/Functor.purs","end":[70,36]},[]],"tag":"TypeVar","contents":"f"}],"constraintData":null},{"annotation":[{"start":[70,40],"name":"../../../support/bower_components/purescript-prelude/src/Data/Functor.purs","end":[70,55]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[70,40],"name":"../../../support/bower_components/purescript-prelude/src/Data/Functor.purs","end":[70,55]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[70,44],"name":"../../../support/bower_components/purescript-prelude/src/Data/Functor.purs","end":[70,46]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[70,40],"name":"../../../support/bower_components/purescript-prelude/src/Data/Functor.purs","end":[70,43]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[70,40],"name":"../../../support/bower_components/purescript-prelude/src/Data/Functor.purs","end":[70,41]},[]],"tag":"TypeVar","contents":"f"},{"annotation":[{"start":[70,42],"name":"../../../support/bower_components/purescript-prelude/src/Data/Functor.purs","end":[70,43]},[]],"tag":"TypeVar","contents":"a"}]}]},{"annotation":[{"start":[70,47],"name":"../../../support/bower_components/purescript-prelude/src/Data/Functor.purs","end":[70,55]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[70,47],"name":"../../../support/bower_components/purescript-prelude/src/Data/Functor.purs","end":[70,55]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[70,49],"name":"../../../support/bower_components/purescript-prelude/src/Data/Functor.purs","end":[70,51]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[70,47],"name":"../../../support/bower_components/purescript-prelude/src/Data/Functor.purs","end":[70,48]},[]],"tag":"TypeVar","contents":"b"}]},{"annotation":[{"start":[70,52],"name":"../../../support/bower_components/purescript-prelude/src/Data/Functor.purs","end":[70,55]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[70,52],"name":"../../../support/bower_components/purescript-prelude/src/Data/Functor.purs","end":[70,53]},[]],"tag":"TypeVar","contents":"f"},{"annotation":[{"start":[70,54],"name":"../../../support/bower_components/purescript-prelude/src/Data/Functor.purs","end":[70,55]},[]],"tag":"TypeVar","contents":"b"}]}]}]}]},13]},14]},15]}}},{"EDValue":{"edValueName":{"Ident":"flap"},"edValueType":{"annotation":[{"start":[93,9],"name":"../../../support/bower_components/purescript-prelude/src/Data/Functor.purs","end":[93,58]},[]],"tag":"ForAll","contents":["b",{"annotation":[{"start":[93,16],"name":"../../../support/bower_components/purescript-prelude/src/Data/Functor.purs","end":[93,58]},[]],"tag":"ForAll","contents":["a",{"annotation":[{"start":[93,16],"name":"../../../support/bower_components/purescript-prelude/src/Data/Functor.purs","end":[93,58]},[]],"tag":"ForAll","contents":["f",{"annotation":[{"start":[93,23],"name":"../../../support/bower_components/purescript-prelude/src/Data/Functor.purs","end":[93,58]},[]],"tag":"ConstrainedType","contents":[{"constraintAnn":[{"start":[93,23],"name":"../../../support/bower_components/purescript-prelude/src/Data/Functor.purs","end":[93,32]},[]],"constraintClass":[["Data","Functor"],"Functor"],"constraintArgs":[{"annotation":[{"start":[93,31],"name":"../../../support/bower_components/purescript-prelude/src/Data/Functor.purs","end":[93,32]},[]],"tag":"TypeVar","contents":"f"}],"constraintData":null},{"annotation":[{"start":[93,36],"name":"../../../support/bower_components/purescript-prelude/src/Data/Functor.purs","end":[93,58]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[93,36],"name":"../../../support/bower_components/purescript-prelude/src/Data/Functor.purs","end":[93,58]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[93,47],"name":"../../../support/bower_components/purescript-prelude/src/Data/Functor.purs","end":[93,49]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[93,36],"name":"../../../support/bower_components/purescript-prelude/src/Data/Functor.purs","end":[93,46]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[93,36],"name":"../../../support/bower_components/purescript-prelude/src/Data/Functor.purs","end":[93,37]},[]],"tag":"TypeVar","contents":"f"},{"annotation":[{"start":[93,39],"name":"../../../support/bower_components/purescript-prelude/src/Data/Functor.purs","end":[93,45]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[93,39],"name":"../../../support/bower_components/purescript-prelude/src/Data/Functor.purs","end":[93,45]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[93,41],"name":"../../../support/bower_components/purescript-prelude/src/Data/Functor.purs","end":[93,43]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[93,39],"name":"../../../support/bower_components/purescript-prelude/src/Data/Functor.purs","end":[93,40]},[]],"tag":"TypeVar","contents":"a"}]},{"annotation":[{"start":[93,44],"name":"../../../support/bower_components/purescript-prelude/src/Data/Functor.purs","end":[93,45]},[]],"tag":"TypeVar","contents":"b"}]}]}]},{"annotation":[{"start":[93,50],"name":"../../../support/bower_components/purescript-prelude/src/Data/Functor.purs","end":[93,58]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[93,50],"name":"../../../support/bower_components/purescript-prelude/src/Data/Functor.purs","end":[93,58]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[93,52],"name":"../../../support/bower_components/purescript-prelude/src/Data/Functor.purs","end":[93,54]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[93,50],"name":"../../../support/bower_components/purescript-prelude/src/Data/Functor.purs","end":[93,51]},[]],"tag":"TypeVar","contents":"a"}]},{"annotation":[{"start":[93,55],"name":"../../../support/bower_components/purescript-prelude/src/Data/Functor.purs","end":[93,58]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[93,55],"name":"../../../support/bower_components/purescript-prelude/src/Data/Functor.purs","end":[93,56]},[]],"tag":"TypeVar","contents":"f"},{"annotation":[{"start":[93,57],"name":"../../../support/bower_components/purescript-prelude/src/Data/Functor.purs","end":[93,58]},[]],"tag":"TypeVar","contents":"b"}]}]}]}]},37]},38]},39]}}},{"EDInstance":{"edInstanceClassName":[["Data","Functor"],"Functor"],"edInstanceName":{"Ident":"functorFn"},"edInstanceTypes":[{"annotation":[{"start":[39,32],"name":"../../../support/bower_components/purescript-prelude/src/Data/Functor.purs","end":[39,38]},[]],"tag":"TypeApp","contents":[{"annotation":[{"start":[39,32],"name":"../../../support/bower_components/purescript-prelude/src/Data/Functor.purs","end":[39,36]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Function"]},{"annotation":[{"start":[39,37],"name":"../../../support/bower_components/purescript-prelude/src/Data/Functor.purs","end":[39,38]},[]],"tag":"TypeVar","contents":"r"}]}],"edInstanceConstraints":[],"edInstanceChain":[[["Data","Functor"],{"Ident":"functorFn"}]],"edInstanceChainIndex":0}},{"EDInstance":{"edInstanceClassName":[["Data","Functor"],"Functor"],"edInstanceName":{"Ident":"functorArray"},"edInstanceTypes":[{"annotation":[{"start":[42,34],"name":"../../../support/bower_components/purescript-prelude/src/Data/Functor.purs","end":[42,39]},[]],"tag":"TypeConstructor","contents":[["Prim"],"Array"]}],"edInstanceConstraints":[],"edInstanceChain":[[["Data","Functor"],{"Ident":"functorArray"}]],"edInstanceChainIndex":0}}],"efSourceSpan":{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Data/Functor.purs","end":[96,21]}} \ No newline at end of file
diff --git a/tests/purs/publish/basic-example/output/Data.HeytingAlgebra/externs.json b/tests/purs/publish/basic-example/output/Data.HeytingAlgebra/externs.json
deleted file mode 100644
index 1d59687..0000000
--- a/tests/purs/publish/basic-example/output/Data.HeytingAlgebra/externs.json
+++ /dev/null
@@ -1 +0,0 @@
-{"efVersion":"0.13.4","efModuleName":["Data","HeytingAlgebra"],"efExports":[{"TypeClassRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Data/HeytingAlgebra.purs","end":[150,59]},"HeytingAlgebra"]},{"ValueRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Data/HeytingAlgebra.purs","end":[150,59]},{"Ident":"tt"}]},{"ValueRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Data/HeytingAlgebra.purs","end":[150,59]},{"Ident":"ff"}]},{"ValueRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Data/HeytingAlgebra.purs","end":[150,59]},{"Ident":"implies"}]},{"ValueRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Data/HeytingAlgebra.purs","end":[150,59]},{"Ident":"conj"}]},{"ValueRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Data/HeytingAlgebra.purs","end":[150,59]},{"Ident":"disj"}]},{"ValueRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Data/HeytingAlgebra.purs","end":[150,59]},{"Ident":"not"}]},{"ValueOpRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Data/HeytingAlgebra.purs","end":[150,59]},"&&"]},{"ValueOpRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Data/HeytingAlgebra.purs","end":[150,59]},"||"]},{"TypeClassRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Data/HeytingAlgebra.purs","end":[150,59]},"HeytingAlgebraRecord"]},{"ValueRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Data/HeytingAlgebra.purs","end":[150,59]},{"Ident":"ffRecord"}]},{"ValueRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Data/HeytingAlgebra.purs","end":[150,59]},{"Ident":"ttRecord"}]},{"ValueRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Data/HeytingAlgebra.purs","end":[150,59]},{"Ident":"impliesRecord"}]},{"ValueRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Data/HeytingAlgebra.purs","end":[150,59]},{"Ident":"conjRecord"}]},{"ValueRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Data/HeytingAlgebra.purs","end":[150,59]},{"Ident":"disjRecord"}]},{"ValueRef":[{"start":[1,1],"name":"../../../support/bower_components/purescript-prelude/src/Data/HeytingAlgebra.purs","end":[150,59]},{"Ident":"notRecord"}]},{"TypeInstanceRef":[{"start":[0,0],"name":"<generated>","end":[0,0]},{"Ident":"heytingAlgebraBoolean"}]},{"TypeInstanceRef":[{"start":[0,0],"name":"<generated>","end":[0,0]},{"Ident":"heytingAlgebraUnit"}]},{"TypeInstanceRef":[{"start":[0,0],"name":"<generated>","end":[0,0]},{"Ident":"heytingAlgebraFunction"}]},{"TypeInstanceRef":[{"start":[0,0],"name":"<generated>","end":[0,0]},{"Ident":"heytingAlgebraRecord"}]},{"TypeInstanceRef":[{"start":[0,0],"name":"<generated>","end":[0,0]},{"Ident":"heytingAlgebraRecordNil"}]},{"TypeInstanceRef":[{"start":[0,0],"name":"<generated>","end":[0,0]},{"Ident":"heytingAlgebraRecordCons"}]}],"efImports":[{"eiModule":["Prim"],"eiImportType":{"Implicit":[]},"eiImportedAs":["Prim"]},{"eiModule":["Prim"],"eiImportType":{"Implicit":[]},"eiImportedAs":null},{"eiModule":["Data","Symbol"],"eiImportType":{"Explicit":[{"TypeClassRef":[{"start":[6,21],"name":"../../../support/bower_components/purescript-prelude/src/Data/HeytingAlgebra.purs","end":[6,35]},"IsSymbol"]},{"TypeRef":[{"start":[6,37],"name":"../../../support/bower_components/purescript-prelude/src/Data/HeytingAlgebra.purs","end":[6,47]},"SProxy",null]},{"ValueRef":[{"start":[6,49],"name":"../../../support/bower_components/purescript-prelude/src/Data/HeytingAlgebra.purs","end":[6,62]},{"Ident":"reflectSymbol"}]}]},"eiImportedAs":null},{"eiModule":["Data","Unit"],"eiImportType":{"Explicit":[{"TypeRef":[{"start":[7,19],"name":"../../../support/bower_components/purescript-prelude/src/Data/HeytingAlgebra.purs","end":[7,23]},"Unit",[]]},{"ValueRef":[{"start":[7,25],"name":"../../../support/bower_components/purescript-prelude/src/Data/HeytingAlgebra.purs","end":[7,29]},{"Ident":"unit"}]}]},"eiImportedAs":null},{"eiModule":["Prim","Row"],"eiImportType":{"Implicit":[]},"eiImportedAs":["Row"]},{"eiModule":["Prim","RowList"],"eiImportType":{"Implicit":[]},"eiImportedAs":["RL"]},{"eiModule":["Record","Unsafe"],"eiImportType":{"Explicit":[{"ValueRef":[{"start":[10,23],"name":"../../../support/bower_components/purescript-prelude/src/Data/HeytingAlgebra.purs","end