Browse Source

* fixed constant eval for bool xor/or/and bool

peter 26 years ago
parent
commit
76e4b69919
1 changed files with 10 additions and 3 deletions
  1. 10 3
      compiler/tcadd.pas

+ 10 - 3
compiler/tcadd.pas

@@ -225,9 +225,13 @@ implementation
          if ((lt=ordconstn) and (rt=ordconstn)) and
             ((is_constintnode(p^.left) and is_constintnode(p^.right)) or
              (is_constboolnode(p^.left) and is_constboolnode(p^.right) and
-              (p^.treetype in [ltn,lten,gtn,gten,equaln,unequaln]))) then
+              (p^.treetype in [ltn,lten,gtn,gten,equaln,unequaln,andn,xorn,orn]))) then
            begin
-              resdef:=s32bitdef;
+              { return a boolean for boolean operations (and,xor,or) }
+              if is_constboolnode(p^.left) then
+               resdef:=booldef
+              else
+               resdef:=s32bitdef;
               lv:=p^.left^.value;
               rv:=p^.right^.value;
               case p^.treetype of
@@ -1154,7 +1158,10 @@ implementation
 end.
 {
   $Log$
-  Revision 1.52  1999-11-15 17:53:00  pierre
+  Revision 1.53  1999-11-15 21:53:42  peter
+    * fixed constant eval for bool xor/or/and bool
+
+  Revision 1.52  1999/11/15 17:53:00  pierre
     + one field added for ttoken record for operator
       linking the id to the corresponding operator token that
       can now now all be overloaded