Procházet zdrojové kódy

patched test case: SET {3..2} must be empty.

git-svn-id: https://svn.inf.ethz.ch/svn/lecturers/a2/trunk@6842 8c9fc860-2736-0410-a75d-ab315db34111
felixf před 9 roky
rodič
revize
869e3d5d7f
1 změnil soubory, kde provedl 8 přidání a 12 odebrání
  1. 8 12
      source/FoxSemanticChecker.Mod

+ 8 - 12
source/FoxSemanticChecker.Mod

@@ -1977,20 +1977,16 @@ TYPE
 						ELSIF (rightInteger<0) OR (rightInteger >= system.setType.sizeInBits) THEN
 							Error(right.position,Diagnostics.Invalid,"not allowed set integer value");
 						ELSE
-							IF leftInteger > rightInteger THEN
-								temp := leftInteger;  leftInteger := rightInteger;  rightInteger := temp
-							END;
-							IF leftInteger > MAX(SET) THEN leftInteger := MAX(SET) END;
-							IF rightInteger > MAX(SET) THEN rightInteger := MAX(SET) END; (*!!!!!!!!! this is a hack !!!!!!! *)
-							(*!	in case of MAX(SET) =31 and --bits=64 some kind of sign extension
+							IF (leftInteger > MAX(SET)) OR (rightInteger <0) THEN 
+								s := {};
+							ELSE
+								IF rightInteger > MAX(SET) THEN rightInteger := MAX(SET) END; 
+								IF leftInteger < 0 THEN leftInteger := 0 END;
+								(*!!!!!!!!! this is a hack !!!!!!! *)
+								(*!	in case of MAX(SET) =31 and --bits=64 some kind of sign extension
 								extends the range  x..31  to  x..63 !!!!!! *)
-							s := s + {leftInteger..rightInteger};	
-							(* same but more explicit:
-							WHILE (leftInteger <= rightInteger) DO
-								INCL(s,leftInteger);
-								INC(leftInteger);
+								s := s + {leftInteger..rightInteger};	
 							END;
-							*)
 						END;
 					ELSE
 						constant := FALSE;