<div dir="ltr"><div class="gmail_quote"><div dir="ltr">On Fri, Mar 30, 2018 at 11:40 AM Brian Goetz <<a href="mailto:brian.goetz@oracle.com" target="_blank">brian.goetz@oracle.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">  - We'd additionally consider an expression switch to be exhaustive if<br>
all known enums are present _and_ the enum type is in the same module as<br>
the switch<br>
<br>
But that's probably too fussy.<br></blockquote><div><br></div><div>I think it would be surprising for this to depend on where the declaration of the</div><div>enum was located.</div><div><br></div><div>Treating expression switches that handle all constants of an enum as</div><div>exhaustive might be most valuable across compatibility boundaries. If the</div><div>enum is declared nearby, adding a method to the enum is often a good</div><div>alternative to switching on it. When switches are used to associate</div><div>behaviour with enums in other libraries that can't be modified directly, having</div><div>a way to ensure those switches are updated if values are added to the enum</div><div>eliminates a category of bugs.</div></div></div>