<div dir="ltr"><div>Hi List,<br><br></div>Here's a stripped down & renamed version of some code I just copied from our system. I may have been staring at this for too long but I've convinced myself that the second function clause in both of these functions can never be executed because they are both covered by the first function clause:<br>
<div><br><div><br>-module(no_warn).<br>-compile(export_all).<br><br>-record(my_rec,{field1, field2}).<br><br>my_function1(#my_rec{field1 = {tag, _}, field2 = f2}) -> 1;<br>my_function1(#my_rec{field1 = {tag, 1}, field2 = f2}) -> 2; % line 7<br>
my_function1(_) -> 3.<br><br>my_function2(#my_rec{field1 = {tag, _}}) -> 1;<br>my_function2(#my_rec{field1 = {tag, 1}}) -> 2; % line11<br>my_function2(_) -> 3.<br><br><br></div><div>Except, that when I compile this (R16B03-1) the compiler only warns me about one of them:<br>
</div><div><br><br>no_warn.erl:11: Warning: this clause cannot match because a previous clause at line 10 always matches<br><br><br></div><div>Surely line 7 should give an identical warning? Or do I need to go lie down for a little while?<br>
</div><div><br></div><div>//TTom.<br><br></div></div></div>