in a lambda, wrong `let` types can cause "thread blocked indefinitely"
lue-bird opened this issue · 1 comments
lue-bird commented
Quick Summary: In a lambda, annotating the argument with the wrong type argument causes an error:
thread blocked indefinitely in an MVar operation
SSCCE
test : a -> a
test =
\a ->
let
b : b
b =
a
in
belm throws
You ran into a compiler bug. Here are some details for the developers:
b [rank = 2]
Please create an <http://sscce.org/> and then report it
at <https://github.com/elm/compiler/issues>
CallStack (from HasCallStack):
error, called at compiler/src/Type/Solve.hs:206:15 in main:Type.Solve
-- ERROR -----------------------------------------------------------------------
I ran into something that bypassed the normal error reporting process! I
extracted whatever information I could from the internal error:
> thread blocked indefinitely in an MVar operation
if the argument a is part of the declaration top
test : a -> a
test a = ...the correct error is thrown
This
avalue is a:aBut the type annotation on
bsays it should be:b
The result type can be chosen arbitrarily*, for example () or Int.
*If the result type is set to b a correct error is thrown
The body is an anonymous function of type:
b -> bBut the type annotation on
testsays it should be:a -> b
- Elm: 0.19.1
- Operating System: Ubuntu 22.04.1 LTS
github-actions commented
Thanks for reporting this! To set expectations:
- Issues are reviewed in batches, so it can take some time to get a response.
- Ask questions in a community forum. You will get an answer quicker that way!
- If you experience something similar, open a new issue. We like duplicates.
Finally, please be patient with the core team. They are trying their best with limited resources.