<div dir="ltr">I agree :)<br></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Fri, Oct 30, 2020 at 2:37 PM Diego Sardina <dsar@eml.cc> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">On Fri, Oct 30, 2020, at 3:25 PM, Luca Boasso wrote:<br>
> <br>
> I remember reading about a similar issue related to the WITH statement of Oberon-90, so the way I solved this problem in oberonc is to add an additional type test each time the case variable is referred in the statements of a particular case label.<br>
<br>
This is the way to go.<br>
<br>
The WITH's loophole was fixed in Oberon-2/CP (at least in report) by specifying explicity:<br>
<br>
"[...] and apply a typeguard to every occurrence of the tested variable within this statement sequence."<br>
<br>
Oberon-90 says something similar with different words and it's not clear what is the meaning of "extending the guard over an entire statement sequence".<br>
<br>
In my opinion, these two statements have the same meaning. In Oberon-2 they made it straightforward.<br>
<br>
So the WITH statement is just a syntactic sugar to avoid the type guard syntax and the loophole is just an optimisation issue.<br>
<br>
--<br>
  Diego Sardina<br>
--<br>
<a href="mailto:Oberon@lists.inf.ethz.ch" target="_blank">Oberon@lists.inf.ethz.ch</a> mailing list for ETH Oberon and related systems<br>
<a href="https://lists.inf.ethz.ch/mailman/listinfo/oberon" rel="noreferrer" target="_blank">https://lists.inf.ethz.ch/mailman/listinfo/oberon</a><br>
</blockquote></div>