<div dir="ltr"><div>I agree. The above example works in <a href="https://github.com/lboasso/oberonc">oberonc</a> (once you make use of the import M1 and global variable M0 since unused identifiers will be an error in oberonc).</div><div>At this point I am more and more convinced that the algorithm from<b> <span class="gmail-il">Griesemer</span> R. On the Linearization of Graphs and Writing Symbol File</b> is the best approach while still being relatively simple to implement.</div><div>This corner case and many more are handled and it removes the import order limitation of Wirth's compiler.<br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Thu, May 13, 2021 at 9:33 AM Andreas Pirklbauer <<a href="mailto:andreas_pirklbauer@yahoo.com" target="_blank">andreas_pirklbauer@yahoo.com</a>> 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">The following reports a “mult def” error in PO 2013 when compiling M2<br>
<br>
  MODULE M0;<br>
    TYPE T0* = RECORD i: INTEGER END ;<br>
  END M0.<br>
<br>
  MODULE M1;<br>
    IMPORT M0;<br>
    TYPE T1* = RECORD (M0.T0) j: INTEGER END ;<br>
  END M1.<br>
<br>
  MODULE M2;<br>
    IMPORT M1;  (*re-imports M0.T0*)<br>
    VAR M0: INTEGER;  (* <--- "mult def” error message*)<br>
  END M2.<br>
<br>
In PO2013 this error is reported because the symbol table headed<br>
by topScope *also* contains the re-imported module M0 (which is<br>
a bit unfortunate) -- but ORB.NewObj does not check that fact.<br>
<br>
I my mind, M2 should compile with no error message. i.e. hidden<br>
re-imports should be able to coexist with regular identifiers (since<br>
one cannot refer to re-imported objects by name anyway).<br>
<br>
Comments?<br>
<br>
<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>