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;
          definition:=def;
          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;
-{         nextenum:=Tenumsym(def.firstenum);
-         def.firstenum:=self;}
       end;
 
 
@@ -2560,7 +2569,10 @@ implementation
 end.
 {
   $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
       so the used registers can't be reused when parameters are loaded
       into register variables