1 -- down.adb: Passing subprograms down 2 3 procedure Down is 4 type F is access procedure (X: Integer); 5 procedure P (X: Integer) is begin null; end P; 6 procedure Q (FP: F) is begin FP(5); end Q; 7 procedure R is 8 procedure T (X: Integer) is begin null; end T; 9 begin 10 Q (P'Access); -- no problem 11 Q (T'Access); -- subprogram "T" deeper than access type 12 end R; 13 begin 14 R; 15 end Down;