Browse Source

* convert non-constant enums in in-expressions to longint if we use the
generic jumps code

git-svn-id: branches/jvmbackend@18697 -

Jonas Maebe 14 years ago
parent
commit
c8c75d7e1d
1 changed files with 7 additions and 3 deletions
  1. 7 3
      compiler/jvm/njvmset.pas

+ 7 - 3
compiler/jvm/njvmset.pas

@@ -68,9 +68,13 @@ implementation
           begin
           begin
             if right.nodetype=setconstn then
             if right.nodetype=setconstn then
               tjvmsetconstnode(right).setconsttype:=sct_notransform;
               tjvmsetconstnode(right).setconsttype:=sct_notransform;
-            if isenum and
-               (left.nodetype=ordconstn) then
-              tjvmordconstnode(left).enumconstok:=true;
+            if isenum then
+              if (left.nodetype=ordconstn) then
+                tjvmordconstnode(left).enumconstok:=true
+              else
+                { not very clean, since we now have "longint in enumset", but
+                  the code generator doesn't really mind }
+                inserttypeconv_explicit(left,s32inttype);
           end;
           end;
         result:=inherited pass_1;
         result:=inherited pass_1;
         if assigned(result) then
         if assigned(result) then