<div dir="auto">This document might be useful to you:<div dir="auto"><br><div dir="auto"><a href="https://github.com/lboasso/oberonc/blob/master/doc/TypeRules.md">https://github.com/lboasso/oberonc/blob/master/doc/TypeRules.md</a><br></div><div dir="auto"><br></div></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Fri, Dec 6, 2019, 16:29 <a href="mailto:rochus.keller@bluewin.ch">rochus.keller@bluewin.ch</a> <<a href="mailto:rochus.keller@bluewin.ch">rochus.keller@bluewin.ch</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Thanks for your response.<br>
<br>
> FrameMsg is the base type of ViewerMsg or in other words ViewerMsg is an extension of FrameMsg.<br>
No, it isn't. It's type definition is "FrameMsg = RECORD END;" as mentioned. Only the identifier is the same (whereas in different modules). So an actual type with a completely unrelated type is assigned to the formal type of the VAR parameter. There are many other examples, some where even a record is assigned to a byte array.<br>
<br>
Best<br>
R.<br>
<br>
----Ursprüngliche Nachricht----<br>
Von : <a href="mailto:joerg.straube@iaeth.ch" target="_blank" rel="noreferrer">joerg.straube@iaeth.ch</a><br>
Datum : 07/12/2019 - 01:24 (CET)<br>
An : <a href="mailto:rochus.keller@bluewin.ch" target="_blank" rel="noreferrer">rochus.keller@bluewin.ch</a><br>
Betreff : Re: [Oberon] Question about Oberon semantics of VAR parameters<br>
<a href="https://inf.ethz.ch/personal/wirth/Oberon/Oberon07.Report.pdf" rel="noreferrer noreferrer" target="_blank">https://inf.ethz.ch/personal/wirth/Oberon/Oberon07.Report.pdf</a><br>
 Chapter 9.1, bullet 3<br>
<br>
<br>
<br>
  Jörg<br>
<br>
<br>
<br>
<br>
   Am 07.12.2019 um 01:17 schrieb Jörg <<a href="mailto:joerg.straube@iaeth.ch" target="_blank" rel="noreferrer">joerg.straube@iaeth.ch</a>>:<br>
<br>
<br>
<br>
<br>
<br>
<br>
   <br>
   FrameMsg is the base type of ViewerMsg or in other words ViewerMsg is an extension of FrameMsg.<br>
<br>
<br>
<br>
   All extensions are assignment compatible to the base type<br>
<br>
<br>
<br>
   Jörg<br>
<br>
<br>
<br>
<br>
    Am 07.12.2019 um 00:33 schrieb "<a href="mailto:rochus.keller@bluewin.ch" target="_blank" rel="noreferrer">rochus.keller@bluewin.ch</a>" <<a href="mailto:rochus.keller@bluewin.ch" target="_blank" rel="noreferrer">rochus.keller@bluewin.ch</a>>:<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
    Can someone please explain to me why the following code in the module display of the Oberon system does not cause a compiler error.<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
    On line 38 there is the statement "v.handle(v, M)" with "handle" being of procedure type "PROCEDURE (F: Frame; VAR M: FrameMsg);" with "FrameMsg = RECORD END;" and the actual parameter M has the following type:<br>
<br>
<br>
<br>
    ViewerMsg* = RECORD (Display.FrameMsg)<br>
<br>
<br>
<br>
           id*: INTEGER;<br>
<br>
<br>
<br>
           X*, Y*, W*, H*: INTEGER;<br>
<br>
<br>
<br>
           state*: INTEGER<br>
<br>
<br>
<br>
         END;<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
    Since FrameMsg and ViewerMsg are not related and the formal and actual parameter M are not the same according to the Oberon-07 language report and "Programming in Oberon" (2004 edition) I would expect an error, but the compiler accepts it. This is just one of many similar examples. Do I completely misinterpret both documents or is the implemented one actually different from the specified language?<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
    Best<br>
<br>
<br>
<br>
    R.<br>
<br>
<br>
<br>
    --<br>
<br>
<br>
<br>
    <a href="mailto:Oberon@lists.inf.ethz.ch" target="_blank" rel="noreferrer">Oberon@lists.inf.ethz.ch</a> mailing list for ETH Oberon and related systems<br>
<br>
<br>
<br>
    <a href="https://lists.inf.ethz.ch/mailman/listinfo/oberon" rel="noreferrer noreferrer" target="_blank">https://lists.inf.ethz.ch/mailman/listinfo/oberon</a><br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
--<br>
<a href="mailto:Oberon@lists.inf.ethz.ch" target="_blank" rel="noreferrer">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 noreferrer" target="_blank">https://lists.inf.ethz.ch/mailman/listinfo/oberon</a><br>
</blockquote></div>