[Oberon] Clarifying type compatibility in Oberon-07
joerg.straube at iaeth.ch
Thu Oct 12 15:46:17 CEST 2017
Did somebody contact NW already?
From: Oberon [mailto:oberon-bounces at lists.inf.ethz.ch] On Behalf Of Andreas Pirklbauer
Sent: Thursday, October 12, 2017 3:16 PM
To: ETH Oberon and related systems <oberon at lists.inf.ethz.ch>
Subject: [Oberon] Clarifying type compatibility in Oberon-07
See the 2 inline comments below:
> * 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 ;
> * 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.
I just stated that structural equivalence for arrays *is* currently implemented (see
ORP.CompTypes) and also that the current language report does *not* actually make it
clear whether it *should* be in the language or not. Whether it *should* be “in”
or “out” is a separate question. There are of course the two options:
1. It is viewed as a compiler bug -> then one should simply remove it
2. It is not viewer as a bug -> then one should remove exception 4 in 9.1.
But either way, the language report should be updated such that there is no ambiguity.
> * e := g; (*ok -> structural equivalence suffices*)
> My interpretation of section 6.5: only allowed it for (const) P.
> A “g” is a variable, I would not allow.
Same response here. At the very least, the language report needs to be made
clearer. Currently it states: "If a procedure P is assigned to a procedure
variable of type T”. To most people (including you) the word “a procedure P”
means "procedures declared the usual way” but excludes procedure *variables*.
I think we really have exhausted this topic and are scraping the bottom. All
arguments are on the table, with different points of views for the pros and cons.
But we all (seem to) agree that the language report needs revision in that
it should a) leave no ambiguity and b) be in line with the implementation.
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the Oberon