48 lines
1.3 KiB
Ada
48 lines
1.3 KiB
Ada
-- { dg-do compile }
|
|
package body Old_Errors is
|
|
|
|
A : Integer;
|
|
|
|
function F
|
|
(X : Integer := A'Old) -- { dg-error "can only appear within subprogram" }
|
|
return Integer is
|
|
begin
|
|
return X;
|
|
end F;
|
|
|
|
procedure P (I : in Integer; O : out Integer; IO : in out Integer) is
|
|
Y : Integer := 0;
|
|
function G
|
|
(X : Integer := Y'Old) -- { dg-error "cannot refer to local variable" }
|
|
return Integer is
|
|
begin
|
|
return X;
|
|
end G;
|
|
|
|
function H (X : Integer := A'Old) return Integer is -- OK
|
|
begin
|
|
return X;
|
|
end H;
|
|
|
|
begin
|
|
Y := Y'Old; -- { dg-error "cannot refer to local variable" }
|
|
declare
|
|
Z : Integer := 0;
|
|
procedure Inner is
|
|
IL : Integer := 0;
|
|
begin
|
|
IL := IL'Old; -- { dg-error "cannot refer to local variable" }
|
|
Z := Z'Old; -- OK
|
|
end Inner;
|
|
begin
|
|
Y := Z'Old; -- { dg-error "cannot refer to local variable" }
|
|
end;
|
|
Y := I'Old; -- { dg-warning "Old applied to constant has no effect" }
|
|
Y := O'Old; -- OK
|
|
Y := IO'Old; -- OK
|
|
Y := G; -- OK, error has been signalled at G declaration
|
|
pragma Assert (G (3)'Old = Y); -- { dg-error "cannot refer to local variable" }
|
|
end P;
|
|
|
|
end Old_Errors;
|