Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Uncaught case clause error #{'Value' => {type,0,tuple,any}} #526

Open
tsloughter opened this issue Apr 5, 2023 · 1 comment
Open

Uncaught case clause error #{'Value' => {type,0,tuple,any}} #526

tsloughter opened this issue Apr 5, 2023 · 1 comment
Labels

Comments

@tsloughter
Copy link
Contributor

I just updated gradualizer in https://github.com/open-telemetry/opentelemetry-erlang and tried running it. It eventually crashes with this error:

===> Uncaught error: {case_clause,#{'Value' => {type,0,tuple,any}}}
===> Stack trace to the error location:
[{typechecker,do_type_check_expr,2,
              [{file,"/home/tristan/Devel/opentelemetry-erlang/_build/default/plugins/gradualizer/src/typechecker.erl"},
               {line,1676}]},
 {typechecker,type_check_expr,2,
              [{file,"/home/tristan/Devel/opentelemetry-erlang/_build/default/plugins/gradualizer/src/typechecker.erl"},
               {line,1668}]},
 {typechecker,type_check_rel_op,5,
              [{file,"/home/tristan/Devel/opentelemetry-erlang/_build/default/plugins/gradualizer/src/typechecker.erl"},
               {line,2180}]},
 {typechecker,type_check_expr,2,
              [{file,"/home/tristan/Devel/opentelemetry-erlang/_build/default/plugins/gradualizer/src/typechecker.erl"},
               {line,1668}]},
 {typechecker,check_guard_expression,2,
              [{file,"/home/tristan/Devel/opentelemetry-erlang/_build/default/plugins/gradualizer/src/typechecker.erl"},
               {line,4594}]},
 {typechecker,check_guard_expression,2,
              [{file,"/home/tristan/Devel/opentelemetry-erlang/_build/default/plugins/gradualizer/src/typechecker.erl"},
               {line,4591}]},
 {typechecker,check_guard_expression,2,
              [{file,"/home/tristan/Devel/opentelemetry-erlang/_build/default/plugins/gradualizer/src/typechecker.erl"},
               {line,4587}]},
 {typechecker,'-check_guard/2-fun-0-',2,
              [{file,"/home/tristan/Devel/opentelemetry-erlang/_build/default/plugins/gradualizer/src/typechecker.erl"},
               {line,4601}]}]

And actually get a different error when I run it without --use_beams:

===> Uncaught error: {badkey,'Map'}
===> Stack trace to the error location:
[{erlang,map_get,
         ['Map',#{'Value' => {type,0,binary,[{integer,0,0},{integer,0,8}]}}],
         [{error_info,#{module => erl_erts_errors}}]},
 {typechecker,do_type_check_expr_in,3,
              [{file,"/home/tristan/Devel/opentelemetry-erlang/_build/default/plugins/gradualizer/src/typechecker.erl"},
               {line,2480}]},
 {typechecker,type_check_expr_in,3,
              [{file,"/home/tristan/Devel/opentelemetry-erlang/_build/default/plugins/gradualizer/src/typechecker.erl"},
               {line,2468}]},
 {typechecker,'-type_check_call_ty/4-lc$^0/1-0-',2,
              [{file,"/home/tristan/Devel/opentelemetry-erlang/_build/default/plugins/gradualizer/src/typechecker.erl"},
               {line,2256}]},
 {typechecker,type_check_call_ty,4,
              [{file,"/home/tristan/Devel/opentelemetry-erlang/_build/default/plugins/gradualizer/src/typechecker.erl"},
               {line,2257}]},
 {typechecker,do_type_check_expr,2,
              [{file,"/home/tristan/Devel/opentelemetry-erlang/_build/default/plugins/gradualizer/src/typechecker.erl"},
               {line,1797}]},
 {typechecker,type_check_expr,2,
              [{file,"/home/tristan/Devel/opentelemetry-erlang/_build/default/plugins/gradualizer/src/typechecker.erl"},
               {line,1668}]},
 {typechecker,type_check_rel_op,5,
              [{file,"/home/tristan/Devel/opentelemetry-erlang/_build/default/plugins/gradualizer/src/typechecker.erl"},
               {line,2180}]}]
@erszcz erszcz added the bug label Apr 6, 2023
@RobinMorisset
Copy link

Here is a simple testcase that produces the same error:

f(_V0, _V1) ->
    <<_V1:(_V2 = ok)/little-unit:119>>,
    _V2.

produces

escript: exception error: no case clause matching #{'_V0' => {type,0,any,[]},
                                           '_V1' => {type,0,any,[]}}
  in function  typechecker:do_type_check_expr/2 (src/typechecker.erl, line 1722)
  in call from typechecker:type_check_expr/2 (src/typechecker.erl, line 1714)
  in call from typechecker:do_type_check_expr_in/3 (src/typechecker.erl, line 2523)
  in call from typechecker:type_check_expr_in/3 (src/typechecker.erl, line 2514)
  in call from typechecker:type_check_block_in/3 (src/typechecker.erl, line 3565)
  in call from typechecker:check_clause/5 (src/typechecker.erl, line 4027)
  in call from typechecker:check_reachable_clauses/7 (src/typechecker.erl, line 3937)
  in call from typechecker:check_clauses/5 (src/typechecker.erl, line 3907)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

3 participants