GHC issueshttps://gitlab.haskell.org/ghc/ghc/-/issues2019-07-07T18:30:16Zhttps://gitlab.haskell.org/ghc/ghc/-/issues/11473Levity polymorphism checks are inadequate2019-07-07T18:30:16ZSimon Peyton JonesLevity polymorphism checks are inadequateBen found
```hs
{-# LANGUAGE PolyKinds, TypeFamilies, MagicHash, DataKinds, TypeInType, RankNTypes #-}
import GHC.Exts
import GHC.Types
type family Boxed (a :: k) :: *
type instance Boxed Char# = Char
type instance Boxed Char = Char
...Ben found
```hs
{-# LANGUAGE PolyKinds, TypeFamilies, MagicHash, DataKinds, TypeInType, RankNTypes #-}
import GHC.Exts
import GHC.Types
type family Boxed (a :: k) :: *
type instance Boxed Char# = Char
type instance Boxed Char = Char
class BoxIt (a :: TYPE lev) where
boxed :: a -> Boxed a
instance BoxIt Char# where boxed x = C# x
instance BoxIt Char where boxed = id
hello :: forall (lev :: Levity). forall (a :: TYPE lev). BoxIt a => a -> Boxed a
hello x = boxed x
{-# NOINLINE hello #-}
main :: IO ()
main = do
print $ boxed 'c'#
print $ boxed 'c'
print $ hello 'c'
print $ hello 'c'#
```
This is plainly wrong because we have a polymorphic function `boxed` that is being passed both boxed and unboxed arguments.
You do get a Lint error with `-dcore-lint`.
But the original problem is with the type signature for `boxed`. We should never have a levity-polymorphic type to the left of an arrow. To the right yes, but to the left no. I suppose we could check that in `TcValidity`.
See also #114718.0.1Richard Eisenbergrae@richarde.devRichard Eisenbergrae@richarde.devhttps://gitlab.haskell.org/ghc/ghc/-/issues/11462Use of typechecker plugin erroneously triggers "unbound implicit parameter" e...2019-07-07T18:30:19ZkwfUse of typechecker plugin erroneously triggers "unbound implicit parameter" errorTo document this bug, we're going to need a typechecker plugin to test it with. I've built a dummy plugin for this purpose, so we can be sure it is not interference from a particular plugin.
`dummy-plugin/dummy-plugin.cabal`
```
name: ...To document this bug, we're going to need a typechecker plugin to test it with. I've built a dummy plugin for this purpose, so we can be sure it is not interference from a particular plugin.
`dummy-plugin/dummy-plugin.cabal`
```
name: dummy-plugin
version: 0.1.0.0
category: Development
build-type: Simple
cabal-version: >=1.10
library
hs-source-dirs: .
exposed-modules: DummyPlugin
build-depends: base, ghc
default-language: Haskell2010
GHC-options: -Wall -O2
```
`dummy-plugin/DummyPlugin.hs`
```hs
module DummyPlugin(plugin) where
import TcRnMonad ( TcPlugin(..), TcPluginResult(..) )
import Plugins ( defaultPlugin, Plugin(..), CommandLineOption )
plugin :: Plugin
plugin = defaultPlugin { tcPlugin = Just . thePlugin }
thePlugin :: [CommandLineOption] -> TcPlugin
thePlugin opts = TcPlugin
{ tcPluginInit = return ()
, tcPluginSolve = \_ _ _ _ -> return $ TcPluginOk [] []
, tcPluginStop = \_ -> return ()
}
```
`Bug.hs`
```hs
{-# OPTIONS_GHC -fplugin=DummyPlugin #-}
module Bug where
impossible :: a
impossible = undefined
```
First, compile the dummy plugin. From its directory, run `cabal install` to install the plugin.
Then, from the main directory, run `ghc Bug.hs`.
Expected result: the file compiles.
Actual result:
```
Bug.hs:6:14: error:
• Unbound implicit parameter ?callStack::GHC.Stack.Types.CallStack
arising from a use of implicit parameter ‘?callStack’
• In the expression: undefined
In an equation for ‘impossible’: impossible = undefined
```
Further, observe that commenting out the line which invokes the type-checker plugin (the pragma on line 1) causes the file to compile correctly.
<details><summary>Trac metadata</summary>
| Trac field | Value |
| ---------------------- | ----------------------- |
| Version | 7.10.3 |
| Type | Bug |
| TypeOfFailure | OtherFailure |
| Priority | high |
| Resolution | Unresolved |
| Component | Compiler (Type checker) |
| Test case | |
| Differential revisions | |
| BlockedBy | |
| Related | |
| Blocking | |
| CC | |
| Operating system | |
| Architecture | |
</details>
<!-- {"blocked_by":[],"summary":"Use of typechecker plugin erroneously triggers \"unbound implicit parameter\" error","status":"New","operating_system":"","component":"Compiler (Type checker)","related":[],"milestone":"8.0.1","resolution":"Unresolved","owner":{"tag":"Unowned"},"version":"7.10.3","keywords":[],"differentials":[],"test_case":"","architecture":"","cc":[""],"type":"Bug","description":"To document this bug, we're going to need a typechecker plugin to test it with. I've built a dummy plugin for this purpose, so we can be sure it is not interference from a particular plugin.\r\n\r\n{{{dummy-plugin/dummy-plugin.cabal}}}\r\n{{{\r\nname: dummy-plugin\r\nversion: 0.1.0.0\r\ncategory: Development\r\nbuild-type: Simple\r\ncabal-version: >=1.10\r\n\r\nlibrary\r\n hs-source-dirs: .\r\n exposed-modules: DummyPlugin\r\n build-depends: base, ghc\r\n default-language: Haskell2010\r\n GHC-options: -Wall -O2\r\n}}}\r\n\r\n{{{dummy-plugin/DummyPlugin.hs}}}\r\n{{{#!hs\r\nmodule DummyPlugin(plugin) where\r\n\r\nimport TcRnMonad ( TcPlugin(..), TcPluginResult(..) )\r\nimport Plugins ( defaultPlugin, Plugin(..), CommandLineOption )\r\n\r\nplugin :: Plugin\r\nplugin = defaultPlugin { tcPlugin = Just . thePlugin }\r\n\r\nthePlugin :: [CommandLineOption] -> TcPlugin\r\nthePlugin opts = TcPlugin\r\n { tcPluginInit = return ()\r\n , tcPluginSolve = \\_ _ _ _ -> return $ TcPluginOk [] []\r\n , tcPluginStop = \\_ -> return ()\r\n }\r\n}}}\r\n\r\n{{{Bug.hs}}}\r\n{{{#!hs\r\n{-# OPTIONS_GHC -fplugin=DummyPlugin #-}\r\n\r\nmodule Bug where\r\n\r\nimpossible :: a\r\nimpossible = undefined\r\n}}}\r\n\r\nFirst, compile the dummy plugin. From its directory, run {{{cabal install}}} to install the plugin.\r\n\r\nThen, from the main directory, run {{{ghc Bug.hs}}}.\r\n\r\nExpected result: the file compiles.\r\nActual result:\r\n{{{\r\nBug.hs:6:14: error:\r\n • Unbound implicit parameter ?callStack::GHC.Stack.Types.CallStack\r\n arising from a use of implicit parameter ‘?callStack’\r\n • In the expression: undefined\r\n In an equation for ‘impossible’: impossible = undefined\r\n}}}\r\n\r\nFurther, observe that commenting out the line which invokes the type-checker plugin (the pragma on line 1) causes the file to compile correctly.","type_of_failure":"OtherFailure","blocking":[]} -->8.0.1Eric SeidelEric Seidelhttps://gitlab.haskell.org/ghc/ghc/-/issues/11458Terrible failure of type inference in visible type application2019-07-07T18:30:20ZSimon Peyton JonesTerrible failure of type inference in visible type applicationConsider
```
-- optIntArg :: (Maybe Int -> t2) -> (t2,t2)
optIntArg f = (f Nothing, f (Just True))
```
This is rejected (by HEAD)
```
T11379a.hs:5:30: error:
* Couldn't match type `a' with `Bool'
`a' is a rigid type variable...Consider
```
-- optIntArg :: (Maybe Int -> t2) -> (t2,t2)
optIntArg f = (f Nothing, f (Just True))
```
This is rejected (by HEAD)
```
T11379a.hs:5:30: error:
* Couldn't match type `a' with `Bool'
`a' is a rigid type variable bound by
a type expected by the context:
forall a. Maybe a
at T11379a.hs:5:30
Expected type: forall a. Maybe a
Actual type: Maybe Bool
* In the first argument of `f', namely `(Just True)'
In the expression: f (Just True)
In the expression: (f Nothing, f (Just True))
```
but if you put the tuple components the other way round, it works fine
```
optIntArg f = (f (Just True), f Nothing)
```
Adding the commented-out signature also makes it work fine.
I'm almost certain that this is caused by visible type application; perhaps `Nothing` gets delayed instantiation, and then `f`'s type becomes `forall a. Maybe a`. Utterly bogus.
I suspect it'll be fixed by Richards `ReturnTv` work, but let's make sure it is. We can't release this!!
<details><summary>Trac metadata</summary>
| Trac field | Value |
| ---------------------- | ----------------------- |
| Version | 7.10.3 |
| Type | Bug |
| TypeOfFailure | OtherFailure |
| Priority | highest |
| Resolution | Unresolved |
| Component | Compiler (Type checker) |
| Test case | |
| Differential revisions | |
| BlockedBy | |
| Related | |
| Blocking | |
| CC | |
| Operating system | |
| Architecture | |
</details>
<!-- {"blocked_by":[],"summary":"Terrible failure of type inference in visible type application","status":"New","operating_system":"","component":"Compiler (Type checker)","related":[],"milestone":"8.0.1","resolution":"Unresolved","owner":{"tag":"Unowned"},"version":"7.10.3","keywords":[],"differentials":[],"test_case":"","architecture":"","cc":[""],"type":"Bug","description":"Consider\r\n{{{\r\n-- optIntArg :: (Maybe Int -> t2) -> (t2,t2)\r\noptIntArg f = (f Nothing, f (Just True))\r\n}}}\r\nThis is rejected (by HEAD)\r\n{{{\r\nT11379a.hs:5:30: error:\r\n * Couldn't match type `a' with `Bool'\r\n `a' is a rigid type variable bound by\r\n a type expected by the context:\r\n forall a. Maybe a\r\n at T11379a.hs:5:30\r\n Expected type: forall a. Maybe a\r\n Actual type: Maybe Bool\r\n * In the first argument of `f', namely `(Just True)'\r\n In the expression: f (Just True)\r\n In the expression: (f Nothing, f (Just True))\r\n}}}\r\nbut if you put the tuple components the other way round, it works fine\r\n{{{\r\noptIntArg f = (f (Just True), f Nothing)\r\n}}}\r\nAdding the commented-out signature also makes it work fine.\r\n\r\nI'm almost certain that this is caused by visible type application; perhaps `Nothing` gets delayed instantiation, and then `f`'s type becomes `forall a. Maybe a`. Utterly bogus.\r\n\r\nI suspect it'll be fixed by Richards `ReturnTv` work, but let's make sure it is. We can't release this!!\r\n","type_of_failure":"OtherFailure","blocking":[]} -->8.0.1Richard Eisenbergrae@richarde.devRichard Eisenbergrae@richarde.devhttps://gitlab.haskell.org/ghc/ghc/-/issues/11440GHC.Prim does not export Constraint2019-07-07T18:30:24ZThomas MiedemaGHC.Prim does not export ConstraintThis code from the `effect-monad` library worked in ghc-7.10, but fails with ghc-8.0.1-rc1:
```
{-# LANGUAGE TypeFamilies, ConstraintKinds, PolyKinds #-}
module Control.Effect.Cond where
import GHC.Prim
class Cond (m :: k -> * -> *) ...This code from the `effect-monad` library worked in ghc-7.10, but fails with ghc-8.0.1-rc1:
```
{-# LANGUAGE TypeFamilies, ConstraintKinds, PolyKinds #-}
module Control.Effect.Cond where
import GHC.Prim
class Cond (m :: k -> * -> *) where
type AltInv m (s :: k) (t :: k) :: Constraint
```
It seems one now needs to import `Constraint` from `GHC.Exts`.
This should be mentioned in the migration guide (https://ghc.haskell.org/trac/ghc/wiki/Migration/8.0), together with any other breaking changes there might be from the kind equalities patch (6746549772c5cc0ac66c0fce562f297f4d4b80a2).
<details><summary>Trac metadata</summary>
| Trac field | Value |
| ---------------------- | ------------ |
| Version | 8.0.1-rc1 |
| Type | Bug |
| TypeOfFailure | OtherFailure |
| Priority | highest |
| Resolution | Unresolved |
| Component | Compiler |
| Test case | |
| Differential revisions | |
| BlockedBy | |
| Related | |
| Blocking | |
| CC | |
| Operating system | |
| Architecture | |
</details>
<!-- {"blocked_by":[],"summary":"GHC.Prim does not export Constraint","status":"New","operating_system":"","component":"Compiler","related":[],"milestone":"8.0.1","resolution":"Unresolved","owner":{"tag":"Unowned"},"version":"8.0.1-rc1","keywords":[],"differentials":[],"test_case":"","architecture":"","cc":[""],"type":"Bug","description":"This code from the `effect-monad` library worked in ghc-7.10, but fails with ghc-8.0.1-rc1:\r\n\r\n{{{\r\n{-# LANGUAGE TypeFamilies, ConstraintKinds, PolyKinds #-}\r\n\r\nmodule Control.Effect.Cond where\r\n\r\nimport GHC.Prim\r\n\r\nclass Cond (m :: k -> * -> *) where\r\n type AltInv m (s :: k) (t :: k) :: Constraint\r\n}}}\r\n\r\nIt seems one now needs to import `Constraint` from `GHC.Exts`.\r\n\r\nThis should be mentioned in the migration guide (https://ghc.haskell.org/trac/ghc/wiki/Migration/8.0), together with any other breaking changes there might be from the kind equalities patch (6746549772c5cc0ac66c0fce562f297f4d4b80a2).","type_of_failure":"OtherFailure","blocking":[]} -->8.0.1https://gitlab.haskell.org/ghc/ghc/-/issues/11432Cannot export operator newtype2019-07-07T18:30:26ZOleg GrenrusCannot export operator newtype```hs
{-# LANGUAGE TypeOperators #-}
module Main (main, (-.->)(..)) where
main :: IO ()
main = return ()
newtype (f -.-> g) a = Fn { apFn :: f a -> g a }
```
Fails to compile with
```
[1 of 1] Compiling Main ( fn.hs, inte...```hs
{-# LANGUAGE TypeOperators #-}
module Main (main, (-.->)(..)) where
main :: IO ()
main = return ()
newtype (f -.-> g) a = Fn { apFn :: f a -> g a }
```
Fails to compile with
```
[1 of 1] Compiling Main ( fn.hs, interpreted )
fn.hs:2:20: error: Not in scope: ‘-.->’
fn.hs:2:20: error:
The export item ‘(-.->)(..)’
attempts to export constructors or class methods that are not visible here
```
<details><summary>Trac metadata</summary>
| Trac field | Value |
| ---------------------- | ------------ |
| Version | 8.0.1-rc1 |
| Type | Bug |
| TypeOfFailure | OtherFailure |
| Priority | normal |
| Resolution | Unresolved |
| Component | Compiler |
| Test case | |
| Differential revisions | |
| BlockedBy | |
| Related | |
| Blocking | |
| CC | |
| Operating system | |
| Architecture | |
</details>
<!-- {"blocked_by":[],"summary":"Cannot export operator newtype","status":"New","operating_system":"","component":"Compiler","related":[],"milestone":"","resolution":"Unresolved","owner":{"tag":"Unowned"},"version":"8.0.1-rc1","keywords":[],"differentials":[],"test_case":"","architecture":"","cc":[""],"type":"Bug","description":"{{{#!hs\r\n{-# LANGUAGE TypeOperators #-}\r\nmodule Main (main, (-.->)(..)) where\r\n\r\nmain :: IO ()\r\nmain = return ()\r\n\r\nnewtype (f -.-> g) a = Fn { apFn :: f a -> g a }\r\n}}}\r\n\r\nFails to compile with\r\n\r\n{{{\r\n[1 of 1] Compiling Main ( fn.hs, interpreted )\r\n\r\nfn.hs:2:20: error: Not in scope: ‘-.->’\r\n\r\nfn.hs:2:20: error:\r\n The export item ‘(-.->)(..)’\r\n attempts to export constructors or class methods that are not visible here\r\n}}}","type_of_failure":"OtherFailure","blocking":[]} -->8.0.1skvadrikskvadrikhttps://gitlab.haskell.org/ghc/ghc/-/issues/11429Make unrecognised `-W` flags a warning rather than an error2019-07-07T18:30:27ZHerbert Valerio Riedelhvr@gnu.orgMake unrecognised `-W` flags a warning rather than an errorCurrently, it's a fatal error to pass GHC a warning flag it doesn't recognise:
```
$ ghc-8.1.20160111 -Wfoobar -c foobar.hs
ghc: unrecognised flag: -Wfoobar
Usage: For basic information, try the `--help' option.
```
However, in order ...Currently, it's a fatal error to pass GHC a warning flag it doesn't recognise:
```
$ ghc-8.1.20160111 -Wfoobar -c foobar.hs
ghc: unrecognised flag: -Wfoobar
Usage: For basic information, try the `--help' option.
```
However, in order to gain more flexibility adding/removing warning flags without requiring users to carefully guard which flags a given GHC version supports, it was suggested to make GHC more tolerating in case of unrecognised warning flags (which may either have been removed, or not yet available in the current GHC version).
Specifically, I propose the following:
1. Handle `-Wno-<token>` or `-W<token>` for an unknown `<token>` as a warning rather than an error
1. This warning gets its own token `unrecognised-warning-flag` (turned on by default), so that it can be controlled via the general warning facilities as well:
- `-Wno-unrecognised-warning-flag` turns off such warnings
- `-Wunrecognised-warning-flag` turns on such warnings explicitly
- `-Werror=unrecognised-warning-flag` (once we have #11219) emulates the old behaviour
> - various other combinations with warning-sets, `-Werror` specifications
<details><summary>Trac metadata</summary>
| Trac field | Value |
| ---------------------- | ----------------------- |
| Version | |
| Type | FeatureRequest |
| TypeOfFailure | OtherFailure |
| Priority | highest |
| Resolution | Unresolved |
| Component | Compiler |
| Test case | |
| Differential revisions | |
| BlockedBy | |
| Related | |
| Blocking | |
| CC | bgamari, ekmett, quchen |
| Operating system | |
| Architecture | |
</details>
<!-- {"blocked_by":[],"summary":"Make unrecognised `-W` flags a warning rather than an error","status":"New","operating_system":"","component":"Compiler","related":[],"milestone":"8.0.1","resolution":"Unresolved","owner":{"tag":"Unowned"},"version":"","keywords":[],"differentials":[],"test_case":"","architecture":"","cc":["bgamari","ekmett","quchen"],"type":"FeatureRequest","description":"Currently, it's a fatal error to pass GHC a warning flag it doesn't recognise:\r\n\r\n{{{\r\n$ ghc-8.1.20160111 -Wfoobar -c foobar.hs\r\nghc: unrecognised flag: -Wfoobar\r\n\r\nUsage: For basic information, try the `--help' option.\r\n}}}\r\n\r\nHowever, in order to gain more flexibility adding/removing warning flags without requiring users to carefully guard which flags a given GHC version supports, it was suggested to make GHC more tolerating in case of unrecognised warning flags (which may either have been removed, or not yet available in the current GHC version).\r\n\r\nSpecifically, I propose the following:\r\n\r\n 1. Handle `-Wno-<token>` or `-W<token>` for an unknown `<token>` as a warning rather than an error\r\n\r\n 2. This warning gets its own token `unrecognised-warning-flag` (turned on by default), so that it can be controlled via the general warning facilities as well:\r\n\r\n - `-Wno-unrecognised-warning-flag` turns off such warnings\r\n - `-Wunrecognised-warning-flag` turns on such warnings explicitly\r\n - `-Werror=unrecognised-warning-flag` (once we have #11219) emulates the old behaviour\r\n - various other combinations with warning-sets, `-Werror` specifications\r\n\r\n\r\n","type_of_failure":"OtherFailure","blocking":[]} -->8.0.1Ben GamariBen Gamarihttps://gitlab.haskell.org/ghc/ghc/-/issues/11423GHC 8.0-rc1's linker does not work in OSX2019-07-07T18:30:28Zdanilo2GHC 8.0-rc1's linker does not work in OSXHello! When I try to run `cabal install data-default` (it is just a very small library) I get the following output using GHC 8.0-rc1:
```
cabal install data-default
Resolving dependencies...
Notice: installing into a sandbox located at
...Hello! When I try to run `cabal install data-default` (it is just a very small library) I get the following output using GHC 8.0-rc1:
```
cabal install data-default
Resolving dependencies...
Notice: installing into a sandbox located at
/Users/<user>/dev/hs/env/default8/.cabal-sandbox
Configuring data-default-class-0.0.1...
Configuring dlist-0.7.1.2...
Configuring old-locale-1.0.0.7...
Failed to install data-default-class-0.0.1
Build log ( /Users/<user>/dev/hs/env/default8/.cabal-sandbox/logs/data-default-class-0.0.1.log ):
Failed to install dlist-0.7.1.2
Build log ( /Users/<user>/dev/hs/env/default8/.cabal-sandbox/logs/dlist-0.7.1.2.log ):
Failed to install old-locale-1.0.0.7
Build log ( /Users/<user>/dev/hs/env/default8/.cabal-sandbox/logs/old-locale-1.0.0.7.log ):
cabal: Error: some packages failed to install:
data-default-0.5.3 depends on old-locale-1.0.0.7 which failed to install.
data-default-class-0.0.1 failed during the configure step. The exception was:
user error ('/opt/ghc/8.0-rc1/bin/ghc' exited with an error:
ld: library not found for -lgmp
clang: error: linker command failed with exit code 1 (use -v to see
invocation)
`gcc' failed in phase `Linker'. (Exit code: 1)
)
data-default-instances-base-0.0.1 depends on data-default-class-0.0.1 which
failed to install.
data-default-instances-containers-0.0.1 depends on data-default-class-0.0.1
which failed to install.
data-default-instances-dlist-0.0.1 depends on dlist-0.7.1.2 which failed to
install.
data-default-instances-old-locale-0.0.1 depends on old-locale-1.0.0.7 which
failed to install.
dlist-0.7.1.2 failed during the configure step. The exception was:
user error ('/opt/ghc/8.0-rc1/bin/ghc' exited with an error:
ld: library not found for -lgmp
clang: error: linker command failed with exit code 1 (use -v to see
invocation)
`gcc' failed in phase `Linker'. (Exit code: 1)
)
old-locale-1.0.0.7 failed during the configure step. The exception was:
user error ('/opt/ghc/8.0-rc1/bin/ghc' exited with an error:
ld: library not found for -lgmp
clang: error: linker command failed with exit code 1 (use -v to see
invocation)
`gcc' failed in phase `Linker'. (Exit code: 1)
)
```
<details><summary>Trac metadata</summary>
| Trac field | Value |
| ---------------------- | ------------ |
| Version | 8.0.1-rc1 |
| Type | Bug |
| TypeOfFailure | OtherFailure |
| Priority | highest |
| Resolution | Unresolved |
| Component | Compiler |
| Test case | |
| Differential revisions | |
| BlockedBy | |
| Related | |
| Blocking | |
| CC | |
| Operating system | |
| Architecture | |
</details>
<!-- {"blocked_by":[],"summary":"GHC 8.0-rc1's linker does not work in OSX","status":"New","operating_system":"","component":"Compiler","related":[],"milestone":"","resolution":"Unresolved","owner":{"tag":"Unowned"},"version":"8.0.1-rc1","keywords":[],"differentials":[],"test_case":"","architecture":"","cc":[""],"type":"Bug","description":"Hello! When I try to run `cabal install data-default` (it is just a very small library) I get the following output using GHC 8.0-rc1:\r\n\r\n{{{\r\n\r\ncabal install data-default\r\nResolving dependencies...\r\nNotice: installing into a sandbox located at\r\n/Users/<user>/dev/hs/env/default8/.cabal-sandbox\r\nConfiguring data-default-class-0.0.1...\r\nConfiguring dlist-0.7.1.2...\r\nConfiguring old-locale-1.0.0.7...\r\nFailed to install data-default-class-0.0.1\r\nBuild log ( /Users/<user>/dev/hs/env/default8/.cabal-sandbox/logs/data-default-class-0.0.1.log ):\r\nFailed to install dlist-0.7.1.2\r\nBuild log ( /Users/<user>/dev/hs/env/default8/.cabal-sandbox/logs/dlist-0.7.1.2.log ):\r\nFailed to install old-locale-1.0.0.7\r\nBuild log ( /Users/<user>/dev/hs/env/default8/.cabal-sandbox/logs/old-locale-1.0.0.7.log ):\r\ncabal: Error: some packages failed to install:\r\ndata-default-0.5.3 depends on old-locale-1.0.0.7 which failed to install.\r\ndata-default-class-0.0.1 failed during the configure step. The exception was:\r\nuser error ('/opt/ghc/8.0-rc1/bin/ghc' exited with an error:\r\nld: library not found for -lgmp\r\nclang: error: linker command failed with exit code 1 (use -v to see\r\ninvocation)\r\n`gcc' failed in phase `Linker'. (Exit code: 1)\r\n)\r\ndata-default-instances-base-0.0.1 depends on data-default-class-0.0.1 which\r\nfailed to install.\r\ndata-default-instances-containers-0.0.1 depends on data-default-class-0.0.1\r\nwhich failed to install.\r\ndata-default-instances-dlist-0.0.1 depends on dlist-0.7.1.2 which failed to\r\ninstall.\r\ndata-default-instances-old-locale-0.0.1 depends on old-locale-1.0.0.7 which\r\nfailed to install.\r\ndlist-0.7.1.2 failed during the configure step. The exception was:\r\nuser error ('/opt/ghc/8.0-rc1/bin/ghc' exited with an error:\r\nld: library not found for -lgmp\r\nclang: error: linker command failed with exit code 1 (use -v to see\r\ninvocation)\r\n`gcc' failed in phase `Linker'. (Exit code: 1)\r\n)\r\nold-locale-1.0.0.7 failed during the configure step. The exception was:\r\nuser error ('/opt/ghc/8.0-rc1/bin/ghc' exited with an error:\r\nld: library not found for -lgmp\r\nclang: error: linker command failed with exit code 1 (use -v to see\r\ninvocation)\r\n`gcc' failed in phase `Linker'. (Exit code: 1)\r\n)\r\n\r\n}}}","type_of_failure":"OtherFailure","blocking":[]} -->8.0.1https://gitlab.haskell.org/ghc/ghc/-/issues/11419Binary distributions seem to lack haddock docs2019-07-07T18:30:29ZBen GamariBinary distributions seem to lack haddock docsNot sure what is going on here.
<details><summary>Trac metadata</summary>
| Trac field | Value |
| ---------------------- | ------------ |
| Version | 8.0.1-rc1 |
| Type | Bug ...Not sure what is going on here.
<details><summary>Trac metadata</summary>
| Trac field | Value |
| ---------------------- | ------------ |
| Version | 8.0.1-rc1 |
| Type | Bug |
| TypeOfFailure | OtherFailure |
| Priority | highest |
| Resolution | Unresolved |
| Component | Build System |
| Test case | |
| Differential revisions | |
| BlockedBy | |
| Related | |
| Blocking | |
| CC | |
| Operating system | |
| Architecture | |
</details>
<!-- {"blocked_by":[],"summary":"Binary distributions seem to lack haddock docs","status":"New","operating_system":"","component":"Build System","related":[],"milestone":"8.0.1","resolution":"Unresolved","owner":{"tag":"Unowned"},"version":"8.0.1-rc1","keywords":[],"differentials":[],"test_case":"","architecture":"","cc":[""],"type":"Bug","description":"Not sure what is going on here.","type_of_failure":"OtherFailure","blocking":[]} -->8.0.1Ben GamariBen Gamarihttps://gitlab.haskell.org/ghc/ghc/-/issues/11414Panic with -XStrict: StgCmmEnv: variable not found2019-07-07T18:30:31ZThomas MiedemaPanic with -XStrict: StgCmmEnv: variable not found```hs
{-# LANGUAGE Strict #-}
main = print $ let x = undefined in True
```
Using HEAD or GHC 8.0:
```
$ ghc-8.0.0.20160109 Test.hs
[1 of 1] Compiling Main ( Test.hs, Test.o )
ghc: panic! (the 'impossible' happened)
(GHC v...```hs
{-# LANGUAGE Strict #-}
main = print $ let x = undefined in True
```
Using HEAD or GHC 8.0:
```
$ ghc-8.0.0.20160109 Test.hs
[1 of 1] Compiling Main ( Test.hs, Test.o )
ghc: panic! (the 'impossible' happened)
(GHC version 8.0.0.20160109 for x86_64-unknown-linux):
StgCmmEnv: variable not found
$dIP_aDK
local binds for:
Please report this as a GHC bug: http://www.haskell.org/ghc/reportabug
```
Using a devel2 build:
```
$ ./inplace/bin/ghc-stage2 Test.hs
[1 of 1] Compiling Main ( Test.hs, Test.o )
WARNING: file compiler/simplCore/OccurAnal.hs, line 66
Glomming in Main: [aDO :->]
WARNING: file compiler/coreSyn/CoreSubst.hs, line 278
CoreSubst.lookupIdSubst simpleOptExpr $dIP_aDO
InScope [aDM :-> a_aDM]
WARNING: file compiler/simplCore/OccurAnal.hs, line 66
Glomming in Main: [aDO :-> Once]
WARNING: file compiler/simplCore/SimplEnv.hs, line 530 $dIP_aDO
WARNING: file compiler/simplCore/OccurAnal.hs, line 66
Glomming in Main: [aDO :-> Once]
WARNING: file compiler/simplCore/SimplEnv.hs, line 530 $dIP_aDO
ghc-stage2: panic! (the 'impossible' happened)
(GHC version 8.1.20160103 for x86_64-unknown-linux):
ASSERT failed! file compiler/stgSyn/CoreToStg.hs line 1025 $dIP_aDO
Please report this as a GHC bug: http://www.haskell.org/ghc/reportabug
```8.0.1https://gitlab.haskell.org/ghc/ghc/-/issues/11413GHC 8.1.20160111 fails to bootstrap itself.2019-07-07T18:30:31ZkgardasGHC 8.1.20160111 fails to bootstrap itself.Hello,
bootstrapping GHC HEAD with HEAD is broken. The failure looks like:
```
libraries/binary/src/Data/Binary/Builder/Base.hs:67:0: error:
missing binary operator before token "("
libraries/binary/src/Data/Binary/Builder/Base.hs...Hello,
bootstrapping GHC HEAD with HEAD is broken. The failure looks like:
```
libraries/binary/src/Data/Binary/Builder/Base.hs:67:0: error:
missing binary operator before token "("
libraries/binary/src/Data/Binary/Builder/Base.hs:114:0: error:
missing binary operator before token "("
libraries/binary/src/Data/Binary/Builder/Base.hs:123:0: error:
missing binary operator before token "("
`gcc' failed in phase `C pre-processor'. (Exit code: 1)
gmake[1]: *** [utils/ghc-cabal/dist/build/tmp/ghc-cabal] Error 1
gmake: *** [all] Error 2
```
I'm setting highest prio on this (as I feel) so lower this if you like.
<details><summary>Trac metadata</summary>
| Trac field | Value |
| ---------------------- | -------------- |
| Version | 8.1 |
| Type | Bug |
| TypeOfFailure | OtherFailure |
| Priority | highest |
| Resolution | Unresolved |
| Component | Core Libraries |
| Test case | |
| Differential revisions | |
| BlockedBy | |
| Related | |
| Blocking | |
| CC | ekmett |
| Operating system | Solaris |
| Architecture | |
</details>
<!-- {"blocked_by":[],"summary":"GHC 8.1.20160111 fails to bootstrap itself.","status":"New","operating_system":"Solaris","component":"Core Libraries","related":[],"milestone":"","resolution":"Unresolved","owner":{"tag":"Unowned"},"version":"8.1","keywords":[],"differentials":[],"test_case":"","architecture":"","cc":["ekmett"],"type":"Bug","description":"Hello,\r\nbootstrapping GHC HEAD with HEAD is broken. The failure looks like:\r\n{{{\r\nlibraries/binary/src/Data/Binary/Builder/Base.hs:67:0: error:\r\n missing binary operator before token \"(\"\r\n\r\nlibraries/binary/src/Data/Binary/Builder/Base.hs:114:0: error:\r\n missing binary operator before token \"(\"\r\n\r\nlibraries/binary/src/Data/Binary/Builder/Base.hs:123:0: error:\r\n missing binary operator before token \"(\"\r\n`gcc' failed in phase `C pre-processor'. (Exit code: 1)\r\ngmake[1]: *** [utils/ghc-cabal/dist/build/tmp/ghc-cabal] Error 1\r\ngmake: *** [all] Error 2\r\n}}}\r\nI'm setting highest prio on this (as I feel) so lower this if you like.","type_of_failure":"OtherFailure","blocking":[]} -->8.0.1Thomas MiedemaThomas Miedemahttps://gitlab.haskell.org/ghc/ghc/-/issues/11407-XTypeInType uses up all memory when used in data family instance2019-07-07T18:30:33ZRyan Scott-XTypeInType uses up all memory when used in data family instanceCompiling this code with GHC 8.1 causes all my memory to be used very quickly:
```hs
{-# LANGUAGE TypeFamilies #-}
{-# LANGUAGE TypeInType #-}
module TypeInTypeEatsAllMemory where
import Data.Kind
type Const a b = a
data family UhOh ...Compiling this code with GHC 8.1 causes all my memory to be used very quickly:
```hs
{-# LANGUAGE TypeFamilies #-}
{-# LANGUAGE TypeInType #-}
module TypeInTypeEatsAllMemory where
import Data.Kind
type Const a b = a
data family UhOh (f :: k1) (a :: k2) (b :: k3)
data instance UhOh (f :: * -> * -> *) (a :: forall a) (b :: Const * a) = UhOh
```
On the other hand, this code compiles without issue:
```hs
{-# LANGUAGE TypeInType #-}
module TypeInTypeEatsAllMemory where
import Data.Kind
type Const a b = a
data UhOh (f :: * -> * -> *) (a :: forall a) (b :: Const * a) = UhOh
```
<details><summary>Trac metadata</summary>
| Trac field | Value |
| ---------------------- | ----------------------- |
| Version | 8.1 |
| Type | Bug |
| TypeOfFailure | OtherFailure |
| Priority | high |
| Resolution | Unresolved |
| Component | Compiler (Type checker) |
| Test case | |
| Differential revisions | |
| BlockedBy | |
| Related | |
| Blocking | |
| CC | goldfire |
| Operating system | |
| Architecture | |
</details>
<!-- {"blocked_by":[],"summary":"-XTypeInType uses up all memory when used in data family instance","status":"New","operating_system":"","component":"Compiler (Type checker)","related":[],"milestone":"","resolution":"Unresolved","owner":{"tag":"Unowned"},"version":"8.1","keywords":["TypeInType"],"differentials":[],"test_case":"","architecture":"","cc":["goldfire"],"type":"Bug","description":"Compiling this code with GHC 8.1 causes all my memory to be used very quickly:\r\n\r\n{{{#!hs\r\n{-# LANGUAGE TypeFamilies #-}\r\n{-# LANGUAGE TypeInType #-}\r\nmodule TypeInTypeEatsAllMemory where\r\n\r\nimport Data.Kind\r\n\r\ntype Const a b = a\r\n\r\ndata family UhOh (f :: k1) (a :: k2) (b :: k3)\r\ndata instance UhOh (f :: * -> * -> *) (a :: forall a) (b :: Const * a) = UhOh\r\n}}}\r\n\r\nOn the other hand, this code compiles without issue:\r\n\r\n{{{#!hs\r\n{-# LANGUAGE TypeInType #-}\r\nmodule TypeInTypeEatsAllMemory where\r\n\r\nimport Data.Kind\r\n\r\ntype Const a b = a\r\n\r\ndata UhOh (f :: * -> * -> *) (a :: forall a) (b :: Const * a) = UhOh\r\n}}}","type_of_failure":"OtherFailure","blocking":[]} -->8.0.1Richard Eisenbergrae@richarde.devRichard Eisenbergrae@richarde.devhttps://gitlab.haskell.org/ghc/ghc/-/issues/11405Incorrect failure of type-level skolem escape check2019-07-07T18:30:34ZRichard Eisenbergrae@richarde.devIncorrect failure of type-level skolem escape checkFrom [D1739](https://phabricator.haskell.org/D1739).
When you say
```hs
undefined :: forall (v :: Levity). forall (a :: TYPE v). (?callStack :: CallStack) => a
```
you get a skolem escape failure because GHC things that the kind of `(...From [D1739](https://phabricator.haskell.org/D1739).
When you say
```hs
undefined :: forall (v :: Levity). forall (a :: TYPE v). (?callStack :: CallStack) => a
```
you get a skolem escape failure because GHC things that the kind of `(?callStack :: CallStack) => a` is `TYPE v`. It should be `*`.
I will fix.8.0.1Richard Eisenbergrae@richarde.devRichard Eisenbergrae@richarde.devhttps://gitlab.haskell.org/ghc/ghc/-/issues/11401No match in record selector ctev_dest2019-07-07T18:30:35ZLemmingNo match in record selector ctev_destWith the llvm-tf package I got the following problem:
```
$ cat RecordSelectorCtevDest.hs
{-# LANGUAGE TypeFamilies #-}
{-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE FlexibleInstances #-}
module RecordSelectorCtevDest where
newty...With the llvm-tf package I got the following problem:
```
$ cat RecordSelectorCtevDest.hs
{-# LANGUAGE TypeFamilies #-}
{-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE FlexibleInstances #-}
module RecordSelectorCtevDest where
newtype Value a = Value a
newtype CodeGen r a = CodeGen a
bind :: CodeGen r a -> (a -> CodeGen r b) -> CodeGen r b
bind (CodeGen a) k = k a
class
(f ~ CalledFunction g, r ~ CallerResult g, g ~ CallerFunction f r) =>
CallArgs f g r where
type CalledFunction g :: *
type CallerResult g :: *
type CallerFunction f r :: *
call :: f -> g
instance CallArgs (IO a) (CodeGen r (Value a)) r where
type CalledFunction (CodeGen r (Value a)) = IO a
type CallerResult (CodeGen r (Value a)) = r
type CallerFunction (IO a) r = CodeGen r (Value a)
call = undefined
instance CallArgs b b' r => CallArgs (a -> b) (Value a -> b') r where
type CalledFunction (Value a -> b') = a -> CalledFunction b'
type CallerResult (Value a -> b') = CallerResult b'
type CallerFunction (a -> b) r = Value a -> CallerFunction b r
call = undefined
test :: IO a -> (a -> IO ()) -> CodeGen () (Value ())
test start stop = bind (call start) (call stop)
$ ghci-8.0.0.20160109 RecordSelectorCtevDest.hs
GHCi, version 8.0.0.20160109: http://www.haskell.org/ghc/ :? for help
[1 of 1] Compiling RecordSelectorCtevDest ( RecordSelectorCtevDest.hs, interpreted )
*** Exception: No match in record selector ctev_dest
```
The problem disappears when I remove the 'r' parameter from CodeGen, CallArgs and CallerFunction and remove the CallerResult consequently.8.0.1Richard Eisenbergrae@richarde.devRichard Eisenbergrae@richarde.devhttps://gitlab.haskell.org/ghc/ghc/-/issues/11399Ill-kinded instance head involving -XTypeInType can invoke GHC panic2019-07-07T18:30:35ZRyan ScottIll-kinded instance head involving -XTypeInType can invoke GHC panicThis code:
```hs
{-# LANGUAGE FlexibleInstances, TypeInType #-}
module FvProvFallsIntoAHole where
import Data.Kind
newtype UhOh (k :: * -> *) (a :: k *) = UhOh (k *)
instance Functor k => Functor (UhOh k) where
```
produces this GHC ...This code:
```hs
{-# LANGUAGE FlexibleInstances, TypeInType #-}
module FvProvFallsIntoAHole where
import Data.Kind
newtype UhOh (k :: * -> *) (a :: k *) = UhOh (k *)
instance Functor k => Functor (UhOh k) where
```
produces this GHC panic:
```
$ /opt/ghc/head/bin/ghc FvProvFallsIntoAHole.hs
[1 of 1] Compiling FvProvFallsIntoAHole ( FvProvFallsIntoAHole.hs, FvProvFallsIntoAHole.o )
ghc: panic! (the 'impossible' happened)
(GHC version 8.1.20160108 for x86_64-unknown-linux):
fvProv falls into a hole {aq6}
Please report this as a GHC bug: http://www.haskell.org/ghc/reportabug
```
<details><summary>Trac metadata</summary>
| Trac field | Value |
| ---------------------- | ----------------------- |
| Version | 8.1 |
| Type | Bug |
| TypeOfFailure | OtherFailure |
| Priority | normal |
| Resolution | Unresolved |
| Component | Compiler (Type checker) |
| Test case | |
| Differential revisions | |
| BlockedBy | |
| Related | |
| Blocking | |
| CC | goldfire |
| Operating system | |
| Architecture | |
</details>
<!-- {"blocked_by":[],"summary":"Ill-kinded instance head involving -XTypeInType can invoke GHC panic","status":"New","operating_system":"","component":"Compiler (Type checker)","related":[],"milestone":"","resolution":"Unresolved","owner":{"tag":"Unowned"},"version":"8.1","keywords":["TypeInType"],"differentials":[],"test_case":"","architecture":"","cc":["goldfire"],"type":"Bug","description":"This code:\r\n\r\n{{{#!hs\r\n{-# LANGUAGE FlexibleInstances, TypeInType #-}\r\nmodule FvProvFallsIntoAHole where\r\n\r\nimport Data.Kind\r\n\r\nnewtype UhOh (k :: * -> *) (a :: k *) = UhOh (k *)\r\ninstance Functor k => Functor (UhOh k) where\r\n}}}\r\n\r\nproduces this GHC panic:\r\n\r\n{{{\r\n$ /opt/ghc/head/bin/ghc FvProvFallsIntoAHole.hs\r\n[1 of 1] Compiling FvProvFallsIntoAHole ( FvProvFallsIntoAHole.hs, FvProvFallsIntoAHole.o )\r\nghc: panic! (the 'impossible' happened)\r\n (GHC version 8.1.20160108 for x86_64-unknown-linux):\r\n fvProv falls into a hole {aq6}\r\n\r\nPlease report this as a GHC bug: http://www.haskell.org/ghc/reportabug\r\n}}}","type_of_failure":"OtherFailure","blocking":[]} -->8.0.1Richard Eisenbergrae@richarde.devRichard Eisenbergrae@richarde.devhttps://gitlab.haskell.org/ghc/ghc/-/issues/11397Type mismatch in local definitions in Haskell 98 code2019-07-07T18:30:36ZLemmingType mismatch in local definitions in Haskell 98 codeHere is the affected code with all package dependencies removes:
```
$ cat PairMismatch.hs
module PairMismatch (inverseFrequencyModulationChunk) where
newtype VectorLazy a = VectorLazy a
newtype Vector a = Vector a
newtype Pointer a = ...Here is the affected code with all package dependencies removes:
```
$ cat PairMismatch.hs
module PairMismatch (inverseFrequencyModulationChunk) where
newtype VectorLazy a = VectorLazy a
newtype Vector a = Vector a
newtype Pointer a = Pointer a
empty :: VectorLazy a
empty = undefined
cons :: Vector a -> Pointer a
cons = undefined
unfoldrResult :: (a -> Either c (b, a)) -> a -> (VectorLazy b, c)
unfoldrResult = undefined
switchL :: b -> (a -> Pointer a -> b) -> Pointer a -> b
switchL = undefined
inverseFrequencyModulationChunk ::
(Num t, Ord t) =>
(s -> Maybe (t,s)) -> (t,s) -> Vector v -> (VectorLazy v, Maybe (t,s))
inverseFrequencyModulationChunk nextC (phase,cst0) chunk =
let {-
switch ::
(Maybe (t, s) -> r) ->
((t, v) -> (s, Pointer v) -> r) ->
t ->
(s, Pointer v) -> r
-}
switch l r t (cp0,xp0) =
maybe
(l Nothing)
(\(c1,cp1) ->
switchL
(l (Just (t,cp0)))
(\x1 xp1 -> r (t+c1,x1) (cp1,xp1))
xp0)
(nextC cp0)
{-
go ::
(t,v) -> (s, Pointer v) ->
Either (Maybe (t,s)) (v, ((t,v), (s, Pointer v)))
-}
go (c,x) cxp =
if c<1
then switch Left go c cxp
else Right (x, ((c-1,x),cxp))
in switch ((,) empty)
(curry $ unfoldrResult (uncurry go))
phase (cst0, cons chunk)
$ ghci-8.0.0.20160109 PairMismatch.hs
GHCi, version 8.0.0.20160109: http://www.haskell.org/ghc/ :? for help
[1 of 1] Compiling PairMismatch ( PairMismatch.hs, interpreted )
PairMismatch.hs:35:24: error:
• Couldn't match type ‘a’ with ‘(t, s)’
‘a’ is a rigid type variable bound by
a type expected by the context:
forall a. Maybe a
at PairMismatch.hs:35:24
Expected type: forall a. Maybe a
Actual type: Maybe (t, s)
• In the first argument of ‘l’, namely ‘(Just (t, cp0))’
In the first argument of ‘switchL’, namely ‘(l (Just (t, cp0)))’
In the expression:
switchL
(l (Just (t, cp0))) (\ x1 xp1 -> r (t + c1, x1) (cp1, xp1)) xp0
• Relevant bindings include
cp1 :: s (bound at PairMismatch.hs:33:20)
c1 :: t (bound at PairMismatch.hs:33:17)
cp0 :: s (bound at PairMismatch.hs:30:22)
t :: t (bound at PairMismatch.hs:30:19)
r :: (t, t1) -> (s, Pointer t1) -> b
(bound at PairMismatch.hs:30:17)
switch :: ((forall a. Maybe a) -> b)
-> ((t, t1) -> (s, Pointer t1) -> b) -> t -> (s, Pointer t1) -> b
(bound at PairMismatch.hs:30:8)
inverseFrequencyModulationChunk :: (s -> Maybe (t, s))
-> (t, s) -> Vector v -> (VectorLazy v, Maybe (t, s))
(bound at PairMismatch.hs:22:1)
(Some bindings suppressed; use -fmax-relevant-binds=N or -fno-max-relevant-binds)
Failed, modules loaded: none.
```
It works with GHC-7.10.3 and before.
I may try to further simplify the code and choose a better ticket header, if I got an idea what went wrong.
<details><summary>Trac metadata</summary>
| Trac field | Value |
| ---------------------- | ----------------------- |
| Version | 8.0.1-rc1 |
| Type | Bug |
| TypeOfFailure | OtherFailure |
| Priority | normal |
| Resolution | Unresolved |
| Component | Compiler (Type checker) |
| Test case | |
| Differential revisions | |
| BlockedBy | |
| Related | |
| Blocking | |
| CC | |
| Operating system | |
| Architecture | |
</details>
<!-- {"blocked_by":[],"summary":"Type mismatch in local definitions in Haskell 98 code","status":"New","operating_system":"","component":"Compiler (Type checker)","related":[],"milestone":"","resolution":"Unresolved","owner":{"tag":"Unowned"},"version":"8.0.1-rc1","keywords":[],"differentials":[],"test_case":"","architecture":"","cc":[""],"type":"Bug","description":"Here is the affected code with all package dependencies removes:\r\n{{{\r\n$ cat PairMismatch.hs\r\nmodule PairMismatch (inverseFrequencyModulationChunk) where\r\n\r\nnewtype VectorLazy a = VectorLazy a\r\nnewtype Vector a = Vector a\r\nnewtype Pointer a = Pointer a\r\n\r\nempty :: VectorLazy a\r\nempty = undefined\r\n\r\ncons :: Vector a -> Pointer a\r\ncons = undefined\r\n\r\nunfoldrResult :: (a -> Either c (b, a)) -> a -> (VectorLazy b, c)\r\nunfoldrResult = undefined\r\n\r\nswitchL :: b -> (a -> Pointer a -> b) -> Pointer a -> b\r\nswitchL = undefined\r\n\r\ninverseFrequencyModulationChunk ::\r\n (Num t, Ord t) =>\r\n (s -> Maybe (t,s)) -> (t,s) -> Vector v -> (VectorLazy v, Maybe (t,s))\r\ninverseFrequencyModulationChunk nextC (phase,cst0) chunk =\r\n let {-\r\n switch ::\r\n (Maybe (t, s) -> r) ->\r\n ((t, v) -> (s, Pointer v) -> r) ->\r\n t ->\r\n (s, Pointer v) -> r\r\n -}\r\n switch l r t (cp0,xp0) =\r\n maybe\r\n (l Nothing)\r\n (\\(c1,cp1) ->\r\n switchL\r\n (l (Just (t,cp0)))\r\n (\\x1 xp1 -> r (t+c1,x1) (cp1,xp1))\r\n xp0)\r\n (nextC cp0)\r\n\r\n {-\r\n go ::\r\n (t,v) -> (s, Pointer v) ->\r\n Either (Maybe (t,s)) (v, ((t,v), (s, Pointer v)))\r\n -}\r\n go (c,x) cxp =\r\n if c<1\r\n then switch Left go c cxp\r\n else Right (x, ((c-1,x),cxp))\r\n\r\n in switch ((,) empty)\r\n (curry $ unfoldrResult (uncurry go))\r\n phase (cst0, cons chunk)\r\n\r\n$ ghci-8.0.0.20160109 PairMismatch.hs \r\nGHCi, version 8.0.0.20160109: http://www.haskell.org/ghc/ :? for help\r\n[1 of 1] Compiling PairMismatch ( PairMismatch.hs, interpreted )\r\n\r\nPairMismatch.hs:35:24: error:\r\n • Couldn't match type ‘a’ with ‘(t, s)’\r\n ‘a’ is a rigid type variable bound by\r\n a type expected by the context:\r\n forall a. Maybe a\r\n at PairMismatch.hs:35:24\r\n Expected type: forall a. Maybe a\r\n Actual type: Maybe (t, s)\r\n • In the first argument of ‘l’, namely ‘(Just (t, cp0))’\r\n In the first argument of ‘switchL’, namely ‘(l (Just (t, cp0)))’\r\n In the expression:\r\n switchL\r\n (l (Just (t, cp0))) (\\ x1 xp1 -> r (t + c1, x1) (cp1, xp1)) xp0\r\n • Relevant bindings include\r\n cp1 :: s (bound at PairMismatch.hs:33:20)\r\n c1 :: t (bound at PairMismatch.hs:33:17)\r\n cp0 :: s (bound at PairMismatch.hs:30:22)\r\n t :: t (bound at PairMismatch.hs:30:19)\r\n r :: (t, t1) -> (s, Pointer t1) -> b\r\n (bound at PairMismatch.hs:30:17)\r\n switch :: ((forall a. Maybe a) -> b)\r\n -> ((t, t1) -> (s, Pointer t1) -> b) -> t -> (s, Pointer t1) -> b\r\n (bound at PairMismatch.hs:30:8)\r\n inverseFrequencyModulationChunk :: (s -> Maybe (t, s))\r\n -> (t, s) -> Vector v -> (VectorLazy v, Maybe (t, s))\r\n (bound at PairMismatch.hs:22:1)\r\n (Some bindings suppressed; use -fmax-relevant-binds=N or -fno-max-relevant-binds)\r\nFailed, modules loaded: none.\r\n}}}\r\nIt works with GHC-7.10.3 and before.\r\nI may try to further simplify the code and choose a better ticket header, if I got an idea what went wrong.\r\n","type_of_failure":"OtherFailure","blocking":[]} -->8.0.1Richard Eisenbergrae@richarde.devRichard Eisenbergrae@richarde.devhttps://gitlab.haskell.org/ghc/ghc/-/issues/11396deriving Ix with custom ifThenElse causes "Bad call to tagToEnum#"2019-07-07T18:30:36ZLemmingderiving Ix with custom ifThenElse causes "Bad call to tagToEnum#"```
$ cat IfThenElseIx.hs
{-# LANGUAGE RebindableSyntax #-}
module IfThenElseIx where
import Data.Ix (Ix, )
import Prelude
ifThenElse :: Bool -> a -> a -> a
ifThenElse True x _ = x
ifThenElse False _ x = x
data T = A | B deriving (E...```
$ cat IfThenElseIx.hs
{-# LANGUAGE RebindableSyntax #-}
module IfThenElseIx where
import Data.Ix (Ix, )
import Prelude
ifThenElse :: Bool -> a -> a -> a
ifThenElse True x _ = x
ifThenElse False _ x = x
data T = A | B deriving (Eq, Ord, Ix)
$ ghci-8.0.0.20160109 IfThenElseIx.hs
GHCi, version 8.0.0.20160109: http://www.haskell.org/ghc/ :? for help
[1 of 1] Compiling IfThenElseIx ( IfThenElseIx.hs, interpreted )
IfThenElseIx.hs:13:35: error:
• Bad call to tagToEnum# at type a_a2ky
Specify the type by giving a type signature
e.g. (tagToEnum# x) :: Bool
• In the second argument of ‘ifThenElse’, namely
‘(GHC.Prim.tagToEnum# (c# GHC.Prim.<=# b#))’
In the expression:
if (GHC.Prim.tagToEnum# (c# GHC.Prim.>=# a#)) then
(GHC.Prim.tagToEnum# (c# GHC.Prim.<=# b#))
else
False
In a case alternative:
c#
-> if (GHC.Prim.tagToEnum# (c# GHC.Prim.>=# a#)) then
(GHC.Prim.tagToEnum# (c# GHC.Prim.<=# b#))
else
False
When typechecking the code for ‘GHC.Arr.inRange’
in a derived instance for ‘Ix T’:
To see the code I am typechecking, use -ddump-deriv
Failed, modules loaded: none.
```
<details><summary>Trac metadata</summary>
| Trac field | Value |
| ---------------------- | ------------ |
| Version | 8.0.1-rc1 |
| Type | Bug |
| TypeOfFailure | OtherFailure |
| Priority | normal |
| Resolution | Unresolved |
| Component | Compiler |
| Test case | |
| Differential revisions | |
| BlockedBy | |
| Related | |
| Blocking | |
| CC | |
| Operating system | |
| Architecture | |
</details>
<!-- {"blocked_by":[],"summary":"deriving Ix with custom ifThenElse causes \"Bad call to tagToEnum#\"","status":"New","operating_system":"","component":"Compiler","related":[],"milestone":"","resolution":"Unresolved","owner":{"tag":"Unowned"},"version":"8.0.1-rc1","keywords":[],"differentials":[],"test_case":"","architecture":"","cc":[""],"type":"Bug","description":"{{{\r\n$ cat IfThenElseIx.hs\r\n{-# LANGUAGE RebindableSyntax #-}\r\nmodule IfThenElseIx where\r\n\r\nimport Data.Ix (Ix, )\r\n\r\nimport Prelude\r\n\r\n\r\nifThenElse :: Bool -> a -> a -> a\r\nifThenElse True x _ = x\r\nifThenElse False _ x = x\r\n\r\ndata T = A | B deriving (Eq, Ord, Ix)\r\n\r\n$ ghci-8.0.0.20160109 IfThenElseIx.hs\r\nGHCi, version 8.0.0.20160109: http://www.haskell.org/ghc/ :? for help\r\n[1 of 1] Compiling IfThenElseIx ( IfThenElseIx.hs, interpreted )\r\n\r\nIfThenElseIx.hs:13:35: error:\r\n • Bad call to tagToEnum# at type a_a2ky\r\n Specify the type by giving a type signature\r\n e.g. (tagToEnum# x) :: Bool\r\n • In the second argument of ‘ifThenElse’, namely\r\n ‘(GHC.Prim.tagToEnum# (c# GHC.Prim.<=# b#))’\r\n In the expression:\r\n if (GHC.Prim.tagToEnum# (c# GHC.Prim.>=# a#)) then\r\n (GHC.Prim.tagToEnum# (c# GHC.Prim.<=# b#))\r\n else\r\n False\r\n In a case alternative:\r\n c#\r\n -> if (GHC.Prim.tagToEnum# (c# GHC.Prim.>=# a#)) then\r\n (GHC.Prim.tagToEnum# (c# GHC.Prim.<=# b#))\r\n else\r\n False\r\n When typechecking the code for ‘GHC.Arr.inRange’\r\n in a derived instance for ‘Ix T’:\r\n To see the code I am typechecking, use -ddump-deriv\r\nFailed, modules loaded: none.\r\n}}}\r\n","type_of_failure":"OtherFailure","blocking":[]} -->8.0.1Ben GamariBen Gamarihttps://gitlab.haskell.org/ghc/ghc/-/issues/11379Solver hits iteration limit in code without recursive constraints2019-07-07T18:30:40ZBen GamariSolver hits iteration limit in code without recursive constraintsThis example (derived from `xmonad-contrib`) failed to compile with `master`,
```hs
{-# LANGUAGE ExistentialQuantification, RankNTypes, MultiParamTypeClasses,
FunctionalDependencies, FlexibleInstances, FlexibleContexts #-}
...This example (derived from `xmonad-contrib`) failed to compile with `master`,
```hs
{-# LANGUAGE ExistentialQuantification, RankNTypes, MultiParamTypeClasses,
FunctionalDependencies, FlexibleInstances, FlexibleContexts #-}
module XMonad.Layout.MultiToggle where
import Data.Typeable
-- This appears to be the culprit
expand :: (HList ts a) => MultiToggleS ts l a -> MultiToggle ts l a
expand (MultiToggleS b ts) =
resolve ts id
(\x mt -> let g = transform' x in mt{ currLayout = g $ currLayout mt })
(MultiToggle (EL b id) ts)
-- Removing the Typeable constraint here allows compilation to finish
class (Typeable t) => Transformer t a | t -> a where
transform :: t
-> l a
-> (forall l'. l' a -> (l' a -> l a) -> b)
-> b
data EL l a = forall l'. EL (l' a) (l' a -> l a)
transform' :: (Transformer t a) => t -> EL l a -> EL l a
transform' t (EL l det) = undefined
data MultiToggleS ts l a = MultiToggleS (l a) ts
deriving (Read, Show)
data MultiToggle ts l a = MultiToggle{
currLayout :: EL l a,
transformers :: ts
}
class HList c a where
resolve :: c -> b -> (forall t. (Transformer t a) => t -> b) -> b
```
failing during constraint solving with,,
```
XMonad/Layout/MultiToggle.hs:1:1: error:
solveWanteds: too many iterations (limit = 4)
Unsolved: WC {wc_simple =
[D] _ :: Transformer t a (CDictCan)
[D] _ :: a_aIoy ~ a (CNonCanonical)
[D] _ :: Typeable t (CDictCan)
wc_impl =
Implic {
TcLevel = 7
Skolems = (l :: * -> *)
No-eqs = True
Status = Unsolved
Given =
Wanted =
WC {wc_simple =
[W] $dTransformer_aIoM :: Transformer t a (CDictCan)}
Binds = Just EvBindsVar<aIoN>
the inferred type of g :: EL l_aIoL a_aIoK -> EL l_aIoL a_aIoK }}
New superclasses found
Set limit with -fconstraint-solver-iterations=n; n=0 for no limit
```
Lifting the solver iteration limit just results in a loop.
I suspect the issue may be in the `Typeable` solving logic, as removing the `Typable` constraint from `Transformer`'s head allows compilation to proceed.8.0.1Simon Peyton JonesSimon Peyton Joneshttps://gitlab.haskell.org/ghc/ghc/-/issues/11374`-Woverlapping-patterns` induced memory-blowup2019-07-07T18:30:41ZHerbert Valerio Riedelhvr@gnu.org`-Woverlapping-patterns` induced memory-blowupI'm afraid I've found yet another case that still let's the pattern checker go crazy (courtesy of hackage:cryptol-2.2.5):
```hs
{-# LANGUAGE Haskell2010 #-}
{-# OPTIONS_GHC -Woverlapping-patterns #-}
module Bug where
data Type = TCo...I'm afraid I've found yet another case that still let's the pattern checker go crazy (courtesy of hackage:cryptol-2.2.5):
```hs
{-# LANGUAGE Haskell2010 #-}
{-# OPTIONS_GHC -Woverlapping-patterns #-}
module Bug where
data Type = TCon TCon [Type]
| TUser String [Type] Type
| TRec [(String,Type)]
deriving (Show,Eq,Ord)
data TCon = TC TC
| TF TFun
deriving (Show,Eq,Ord)
data TC = TCNum Integer
| TCInf
| TCBit
| TCSeq
| TCFun
| TCTuple Int
deriving (Show,Eq,Ord)
data TFun = TCAdd
| TCSub
| TCMul
| TCDiv
| TCMod
| TCLg2
| TCExp
| TCWidth
| TCMin
| TCMax
| TCLenFromThen
| TCLenFromThenTo
deriving (Show, Eq, Ord, Bounded, Enum)
simpFinTy :: Type -> Maybe [Type]
simpFinTy ty = case ty of
TCon (TC (TCNum _)) _ -> Just []
TCon (TF tf) [t1]
| TCLg2 <- tf -> Just [t1]
| TCWidth <- tf -> Just [t1]
TCon (TF tf) [t1,t2]
| TCAdd <- tf -> Just [t1, t2]
| TCSub <- tf -> Just [t1]
| TCMul <- tf -> Just [t1, t2]
| TCDiv <- tf -> Just [t1]
| TCMod <- tf -> Just []
| TCExp <- tf -> Just [t1, t2]
| TCMin <- tf -> Nothing
| TCMax <- tf -> Just [t1, t2]
TCon (TF tf) [_,_,_]
| TCLenFromThen <- tf -> Just []
| TCLenFromThenTo <- tf -> Just []
_ -> Nothing
```
<details><summary>Trac metadata</summary>
| Trac field | Value |
| ---------------------- | ------------ |
| Version | 8.1 |
| Type | Bug |
| TypeOfFailure | OtherFailure |
| Priority | highest |
| Resolution | Unresolved |
| Component | Compiler |
| Test case | |
| Differential revisions | |
| BlockedBy | |
| Related | |
| Blocking | |
| CC | bgamari |
| Operating system | |
| Architecture | |
</details>
<!-- {"blocked_by":[],"summary":"`-Woverlapping-patterns` induced memory-blowup","status":"New","operating_system":"","component":"Compiler","related":[],"milestone":"8.0.1","resolution":"Unresolved","owner":{"tag":"OwnedBy","contents":"gkaracha"},"version":"8.1","keywords":[],"differentials":[],"test_case":"","architecture":"","cc":["bgamari"],"type":"Bug","description":"I'm afraid I've found yet another case that still let's the pattern checker go crazy (courtesy of hackage:cryptol-2.2.5):\r\n\r\n{{{#!hs\r\n{-# LANGUAGE Haskell2010 #-}\r\n\r\n{-# OPTIONS_GHC -Woverlapping-patterns #-}\r\nmodule Bug where\r\n\r\ndata Type = TCon TCon [Type]\r\n | TUser String [Type] Type\r\n | TRec [(String,Type)]\r\n deriving (Show,Eq,Ord)\r\n\r\ndata TCon = TC TC\r\n | TF TFun\r\n deriving (Show,Eq,Ord)\r\n\r\ndata TC = TCNum Integer\r\n | TCInf\r\n | TCBit\r\n | TCSeq\r\n | TCFun\r\n | TCTuple Int\r\n deriving (Show,Eq,Ord)\r\n\r\ndata TFun = TCAdd\r\n | TCSub\r\n | TCMul\r\n | TCDiv\r\n | TCMod\r\n | TCLg2\r\n | TCExp\r\n | TCWidth\r\n | TCMin\r\n | TCMax\r\n | TCLenFromThen\r\n | TCLenFromThenTo\r\n deriving (Show, Eq, Ord, Bounded, Enum)\r\n\r\nsimpFinTy :: Type -> Maybe [Type]\r\nsimpFinTy ty = case ty of\r\n TCon (TC (TCNum _)) _ -> Just []\r\n\r\n TCon (TF tf) [t1]\r\n | TCLg2 <- tf -> Just [t1]\r\n | TCWidth <- tf -> Just [t1]\r\n\r\n TCon (TF tf) [t1,t2]\r\n | TCAdd <- tf -> Just [t1, t2]\r\n | TCSub <- tf -> Just [t1]\r\n | TCMul <- tf -> Just [t1, t2]\r\n | TCDiv <- tf -> Just [t1]\r\n | TCMod <- tf -> Just []\r\n | TCExp <- tf -> Just [t1, t2]\r\n | TCMin <- tf -> Nothing\r\n | TCMax <- tf -> Just [t1, t2]\r\n\r\n TCon (TF tf) [_,_,_]\r\n | TCLenFromThen <- tf -> Just []\r\n | TCLenFromThenTo <- tf -> Just []\r\n\r\n _ -> Nothing\r\n}}}","type_of_failure":"OtherFailure","blocking":[]} -->8.0.1Georgios KarachaliasGeorgios Karachaliashttps://gitlab.haskell.org/ghc/ghc/-/issues/11370Redundant superclass warnings being included in -Wall destroys the "3 Release...2019-07-07T18:30:42ZEdward KmettRedundant superclass warnings being included in -Wall destroys the "3 Release Policy"These redundant constraint warnings being in -Wall make it seemingly impossible for us to live up to the '3 Release Policy' in many situations.
https://prime.haskell.org/wiki/Libraries/3-Release-Policy
Consider the AMP: `(Monad m, Func...These redundant constraint warnings being in -Wall make it seemingly impossible for us to live up to the '3 Release Policy' in many situations.
https://prime.haskell.org/wiki/Libraries/3-Release-Policy
Consider the AMP: `(Monad m, Functor m)` gets used as a replacement for `Monad m` in many situations for compatibility with code before GHC 7.8, where that wants to call both `fmap` and something from `Monad`, but from 7.10+ that `Functor` is a redundant constraint. We have no backwards-facing 3-release-compatible constraint that someone could use in a type signature without warning to get both `fmap` and `return` that won't trigger this warning.
Similarly if we split a class we can't advocate that folks use the subclass until the superclass is widely available or they'll get spammed with warnings. This affects splitting out `Semigroup` from `Monoid`.
A similar issue arises with the `MonadFail` proposal as there is a stage around 8.4 where the 3-release-compatible advice would be to incur a `MonadFail` constraint, even when the active desguaring will be through `Monad`.
I don't actually have a fix from the libraries side for the fact that with these showing up in -Wall, the 3 release policy doesn't work.
Every single proposal the core libraries committee currently has in the works (except for adding `log1p`, `expm1`, etc. to Floating) is affected by this concern.
One possible fix is to demote the redundant superclass warnings out of `-Wall`.
This would resolve #11369 as well.
<details><summary>Trac metadata</summary>
| Trac field | Value |
| ---------------------- | ------------ |
| Version | 7.10.3 |
| Type | Bug |
| TypeOfFailure | OtherFailure |
| Priority | highest |
| Resolution | Unresolved |
| Component | Compiler |
| Test case | |
| Differential revisions | |
| BlockedBy | |
| Related | #11369 |
| Blocking | |
| CC | ekmett |
| Operating system | |
| Architecture | |
</details>
<!-- {"blocked_by":[],"summary":"Redundant superclass warnings being included in -Wall destroys the \"3 Release Policy\"","status":"New","operating_system":"","component":"Compiler","related":[11369],"milestone":"8.0.1","resolution":"Unresolved","owner":{"tag":"Unowned"},"version":"7.10.3","keywords":[],"differentials":[],"test_case":"","architecture":"","cc":["ekmett"],"type":"Bug","description":"These redundant constraint warnings being in -Wall make it seemingly impossible for us to live up to the '3 Release Policy' in many situations.\r\n\r\nhttps://prime.haskell.org/wiki/Libraries/3-Release-Policy\r\n\r\nConsider the AMP: `(Monad m, Functor m)` gets used as a replacement for `Monad m` in many situations for compatibility with code before GHC 7.8, where that wants to call both `fmap` and something from `Monad`, but from 7.10+ that `Functor` is a redundant constraint. We have no backwards-facing 3-release-compatible constraint that someone could use in a type signature without warning to get both `fmap` and `return` that won't trigger this warning.\r\n\r\nSimilarly if we split a class we can't advocate that folks use the subclass until the superclass is widely available or they'll get spammed with warnings. This affects splitting out `Semigroup` from `Monoid`.\r\n\r\nA similar issue arises with the `MonadFail` proposal as there is a stage around 8.4 where the 3-release-compatible advice would be to incur a `MonadFail` constraint, even when the active desguaring will be through `Monad`.\r\n\r\nI don't actually have a fix from the libraries side for the fact that with these showing up in -Wall, the 3 release policy doesn't work. \r\n\r\nEvery single proposal the core libraries committee currently has in the works (except for adding `log1p`, `expm1`, etc. to Floating) is affected by this concern.\r\n\r\nOne possible fix is to demote the redundant superclass warnings out of `-Wall`. \r\n\r\nThis would resolve #11369 as well.","type_of_failure":"OtherFailure","blocking":[]} -->8.0.1Ben GamariBen Gamarihttps://gitlab.haskell.org/ghc/ghc/-/issues/11364Possible type-checker regression in GHC 8.02019-07-07T18:30:44ZHerbert Valerio Riedelhvr@gnu.orgPossible type-checker regression in GHC 8.0The following code fragment works with GHCs prior to GHC 8.0 but not with GHC 8.0:
```hs
{-# LANGUAGE RoleAnnotations #-}
{-# LANGUAGE IncoherentInstances #-}
{-# LANGUAGE RankNTypes #-}
module Issue where
import Data.Coerce (coerce)
...The following code fragment works with GHCs prior to GHC 8.0 but not with GHC 8.0:
```hs
{-# LANGUAGE RoleAnnotations #-}
{-# LANGUAGE IncoherentInstances #-}
{-# LANGUAGE RankNTypes #-}
module Issue where
import Data.Coerce (coerce)
data Proxy a = Proxy
newtype Catch a = Catch a
class Throws e
type role Throws representational
instance Throws (Catch e)
newtype Wrap e a = Wrap { unWrap :: Throws e => a }
coerceWrap :: Wrap e a -> Wrap (Catch e) a
coerceWrap = coerce
unthrow :: proxy e -> (Throws e => a) -> a
unthrow _ = unWrap . coerceWrap . Wrap
{- this works in GHC 7.10.3, but fails in GHC 8.0 with
GHCi, version 8.0.0.20160105: http://www.haskell.org/ghc/ :? for help
[1 of 1] Compiling Issue ( Issue.hs, interpreted )
Issue.hs:25:13: error:
• Could not deduce (Throws e)
from the context: Throws e0
bound by a type expected by the context:
Throws e0 => a
at Issue.hs:26:13-38
Possible fix:
add (Throws e) to the context of
the type signature for:
unthrow :: proxy e -> (Throws e => a) -> a
• In the expression: unWrap . coerceWrap . Wrap
In an equation for ‘unthrow’: unthrow _ = unWrap . coerceWrap . Wrap
Failed, modules loaded: none.
-}
```
<details><summary>Trac metadata</summary>
| Trac field | Value |
| ---------------------- | -------------------------- |
| Version | 7.10.3 |
| Type | Bug |
| TypeOfFailure | OtherFailure |
| Priority | highest |
| Resolution | Unresolved |
| Component | Compiler (Type checker) |
| Test case | |
| Differential revisions | |
| BlockedBy | |
| Related | |
| Blocking | |
| CC | bgamari, goldfire, simonpj |
| Operating system | |
| Architecture | |
</details>
<!-- {"blocked_by":[],"summary":"Possible type-checker regression in GHC 8.0","status":"New","operating_system":"","component":"Compiler (Type checker)","related":[],"milestone":"8.0.1","resolution":"Unresolved","owner":{"tag":"Unowned"},"version":"7.10.3","keywords":[],"differentials":[],"test_case":"","architecture":"","cc":["bgamari","goldfire","simonpj"],"type":"Bug","description":"The following code fragment works with GHCs prior to GHC 8.0 but not with GHC 8.0:\r\n\r\n{{{#!hs\r\n{-# LANGUAGE RoleAnnotations #-}\r\n{-# LANGUAGE IncoherentInstances #-}\r\n{-# LANGUAGE RankNTypes #-}\r\n\r\nmodule Issue where\r\n\r\nimport Data.Coerce (coerce)\r\n\r\ndata Proxy a = Proxy\r\n\r\nnewtype Catch a = Catch a\r\n\r\nclass Throws e\r\n\r\ntype role Throws representational\r\n\r\ninstance Throws (Catch e)\r\n\r\nnewtype Wrap e a = Wrap { unWrap :: Throws e => a }\r\n\r\ncoerceWrap :: Wrap e a -> Wrap (Catch e) a\r\ncoerceWrap = coerce\r\n\r\nunthrow :: proxy e -> (Throws e => a) -> a\r\nunthrow _ = unWrap . coerceWrap . Wrap\r\n\r\n{- this works in GHC 7.10.3, but fails in GHC 8.0 with\r\n\r\nGHCi, version 8.0.0.20160105: http://www.haskell.org/ghc/ :? for help\r\n[1 of 1] Compiling Issue ( Issue.hs, interpreted )\r\n\r\nIssue.hs:25:13: error:\r\n • Could not deduce (Throws e)\r\n from the context: Throws e0\r\n bound by a type expected by the context:\r\n Throws e0 => a\r\n at Issue.hs:26:13-38\r\n Possible fix:\r\n add (Throws e) to the context of\r\n the type signature for:\r\n unthrow :: proxy e -> (Throws e => a) -> a\r\n • In the expression: unWrap . coerceWrap . Wrap\r\n In an equation for ‘unthrow’: unthrow _ = unWrap . coerceWrap . Wrap\r\nFailed, modules loaded: none.\r\n-}\r\n}}}","type_of_failure":"OtherFailure","blocking":[]} -->8.0.1