mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-04-05 10:18:22 +02:00

+ several array/record bitpacking tests from gpc, most work already git-svn-id: trunk@6633 -
170 lines
2.1 KiB
ObjectPascal
170 lines
2.1 KiB
ObjectPascal
{ from gpc tests, original name sam9.pas }
|
|
|
|
{$ifdef fpc}
|
|
{$mode macpas}
|
|
{$endif}
|
|
|
|
program sam9;
|
|
|
|
type
|
|
e1 = (
|
|
enum000,
|
|
enum001,
|
|
enum002,
|
|
enum003,
|
|
enum004,
|
|
enum005,
|
|
enum006,
|
|
enum007,
|
|
enum008,
|
|
enum009,
|
|
enum010,
|
|
enum011,
|
|
enum012,
|
|
enum013,
|
|
enum014,
|
|
enum015,
|
|
enum016,
|
|
enum017,
|
|
enum018,
|
|
enum019,
|
|
enum020,
|
|
enum021,
|
|
enum022,
|
|
enum023,
|
|
enum024,
|
|
enum025,
|
|
enum026,
|
|
enum027,
|
|
enum028,
|
|
enum029,
|
|
enum030,
|
|
enum031,
|
|
enum032,
|
|
enum033,
|
|
enum034,
|
|
enum035,
|
|
enum036,
|
|
enum037,
|
|
enum038,
|
|
enum039,
|
|
enum040,
|
|
enum041,
|
|
enum042,
|
|
enum043,
|
|
enum044,
|
|
enum045,
|
|
enum046,
|
|
enum047,
|
|
enum048,
|
|
enum049,
|
|
enum050,
|
|
enum051,
|
|
enum052,
|
|
enum053,
|
|
enum054,
|
|
enum055,
|
|
enum056,
|
|
enum057,
|
|
enum058,
|
|
enum059,
|
|
enum060,
|
|
enum061,
|
|
enum062,
|
|
enum063,
|
|
enum064,
|
|
enum065,
|
|
enum066,
|
|
enum067,
|
|
enum068,
|
|
enum069,
|
|
enum070,
|
|
enum071,
|
|
enum072,
|
|
enum073,
|
|
enum074,
|
|
enum075,
|
|
enum076,
|
|
enum077,
|
|
enum078,
|
|
enum079,
|
|
enum080,
|
|
enum081,
|
|
enum082,
|
|
enum083,
|
|
enum084,
|
|
enum085,
|
|
enum086,
|
|
enum087,
|
|
enum088,
|
|
enum089,
|
|
enum090,
|
|
enum091,
|
|
enum092,
|
|
enum093,
|
|
enum094,
|
|
enum095,
|
|
enum096,
|
|
enum097,
|
|
enum098,
|
|
enum099,
|
|
enum100,
|
|
enum101,
|
|
enum102,
|
|
enum103,
|
|
enum104,
|
|
enum105,
|
|
enum106,
|
|
enum107,
|
|
enum108,
|
|
enum109,
|
|
enum110,
|
|
enum111,
|
|
enum112,
|
|
enum113,
|
|
enum114,
|
|
enum115,
|
|
enum116,
|
|
enum117,
|
|
enum118,
|
|
enum119,
|
|
enum120,
|
|
enum121,
|
|
enum122,
|
|
enum123,
|
|
enum124,
|
|
enum125,
|
|
enum126,
|
|
enum127,
|
|
enum128 { Remove this and it works !}
|
|
);
|
|
|
|
r1 = 0 .. 128;
|
|
|
|
t1 = packed record { has to be packed }
|
|
case integer of
|
|
1: (f1: e1);
|
|
2: (f2: r1);
|
|
end;
|
|
|
|
var
|
|
v1: t1;
|
|
|
|
procedure foo;
|
|
begin
|
|
v1.f1 := enum000;
|
|
v1.f2 := 127;
|
|
v1.f2 := 128;
|
|
end;
|
|
|
|
begin
|
|
foo;
|
|
if v1.f1 = enum128 then
|
|
writeln ( 'OK' )
|
|
else
|
|
begin
|
|
writeln ( 'failed' );
|
|
halt(1)
|
|
end
|
|
end.
|