[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