[Oberon] Oberon-07 expression0

John R. Strohm strohm at airmail.net
Sun Jun 21 12:41:32 CEST 2020


It appears that this is for comparisons.  The original code allowed comparisons of pointers.  The revised code appears to be intended to continue allowing comparisons of pointers, and add capability for comparison of procedure variables.

--- thomas.kral at email.cz wrote:

From: Tomas Kral <thomas.kral at email.cz>
To: "Oberon at lists.inf.ethz.ch" <Oberon at lists.inf.ethz.ch>
Subject: [Oberon] Oberon-07 expression0
Date: Sun, 21 Jun 2020 11:52:24 +0200

Hi,

Looking at some history of `ORP' development, I spot a change in
`expression0'

Cannot understand the code, applies to pointer assignments?
Earlier only base or extended type assignments allowed, newer allows 
also procs of the same signature assignment?


from earlier
      ELSIF (xf = ORB.Pointer) & (yf = ORB.Pointer) &
          (IsExtension(x.type.base, y.type.base) OR IsExtension(y.type.base, x.type.base)) THEN
        IF rel <= ORS.neq THEN ORG.IntRelation(rel,  x, y) ELSE ORS.Mark("only = or #") END


to newer
      ELSIF (xf = ORB.Pointer) & (yf = ORB.Pointer) &
          (IsExtension(x.type.base, y.type.base) OR IsExtension(y.type.base, x.type.base))
          OR (xf = ORB.Proc) & (yf = ORB.Proc) & EqualSignatures(x.type, y.type) THEN
        IF rel <= ORS.neq THEN ORG.IntRelation(rel,  x, y) ELSE ORS.Mark("only = or #") END

Many thanks

-- 
Tomas Kral <thomas.kral at email.cz>
--
Oberon at lists.inf.ethz.ch mailing list for ETH Oberon and related systems
https://lists.inf.ethz.ch/mailman/listinfo/oberon




More information about the Oberon mailing list