| -- { dg-do run } |
| -- { dg-options "-gnatws" } |
| |
| procedure entry_queues is |
| F1_Poe : Integer := 18; |
| function F1 return Integer is |
| begin |
| F1_Poe := F1_Poe - 1; |
| return F1_Poe; |
| end F1; |
| generic |
| type T is limited private; |
| with function Is_Ok (X : T) return Boolean; |
| procedure Check; |
| procedure Check is |
| begin |
| declare |
| type Poe is new T; |
| X : Poe; |
| Y : Poe; |
| begin |
| null; |
| end; |
| declare |
| type Poe is new T; |
| type Arr is array (1 .. 2) of Poe; |
| X : Arr; |
| B : Boolean := Is_Ok (T (X (1))); |
| begin |
| null; |
| end; |
| end; |
| protected type Poe (D3 : Integer := F1) is |
| entry E (D3 .. F1); -- F1 evaluated |
| function Is_Ok return Boolean; |
| end Poe; |
| protected body Poe is |
| Entry E (for I in D3 .. F1) when True is |
| begin |
| null; |
| end E; |
| function Is_Ok return Boolean is |
| begin |
| return False; |
| end Is_Ok; |
| end Poe; |
| function Is_Ok (C : Poe) return Boolean is |
| begin |
| return C.Is_Ok; |
| end Is_Ok; |
| procedure Chk is new Check (Poe, Is_Ok); |
| begin |
| Chk; |
| end; |