[Oberon] Clarifying type compatibility in Oberon-07
Jörg
joerg.straube at iaeth.ch
Thu Oct 12 14:46:05 CEST 2017
* MODULE M; (*test of the implementation of Oberon-07 as of 12.10.17*)
* VAR
* p, q: ARRAY 10 OF INTEGER;
* r, s: ARRAY 10 OF INTEGER;
* e, f: PROCEDURE (i, j: INTEGER);
* g, h: PROCEDURE (i, j: INTEGER);
* a, b: RECORD i, j: INTEGER END ;
* c, d: RECORD i, j: INTEGER END ;
* BEGIN
* p := q; (*ok -> same array types*)
I see it the same: allow
* p := r; (*ok -> structural equivalence suffices*)
Acc 9.1 only allowed for open array. So, I see this as compiler bug.
A hint why it is a compiler bug: If the structural equivalence was included in SAME, exception 4 mentioned in 9.1 would not be needed.
So, it is in my view wrong to include structural equivalence in SAME.
* e := f; (*ok -> same procedure types*)
I see it the same: allow
* e := g; (*ok -> structural equivalence suffices*)
My interpretation of 6.5: only allowed it for (const) P. A “g” is a variable, I would not allow.
* a := b; (*ok -> same record types*)
I see it the same: allow
* a := c (*illegal assignment -> no structural equivalence for records*)
I see it the same, don’t allow
br
Jörg.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.inf.ethz.ch/pipermail/oberon/attachments/20171012/1e9a5951/attachment.html>
More information about the Oberon
mailing list