I just found another problem in BP's OOP. In the following program, `o.f' in oo.p is ambiguous. It could mean field f of the field o, or function f of the parent type o. Both BP and GPC (currently) do the former (i.e., say 99).
I noticed this because the OOE draft forbids this case by requiring that object fields don't clash with parent type names.
We do we do here? Allow it in BP mode with a warning, error otherwise?
program Foo;
type o = object function f: Integer; end;
oo = object (o) o: record f: Integer end; procedure p; end;
function o.f: Integer; begin f := 42 end;
procedure oo.p; begin WriteLn (o.f) end;
var v: oo;
begin v.o.f := 99; v.p end.
Frank