瀏覽代碼

* 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