|
@@ -3597,6 +3597,7 @@ implementation
|
|
|
temp : ttempcreatenode;
|
|
|
begin
|
|
|
result:=nil;
|
|
|
+
|
|
|
case nodetype of
|
|
|
equaln,unequaln,lten,gten:
|
|
|
begin
|
|
@@ -4302,9 +4303,6 @@ implementation
|
|
|
end;
|
|
|
|
|
|
var
|
|
|
-{$ifdef addstringopt}
|
|
|
- hp : tnode;
|
|
|
-{$endif addstringopt}
|
|
|
rd,ld : tdef;
|
|
|
i,i2 : longint;
|
|
|
lt,rt : tnodetype;
|
|
@@ -4389,6 +4387,17 @@ implementation
|
|
|
end;
|
|
|
end;
|
|
|
|
|
|
+ { get rid of adding empty sets generated by set constructors (s+([]+[..]))
|
|
|
+
|
|
|
+ this needs to be done before firstpass, else the set additions get already converted into calls }
|
|
|
+ if (resultdef.typ=setdef) and (nodetype=addn) and (right.nodetype=addn) and (is_emptyset(taddnode(right).left)) then
|
|
|
+ begin
|
|
|
+ result:=caddnode.create(addn,left,taddnode(right).right);
|
|
|
+ left:=nil;
|
|
|
+ taddnode(right).right:=nil;
|
|
|
+ exit;
|
|
|
+ end;
|
|
|
+
|
|
|
{ first do the two subtrees }
|
|
|
firstpass(left);
|
|
|
firstpass(right);
|