diff options
Diffstat (limited to 'compiler/node.pas')
-rw-r--r-- | compiler/node.pas | 20 |
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; |