1--  { dg-do run }
2--  { dg-options "-gnatws" }
3
4with Access8_Pkg;
5procedure Access8 is
6   Errors : Natural := 0;
7   outer_object_accessibility_check
8     : access Access8_Pkg.object;
9   outer_discriminant_accessibility_check
10     : access Access8_Pkg.discriminant;
11   Mistake
12     : access Access8_Pkg.discriminant;
13   outer_discriminant_copy_discriminant_check
14     : access Access8_Pkg.discriminant;
15begin
16   declare
17      obj
18        : aliased Access8_Pkg.object := Access8_Pkg.get;
19      inner_object
20        : access Access8_Pkg.object := obj'Access;
21      inner_discriminant
22        : access Access8_Pkg.discriminant := obj.d;
23   begin
24      begin
25         outer_object_accessibility_check
26           := inner_object;        --  ERROR
27      exception
28         when others => Errors := Errors + 1;
29      end;
30      begin
31         Mistake
32           := inner_object.d;      --  ERROR
33      exception
34         when others => Errors := Errors + 1;
35      end;
36      begin
37         outer_discriminant_copy_discriminant_check
38           := inner_discriminant;  --  ERROR
39      exception
40        when others => Errors := Errors + 1;
41      end;
42      if Errors /= 3 then
43         raise Program_Error;
44      end if;
45   end;
46end;
47