The Ada Program: down.adb

  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;