40 lines
1.1 KiB
Ada
40 lines
1.1 KiB
Ada
|
-- { dg-do run }
|
||
|
|
||
|
procedure Generic_Comp is
|
||
|
|
||
|
generic
|
||
|
type Element_Type is private;
|
||
|
type Index_Type is (<>);
|
||
|
type Array_Type is array (Index_Type range <>) of Element_Type;
|
||
|
with function ">" (Left, Right : Element_Type) return Boolean is <>;
|
||
|
procedure Gen (Data: in out Array_Type);
|
||
|
|
||
|
procedure Gen (Data: in out Array_Type) is
|
||
|
begin
|
||
|
if not (Data'Length > 1)
|
||
|
or else not (Integer'(Data'Length) > 1)
|
||
|
or else not Standard.">" (Data'Length, 1)
|
||
|
or else not Standard.">" (Integer'(Data'Length), 1)
|
||
|
then
|
||
|
raise Program_Error;
|
||
|
end if;
|
||
|
end;
|
||
|
|
||
|
type My_Array is array (Positive range <>) of Integer;
|
||
|
|
||
|
function Less_Than (L, R : Integer) return Boolean is
|
||
|
begin
|
||
|
return L < R;
|
||
|
end;
|
||
|
|
||
|
procedure Chk_Down is new Gen (Element_Type => Integer,
|
||
|
Index_Type => Positive,
|
||
|
Array_Type => My_Array,
|
||
|
">" => Less_Than);
|
||
|
|
||
|
Data : My_Array (1 .. 2);
|
||
|
|
||
|
begin
|
||
|
Chk_Down (Data);
|
||
|
end;
|