浏览代码

* fix setting minval for enum with specified values

peter 21 年之前
父节点
当前提交
fd3f6a9017
共有 1 个文件被更改,包括 23 次插入11 次删除
  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