<br><br><div class="gmail_quote">On Tue, Oct 18, 2011 at 1:57 PM, Joel Reymont <span dir="ltr"><<a href="mailto:joelr1@gmail.com">joelr1@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">

Let's just say I've been going batshit crazy since last week, managing to fix a single file to Dialyzer's liking.<br>
<br>
Consider the following <a href="https://gist.github.com/5744c70b2a6f918ddb56" target="_blank">https://gist.github.com/5744c70b2a6f918ddb56</a><br>
<br>
The first message can be summarized as<br>
<br>
barrier_start.erl:50: The specification for barrier_start:barrier_start/3 states that the function might also return {'stop',#game{},tuple()} but the inferred return is {'continue',#game{{},_} | {'skip',#game{},_}<br>


<br>
but what about this clause in my code? Does Dialyzer think it will never be triggered? Why?<br>
<br>
barrier_start(Game = #game{}, Ctx, {'EXIT', Barrier, _})<br>
  when is_pid(Barrier),<br>
       Barrier =:= Game#game.barrier -><br>
    gamelib:notify_start_game(Game),<br>
    {stop, Game, Ctx};<br></blockquote><div><br></div><div><br></div><div>I think for that one the problem is that it infers it can find 'skip' but your type doesn't have it in there. You won't easily be able to add that clause without overloading contracts though. This is a wild guess.</div>

<div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
<br>
The second message is a beauty!<br>
<br>
barrier_start.erl:74: The call gamelib:join(Game::#game{},Event::#pm_event{pm_message::#pm_join{}},1) does not have a term of type #game{} (with opaque subterms) as 1st argument<br></blockquote><div><br></div><div>I believe this means you'd be breaking the contract of gamelib:join/2 if it doesn't accept #game{} as a tuple in its own type spec, or that the #game{} it accepts doesn't have similar opaque terms inside of it. I haven't tried to fix it and see though.</div>

<div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
<br>
What in the world does it mean?<br>
<br>
Help!!!<br>
<br>
--------------------------------------------------------------------------<br>
- for hire: mac osx device driver ninja, kernel extensions and usb drivers<br>
---------------------+------------+---------------------------------------<br>
<a href="http://wagerlabs.com" target="_blank">http://wagerlabs.com</a> | @wagerlabs | <a href="http://www.linkedin.com/in/joelreymont" target="_blank">http://www.linkedin.com/in/joelreymont</a><br>
---------------------+------------+---------------------------------------<br>
<br>
_______________________________________________<br>
erlang-questions mailing list<br>
<a href="mailto:erlang-questions@erlang.org">erlang-questions@erlang.org</a><br>
<a href="http://erlang.org/mailman/listinfo/erlang-questions" target="_blank">http://erlang.org/mailman/listinfo/erlang-questions</a><br>
</blockquote></div><br>