Skip to content

issue with SET64 constructor for 32-bit CPUs

SET64 constructor does not work for 32-bit CPUs

MODULE TestSet2;
IMPORT KernelLog;
	PROCEDURE Do*;
	VAR s: SET64;
	BEGIN
		s := { 7..13 };
		Set(s);
		s := { 27..53 };
		Set(s);
	END Do;

PROCEDURE Set*(x: SET64);
VAR first := TRUE: BOOLEAN; bit := {0}: SET64; i: INTEGER;
BEGIN
	KernelLog.Char("{");
	FOR i := 0 TO MAX(SET64) DO
		IF bit * x # {} THEN
			IF ~first THEN KernelLog.Char(",") ELSE first := FALSE END;
			KernelLog.Int(i,1);
		END;
		bit := SHL(bit, 1);
	END;
	KernelLog.Char("}");
END Set;
END TestSet2.

System.Free TestSet2~
TestSet2.Do~