| -- { dg-do compile } |
| |
| procedure Generic_Call_Iface is |
| |
| generic |
| type Subscriber_Type is interface; |
| with procedure On_Changed (Subscriber : in out Subscriber_Type) |
| is abstract; |
| package My_Generic is |
| type Subscriber_Ptr is access all Subscriber_Type'Class; |
| procedure Update; |
| Subscriber : Subscriber_Ptr := null; |
| end; |
| |
| package body My_Generic is |
| procedure Update is |
| begin |
| if Subscriber /= null then |
| Subscriber.On_Changed; |
| end if; |
| end; |
| end; |
| |
| package User is |
| type Integer_Subscriber is interface; |
| procedure On_Changed_Int (I : in out Integer_Subscriber) is abstract; |
| |
| package P is new My_Generic |
| (Subscriber_Type => Integer_Subscriber, |
| On_Changed => On_Changed_Int); |
| end; |
| begin |
| null; |
| end; |