[Oberon] Oberon-07 expression0

Tomas Kral thomas.kral at email.cz
Sun Jun 21 11:52:24 CEST 2020


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>


More information about the Oberon mailing list