1-- { dg-do compile }
2
3procedure Entry_Queues2 is
4
5    F1 : Integer := 17;
6
7    generic
8        type T is limited private;
9    procedure Check;
10
11    procedure Check is
12    begin
13        declare
14            type Poe is new T;
15        begin
16            declare
17                type Arr is array (1 .. 2) of Poe;
18                X : Arr;
19                pragma Unreferenced (X);
20            begin
21                null;
22            end;
23        end;
24    end;
25
26begin
27
28    declare
29        protected type Poe (D3 : Integer := F1) is
30            entry E (D3 .. F1);    -- F1 evaluated
31        end Poe;
32        protected body Poe is
33            entry E (for I in D3 .. F1) when True is
34            begin
35                null;
36            end E;
37        end Poe;
38
39        procedure Chk is new Check (Poe);
40
41    begin
42        Chk;
43    end;
44
45end;
46