| -- { dg-do run } |
| procedure Prot_Def is |
| |
| protected Prot is |
| procedure Inc; |
| function Get return Integer; |
| private |
| Data : Integer := 0; |
| end Prot; |
| |
| protected body Prot is |
| procedure Inc is |
| begin |
| Data := Data + 1; |
| end Inc; |
| function Get return Integer is |
| begin |
| return Data; |
| end Get; |
| end Prot; |
| |
| generic |
| with procedure Inc is Prot.Inc; |
| with function Get return Integer is Prot.Get; |
| package Gen is |
| function Add2_Get return Integer; |
| end Gen; |
| |
| package body Gen is |
| function Add2_Get return Integer is |
| begin |
| Inc; |
| Inc; |
| return Get; |
| end Add2_Get; |
| end Gen; |
| |
| package Inst is new Gen; |
| |
| begin |
| if Inst.Add2_Get /= 2 then |
| raise Constraint_Error; |
| end if; |
| end Prot_Def; |