Browse Source

* fix setting minval for enum with specified values

peter 20 years ago
parent
commit
fd3f6a9017
1 changed files with 23 additions and 11 deletions
  1. 23 11
      compiler/symsym.pas

+ 23 - 11
compiler/symsym.pas

@@ -2281,17 +2281,26 @@ implementation
          typ:=enumsym;
          typ:=enumsym;
          definition:=def;
          definition:=def;
          value:=v;
          value:=v;
-         { check for jumps }
-         if v>def.max+1 then
-          def.has_jumps:=true;
-         { update low and high }
-         if def.min>v then
-           def.setmin(v);
-         if def.max<v then
-           def.setmax(v);
+         { First entry? Then we need to set the minval }
+         if def.firstenum=nil then
+           begin
+             if v>0 then
+               def.has_jumps:=true;
+             def.setmin(v);
+             def.setmax(v);
+           end
+         else
+           begin
+             { check for jumps }
+             if v>def.max+1 then
+              def.has_jumps:=true;
+             { update low and high }
+             if def.min>v then
+               def.setmin(v);
+             if def.max<v then
+               def.setmax(v);
+           end;
          order;
          order;
-{         nextenum:=Tenumsym(def.firstenum);
-         def.firstenum:=self;}
       end;
       end;
 
 
 
 
@@ -2560,7 +2569,10 @@ implementation
 end.
 end.
 {
 {
   $Log$
   $Log$
-  Revision 1.197  2005-01-03 22:27:56  peter
+  Revision 1.198  2005-01-04 16:38:54  peter
+    * fix setting minval for enum with specified values
+
+  Revision 1.197  2005/01/03 22:27:56  peter
     * insert stack_check helper call before doing register allocation
     * insert stack_check helper call before doing register allocation
       so the used registers can't be reused when parameters are loaded
       so the used registers can't be reused when parameters are loaded
       into register variables
       into register variables