summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorhdgarrood <>2019-04-15 23:03:00 (GMT)
committerhdiff <hdiff@hdiff.luite.com>2019-04-15 23:03:00 (GMT)
commit804880ea1af7ec064f146ccf2b1c65590dfca657 (patch)
tree6f979063c6c9af3cd4287ee6b73b43cb417222f1
parent6abf0b97f82d952273a42d25cf9af3ed3516de93 (diff)
version 0.12.50.12.5
-rw-r--r--INSTALL.md10
-rw-r--r--LICENSE118
-rw-r--r--README.md2
-rw-r--r--app/Command/Ide.hs12
-rw-r--r--bundle/README13
-rwxr-xr-xbundle/build.sh62
-rw-r--r--purescript.cabal9
-rw-r--r--src/Language/PureScript/AST/Declarations.hs2
-rw-r--r--src/Language/PureScript/Errors.hs4
-rw-r--r--src/Language/PureScript/Ide/Imports.hs8
-rw-r--r--src/Language/PureScript/Sugar/TypeClasses.hs12
-rw-r--r--stack.yaml1
-rw-r--r--tests/purs/passing/3595.purs14
13 files changed, 205 insertions, 62 deletions
diff --git a/INSTALL.md b/INSTALL.md
index 9d729f9..232b5a6 100644
--- a/INSTALL.md
+++ b/INSTALL.md
@@ -6,14 +6,13 @@ alternatively Stack Overflow.
## Using prebuilt binaries
-The prebuilt binaries are compiled with GHC 8.2.2 and therefore they should
-run on any operating system supported by GHC 8.2.2, such as:
+The prebuilt binaries are compiled with GHC 8.6.4 and therefore they should run on any operating system supported by GHC 8.6.4, such as:
* Windows Vista or later,
* OS X 10.7 or later,
* Linux ??? (we're not sure what the minimum version is)
-This list is not exhaustive. If your OS is too old or not listed, or if the binaries fail to run, you may be able to install the compiler by building it from source; see below. See also <https://www.haskell.org/ghc/download_ghc_8_2_2.html> for more details about the operating systems which GHC 8.2.2 supports.
+This list is not exhaustive. If your OS is too old or not listed, or if the binaries fail to run, you may be able to install the compiler by building it from source; see below. See also <https://www.haskell.org/ghc/download_ghc_8_6_4.html> for more details about the operating systems which GHC 8.6.4 supports.
Other prebuilt distributions (eg, Homebrew, AUR, npm) will probably have the
same requirements.
@@ -24,10 +23,7 @@ There are several options available for aquiring a pre-built binary of the PureS
* NPM: `npm install -g purescript`
* Homebrew (for OS X): `brew install purescript`
-* [PSVM](https://github.com/ThomasCrevoisier/psvm-js) (PS Version Manager):
- 1) `psvm install-latest` will install the latest version available
- 2) `psvm latest` will print the latest version number available
- 3) `psvm use <latest version number>` will enable the version we just installed. For example, if the version is `v0.11.7`, you'd run `psvm use v0.11.7`
+* [PSVM](https://github.com/ThomasCrevoisier/psvm-js): `npm install -g psvm`
## Compiling from source
diff --git a/LICENSE b/LICENSE
index 140efcd..b81d5fc 100644
--- a/LICENSE
+++ b/LICENSE
@@ -42,6 +42,7 @@ PureScript uses the following Haskell library packages. Their license files foll
byteorder
bytestring
bytestring-builder
+ cabal-doctest
case-insensitive
cheapskate
clock
@@ -70,7 +71,6 @@ PureScript uses the following Haskell library packages. Their license files foll
fast-logger
file-embed
filepath
- foundation
fsnotify
ghc-boot-th
ghc-prim
@@ -101,6 +101,7 @@ PureScript uses the following Haskell library packages. Their license files foll
mtl
mtl-compat
network
+ network-byte-order
network-uri
old-locale
old-time
@@ -1124,6 +1125,39 @@ bytestring-builder 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.
+cabal-doctest LICENSE file:
+
+ Copyright (c) 2017, Oleg Grenrus
+
+ 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 Oleg Grenrus 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.
+
case-insensitive LICENSE file:
Copyright (c) 2011-2013 Bas van Dijk
@@ -1975,37 +2009,6 @@ filepath 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.
-foundation LICENSE file:
-
- Copyright (c) 2015-2017 Vincent Hanquez <vincent@snarc.org>
- Copyright (c) 2017-2018 Foundation Maintainers
-
- 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.
- 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 REGENTS 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 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.
-
fsnotify LICENSE file:
Copyright (c) 2012, Mark Dittmer
@@ -2545,7 +2548,8 @@ lifted-base LICENSE file:
memory LICENSE file:
- Copyright (c) 2015 Vincent Hanquez <vincent@snarc.org>
+ Copyright (c) 2015-2018 Vincent Hanquez <vincent@snarc.org>
+ Copyright (c) 2017-2018 Nicolas Di Prima <nicolas@primetype.co.uk>
All rights reserved.
@@ -2577,7 +2581,8 @@ memory LICENSE file:
microlens LICENSE file:
Copyright (c) 2013-2016 Edward Kmett,
- 2015-2016 Artyom
+ 2015-2016 Artyom Kazak,
+ 2018 Monadfix
All rights reserved.
@@ -2592,7 +2597,7 @@ microlens LICENSE file:
disclaimer in the documentation and/or other materials provided
with the distribution.
- * Neither the name of Artyom nor the names of other
+ * Neither the name of Monadfix nor the names of other
contributors may be used to endorse or promote products derived
from this software without specific prior written permission.
@@ -2611,7 +2616,8 @@ microlens LICENSE file:
microlens-ghc LICENSE file:
Copyright (c) 2013-2016 Edward Kmett,
- 2015-2016 Artyom
+ 2015-2016 Artyom Kazak,
+ 2018 Monadfix
All rights reserved.
@@ -2626,7 +2632,7 @@ microlens-ghc LICENSE file:
disclaimer in the documentation and/or other materials provided
with the distribution.
- * Neither the name of Artyom nor the names of other
+ * Neither the name of Monadfix nor the names of other
contributors may be used to endorse or promote products derived
from this software without specific prior written permission.
@@ -2679,7 +2685,8 @@ microlens-mtl LICENSE file:
microlens-platform LICENSE file:
Copyright (c) 2012-2016 Edward Kmett,
- 2015-2016 Artyom
+ 2015-2016 Artyom Kazak,
+ 2018 Monadfix
All rights reserved.
@@ -2694,7 +2701,7 @@ microlens-platform LICENSE file:
disclaimer in the documentation and/or other materials provided
with the distribution.
- * Neither the name of Artyom nor the names of other
+ * Neither the name of Monadfix nor the names of other
contributors may be used to endorse or promote products derived
from this software without specific prior written permission.
@@ -2943,6 +2950,39 @@ network LICENSE file:
OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
DAMAGE.
+network-byte-order LICENSE file:
+
+ Copyright (c) 2017, Kazu Yamamoto
+
+ 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 Kazu Yamamoto 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.
+
network-uri LICENSE file:
Copyright (c) 2002-2010, The University Court of the University of Glasgow.
diff --git a/README.md b/README.md
index 273a88c..f2239f3 100644
--- a/README.md
+++ b/README.md
@@ -2,7 +2,7 @@
A small strongly typed programming language with expressive types that compiles to JavaScript, written in and inspired by Haskell.
-[![Hackage](https://img.shields.io/hackage/v/purescript.svg)](http://hackage.haskell.org/package/purescript) [![Build Status](https://api.travis-ci.org/purescript/purescript.svg?branch=master)](http://travis-ci.org/purescript/purescript) [![AppVeyor Build Status](https://ci.appveyor.com/api/projects/status/github/purescript/purescript?branch=master&svg=true)](https://ci.appveyor.com/project/hdgarrood/purescript-lfgff/history)
+[![Hackage](https://img.shields.io/hackage/v/purescript.svg)](http://hackage.haskell.org/package/purescript) [![Build Status](https://api.travis-ci.org/purescript/purescript.svg?branch=master)](http://travis-ci.org/purescript/purescript)
## Language info
diff --git a/app/Command/Ide.hs b/app/Command/Ide.hs
index 73d7ecc..30adccc 100644
--- a/app/Command/Ide.hs
+++ b/app/Command/Ide.hs
@@ -47,7 +47,11 @@ import System.IO.Error (isEOFError)
listenOnLocalhost :: Network.PortNumber -> IO Network.Socket
listenOnLocalhost port = do
- addr:_ <- Network.getAddrInfo Nothing (Just "127.0.0.1") (Just (show port))
+ let hints = Network.defaultHints
+ { Network.addrFamily = Network.AF_INET
+ , Network.addrSocketType = Network.Stream
+ }
+ addr:_ <- Network.getAddrInfo (Just hints) (Just "127.0.0.1") (Just (show port))
bracketOnError
(Network.socket (Network.addrFamily addr) (Network.addrSocketType addr) (Network.addrProtocol addr))
Network.close
@@ -92,7 +96,11 @@ command = Opts.helper <*> subcommands where
T.putStrLn ("Couldn't connect to purs ide server on port " <> show clientPort <> ":")
print e
exitFailure
- addr:_ <- Network.getAddrInfo Nothing (Just "127.0.0.1") (Just (show clientPort))
+ let hints = Network.defaultHints
+ { Network.addrFamily = Network.AF_INET
+ , Network.addrSocketType = Network.Stream
+ }
+ addr:_ <- Network.getAddrInfo (Just hints) (Just "127.0.0.1") (Just (show clientPort))
sock <- Network.socket (Network.addrFamily addr) (Network.addrSocketType addr) (Network.addrProtocol addr)
Network.connect sock (Network.addrAddress addr) `catch` handler
h <- Network.socketToHandle sock ReadWriteMode
diff --git a/bundle/README b/bundle/README
new file mode 100644
index 0000000..972cc56
--- /dev/null
+++ b/bundle/README
@@ -0,0 +1,13 @@
+ ____ ____ _ _
+| _ \ _ _ _ __ ___/ ___| ___ _ __(_)_ __ | |_
+| |_) | | | | '__/ _ \___ \ / __| '__| | '_ \| __|
+| __/| |_| | | | __/___) | (__| | | | |_) | |_
+|_| \__,_|_| \___|____/ \___|_| |_| .__/ \__|
+ |_|
+
+Installation Instructions
+-------------------------
+
+This bundle contains the `purs` executable; copy this file anywhere on your
+PATH. For information about how to use the `purs` executable, run `purs
+--help`.
diff --git a/bundle/build.sh b/bundle/build.sh
new file mode 100755
index 0000000..4402c6b
--- /dev/null
+++ b/bundle/build.sh
@@ -0,0 +1,62 @@
+#!/bin/bash
+
+# This script can be run on any supported OS to create a binary .tar.gz
+# bundle. For Windows, msysgit contains all of the pieces needed to run this
+# script.
+
+set -ex
+
+OS=$1
+
+if [ -z $OS ]
+then
+ echo "Usage: build.sh osname"
+ exit 1
+fi
+
+pushd $(stack path --project-root)
+
+# Make the staging directory
+mkdir -p bundle/build/purescript
+
+# Strip the binary, and copy it to the staging directory
+if [ "$OS" = "win64" ]
+then
+ BIN="purs.exe"
+else
+ BIN="purs"
+fi
+FULL_BIN="$(stack path --local-install-root)/bin/$BIN"
+if [ "$OS" != "win64" ]
+then
+ strip "$FULL_BIN"
+fi
+cp "$FULL_BIN" bundle/build/purescript
+
+# Copy extra files to the staging directory
+cp bundle/README bundle/build/purescript/
+cp LICENSE bundle/build/purescript/
+cp INSTALL.md bundle/build/purescript/
+
+stack ls dependencies >bundle/build/purescript/dependencies.txt
+
+# Make the binary bundle
+pushd bundle/build > /dev/null
+tar -zcvf ../${OS}.tar.gz purescript
+popd > /dev/null
+
+# Calculate the SHA hash
+if [ "$OS" = "win64" ]
+then
+ # msys/mingw does not include shasum. :(
+ SHASUM="openssl dgst -sha1"
+else
+ SHASUM="shasum"
+fi
+
+$SHASUM bundle/${OS}.tar.gz > bundle/${OS}.sha
+
+# Remove the staging directory
+rm -r bundle/build
+
+popd > /dev/null
diff --git a/purescript.cabal b/purescript.cabal
index 4a37444..5d463ca 100644
--- a/purescript.cabal
+++ b/purescript.cabal
@@ -4,10 +4,10 @@ cabal-version: 1.12
--
-- see: https://github.com/sol/hpack
--
--- hash: d36dcc914da2b1127258e1605150e6d890890d1e0b28f747c62284638526d74d
+-- hash: b87efeaa8dc8b1bdeba35e1f2f57e0d2a914ef7e4de4c856b7af986c7cdbd7fc
name: purescript
-version: 0.12.4
+version: 0.12.5
synopsis: PureScript Programming Language Compiler
description: A small strongly, statically typed programming language with expressive types, inspired by Haskell and compiling to JavaScript.
category: Language
@@ -27,6 +27,8 @@ extra-source-files:
app/static/normalize.css
app/static/pursuit.css
app/static/pursuit.less
+ bundle/build.sh
+ bundle/README
tests/purs/failing/MissingFFIImplementations.js
tests/purs/passing/2172.js
tests/purs/passing/EffFn.js
@@ -371,6 +373,7 @@ extra-source-files:
tests/purs/passing/3388.purs
tests/purs/passing/3410.purs
tests/purs/passing/3481.purs
+ tests/purs/passing/3595.purs
tests/purs/passing/652.purs
tests/purs/passing/810.purs
tests/purs/passing/862.purs
@@ -1016,7 +1019,7 @@ executable purs
, monad-control >=1.0.0.0 && <1.1
, monad-logger >=0.3 && <0.4
, mtl >=2.1.0 && <2.3.0
- , network
+ , network >=3.0.1.1
, optparse-applicative >=0.13.0
, parallel >=3.2 && <3.3
, parsec >=3.1.10
diff --git a/src/Language/PureScript/AST/Declarations.hs b/src/Language/PureScript/AST/Declarations.hs
index f2e6a2e..ea2fecc 100644
--- a/src/Language/PureScript/AST/Declarations.hs
+++ b/src/Language/PureScript/AST/Declarations.hs
@@ -100,7 +100,7 @@ data SimpleErrorMessage
| InvalidDoLet
| CycleInDeclaration Ident
| CycleInTypeSynonym (Maybe (ProperName 'TypeName))
- | CycleInTypeClassDeclaration [(ProperName 'ClassName)]
+ | CycleInTypeClassDeclaration [Qualified (ProperName 'ClassName)]
| CycleInModules [ModuleName]
| NameIsUndefined Ident
| UndefinedTypeVariable (ProperName 'TypeName)
diff --git a/src/Language/PureScript/Errors.hs b/src/Language/PureScript/Errors.hs
index b511c4c..2521884 100644
--- a/src/Language/PureScript/Errors.hs
+++ b/src/Language/PureScript/Errors.hs
@@ -576,10 +576,10 @@ prettyPrintSingleError (PPEOptions codeColor full level showDocs relPath) e = fl
, line "Consider using a 'newtype' instead."
]
renderSimpleErrorMessage (CycleInTypeClassDeclaration [name]) =
- paras [ line $ "A type class '" <> markCode (runProperName name) <> "' may not have itself as a superclass." ]
+ paras [ line $ "A type class '" <> markCode (runProperName (disqualify name)) <> "' may not have itself as a superclass." ]
renderSimpleErrorMessage (CycleInTypeClassDeclaration names) =
paras [ line $ "A cycle appears in a set of type class definitions:"
- , indent $ line $ "{" <> (T.intercalate ", " (map (markCode . runProperName) names)) <> "}"
+ , indent $ line $ "{" <> (T.intercalate ", " (map (markCode . runProperName . disqualify) names)) <> "}"
, line "Cycles are disallowed because they can lead to loops in the type checker."
]
renderSimpleErrorMessage (NameIsUndefined ident) =
diff --git a/src/Language/PureScript/Ide/Imports.hs b/src/Language/PureScript/Ide/Imports.hs
index c8af2ac..e880248 100644
--- a/src/Language/PureScript/Ide/Imports.hs
+++ b/src/Language/PureScript/Ide/Imports.hs
@@ -277,7 +277,13 @@ addImportForIdentifier
addImportForIdentifier fp ident qual filters = do
let addPrim = Map.union idePrimDeclarations
modules <- getAllModules Nothing
- case map (fmap discardAnn) (getExactMatches ident filters (addPrim modules)) of
+ let
+ matches =
+ getExactMatches ident filters (addPrim modules)
+ & map (fmap discardAnn)
+ & filter (\(Match (_, d)) -> not (has _IdeDeclModule d))
+
+ case matches of
[] ->
throwError (NotFound "Couldn't find the given identifier. \
\Have you loaded the corresponding module?")
diff --git a/src/Language/PureScript/Sugar/TypeClasses.hs b/src/Language/PureScript/Sugar/TypeClasses.hs
index 734a98a..7686e71 100644
--- a/src/Language/PureScript/Sugar/TypeClasses.hs
+++ b/src/Language/PureScript/Sugar/TypeClasses.hs
@@ -87,15 +87,15 @@ desugarModule (Module ss coms name decls (Just exps)) = do
desugarClassDecl name' exps' (AcyclicSCC d) = desugarDecl name' exps' d
desugarClassDecl _ _ (CyclicSCC ds') = throwError . errorMessage' (declSourceSpan (head ds')) $ CycleInTypeClassDeclaration (map classDeclName ds')
- superClassesNames :: Declaration -> [ProperName 'ClassName]
- superClassesNames (TypeClassDeclaration _ _ _ implies _ _) = fmap superClassName implies
+ superClassesNames :: Declaration -> [Qualified (ProperName 'ClassName)]
+ superClassesNames (TypeClassDeclaration _ _ _ implies _ _) = fmap constraintName implies
superClassesNames _ = []
- superClassName :: SourceConstraint -> ProperName 'ClassName
- superClassName (Constraint _ (Qualified _ cName) _ _) = cName
+ constraintName :: SourceConstraint -> Qualified (ProperName 'ClassName)
+ constraintName (Constraint _ cName _ _) = cName
- classDeclName :: Declaration -> ProperName 'ClassName
- classDeclName (TypeClassDeclaration _ pn _ _ _ _) = pn
+ classDeclName :: Declaration -> Qualified (ProperName 'ClassName)
+ classDeclName (TypeClassDeclaration _ pn _ _ _ _) = Qualified (Just name) pn
classDeclName _ = internalError "Expected TypeClassDeclaration"
desugarModule _ = internalError "Exports should have been elaborated in name desugaring"
diff --git a/stack.yaml b/stack.yaml
index ac8c3aa..09abdb9 100644
--- a/stack.yaml
+++ b/stack.yaml
@@ -2,6 +2,7 @@ resolver: lts-13.12
packages:
- '.'
extra-deps:
+- network-3.0.1.1
nix:
enable: false
packages:
diff --git a/tests/purs/passing/3595.purs b/tests/purs/passing/3595.purs
new file mode 100644
index 0000000..f5c7941
--- /dev/null
+++ b/tests/purs/passing/3595.purs
@@ -0,0 +1,14 @@
+module Main where
+
+import Prelude as P
+import Effect (Effect)
+import Effect.Console (log)
+
+class P.Show a <= Show a where
+ id :: a -> a
+
+instance showString :: Show String where
+ id x = x
+
+main :: Effect P.Unit
+main = log (id "Done")