summaryrefslogtreecommitdiff
path: root/compiler/node.pas
diff options
context:
space:
mode:
Diffstat (limited to 'compiler/node.pas')
-rw-r--r--compiler/node.pas20
1 files changed, 16 insertions, 4 deletions
diff --git a/compiler/node.pas b/compiler/node.pas
index 0c2ba4efbb..2b81f63377 100644
--- a/compiler/node.pas
+++ b/compiler/node.pas
@@ -276,10 +276,13 @@ interface
nf_block_with_exit,
{ tloadvmtaddrnode }
- nf_ignore_for_wpo { we know that this loadvmtaddrnode cannot be used to construct a class instance }
+ nf_ignore_for_wpo, { we know that this loadvmtaddrnode cannot be used to construct a class instance }
- { WARNING: there are now 31 elements in this type, and a set of this
- type is written to the PPU. So before adding more than 32 elements,
+ { node is derived from generic parameter }
+ nf_generic_para
+
+ { WARNING: there are now 32 elements in this type, and a set of this
+ type is written to the PPU. So before adding more elements,
either move some flags to specific nodes, or stream a normalset
to the ppu
}
@@ -1380,6 +1383,9 @@ implementation
constructor tunarynode.create(t:tnodetype;l : tnode);
begin
inherited create(t);
+ { transfer generic paramater flag }
+ if assigned(l) and (nf_generic_para in l.flags) then
+ include(flags,nf_generic_para);
left:=l;
end;
@@ -1482,7 +1488,10 @@ implementation
constructor tbinarynode.create(t:tnodetype;l,r : tnode);
begin
inherited create(t,l);
- right:=r
+ { transfer generic paramater flag }
+ if assigned(r) and (nf_generic_para in r.flags) then
+ include(flags,nf_generic_para);
+ right:=r;
end;
@@ -1635,6 +1644,9 @@ implementation
constructor ttertiarynode.create(_t:tnodetype;l,r,t : tnode);
begin
inherited create(_t,l,r);
+ { transfer generic parameter flag }
+ if assigned(t) and (nf_generic_para in t.flags) then
+ include(flags,nf_generic_para);
third:=t;
end;