|
@@ -1062,6 +1062,21 @@ implementation
|
|
|
fieldvarsym :
|
|
|
begin
|
|
|
{ generate access code }
|
|
|
+
|
|
|
+ { for fieldvars, having a typenode is wrong: }
|
|
|
+ { fields cannot be overridden/hidden in child }
|
|
|
+ { classes. However, we always have to pass the }
|
|
|
+ { typenode to handle_propertysym because the }
|
|
|
+ { parent doesn't know yet to what the property }
|
|
|
+ { will resolve (and in case of procsyms, we do }
|
|
|
+ { need the type node in case of }
|
|
|
+ { "inherited property_with_getter/setter" }
|
|
|
+ if (assigned(p1)) and
|
|
|
+ (p1.nodetype = typen) then
|
|
|
+ begin
|
|
|
+ p1.free;
|
|
|
+ p1:=nil;
|
|
|
+ end;
|
|
|
propaccesslist_to_node(p1,st,propaccesslist);
|
|
|
include(p1.flags,nf_isproperty);
|
|
|
consume(_ASSIGNMENT);
|
|
@@ -1090,6 +1105,15 @@ implementation
|
|
|
fieldvarsym :
|
|
|
begin
|
|
|
{ generate access code }
|
|
|
+
|
|
|
+ { for fieldvars, having a typenode is wrong: }
|
|
|
+ { see comments above for write access }
|
|
|
+ if (assigned(p1)) and
|
|
|
+ (p1.nodetype = typen) then
|
|
|
+ begin
|
|
|
+ p1.free;
|
|
|
+ p1:=nil;
|
|
|
+ end;
|
|
|
propaccesslist_to_node(p1,st,propaccesslist);
|
|
|
include(p1.flags,nf_isproperty);
|
|
|
end;
|
|
@@ -2234,14 +2258,14 @@ implementation
|
|
|
not from self }
|
|
|
if srsym.typ in [procsym,propertysym] then
|
|
|
begin
|
|
|
+ hdef:=hclassdef;
|
|
|
if (srsym.typ = procsym) then
|
|
|
begin
|
|
|
- hdef:=hclassdef;
|
|
|
if (po_classmethod in current_procinfo.procdef.procoptions) or
|
|
|
(po_staticmethod in current_procinfo.procdef.procoptions) then
|
|
|
hdef:=tclassrefdef.create(hdef);
|
|
|
- p1:=ctypenode.create(hdef);
|
|
|
end;
|
|
|
+ p1:=ctypenode.create(hdef);
|
|
|
end
|
|
|
else
|
|
|
begin
|