program mir040a;
{variant record with discriminant out of bounds}
uses GPC;
type range = 10..16;
     VariantRecord = record
       case NoBits: range of
         10, 11: (SmallNumber: ShortInt);
	 12..16: (BigNumber: Integer)
       end;

var v : ^VariantRecord;
    k, v1 : Integer;

procedure ExpectError;
begin
  if ExitCode = 0 then
    WriteLn ('failed')
  else
    begin
      WriteLn ('OK');
      Halt (0) {!}
    end
end;

begin
   AtExit(ExpectError);
   New (v, 10);
   k := v^.SmallNumber;
   Dispose (v);
   New (v, 16);
   k := v^.BigNumber;
   Dispose (v);
   v1 := 8;
   New (v, v1); { discriminant undeflow }
   k := v^.SmallNumber;
   Dispose (v);
end.

