<div dir="ltr">Hey All,<br><br>This was done with Erlang R15B02.<br><br>The example code and problem can also be seen here: <a href="https://github.com/Ceryni/cuddly-octo-adventure">https://github.com/Ceryni/cuddly-octo-adventure</a><br><br>Based on everything I've been reading and looking at, it seemed like if I have a behavior like this...<div><br>```erlang<br>% dude.erl<br>-module(dude).<br>-callback hey_dude(Say :: string()) -> Res :: string().<br>```<div><br>And I then implement it...</div><div><br>```erlang<br>% no_spec_dude.erl<br>-module(no_spec_dude).<br>-behaviour(dude).<br>-export([hey_dude/1]).<br>hey_dude(Say) -><br>  lists:flatten(io_lib:format("Hey Dude, ~p", [Say])).<br>```</div><div><br>And finally, I try to use it...</div><div><br>```erlang<br>% runner.erl<br>-module(runner).<br>-export([run/0]).<br>-spec run() -> ok.<br>run() -><br>  io:format("~p", [no_spec_dude:hey_dude(42)]).<br>```<br><br>If i run dialyzer with these 3 files, It should complain about a contract violation right? Except I'm running into the problem of that its not. I created a sample repo with the output of dialyzer here: <a href="https://github.com/Ceryni/cuddly-octo-adventure">https://github.com/Ceryni/cuddly-octo-adventure</a>. If I explicitly define `-spec` then it works as expected and barks at me for using an integer instead of a string, but I thought dialyzer would use the -callback? Any thoughts on what I'm doing wrong here? Maybe using dialyzer incorrectly? My Erlang SDK is too old? Just trying to figure out what's going on.<br><br>Thanks in advance!<br>-Matt</div></div></div>