1procedure T_Movable_Accept_Statements is 2 3 type Digit is range 0..9; 4 5 task type Simple_Task_Type is 6 entry Inner_Return_Entry; 7 entry Declare_Entry (P : in out Digit); 8 entry User_Defined_Dependent_Function_Entry; 9 entry User_Defined_Dependent_Procedure_Entry; 10 end Simple_Task_Type; 11 task body Simple_Task_Type is 12 B : Boolean; 13 D : Digit; 14 N : Natural; 15 I : Integer; 16 17 function Integer_Five return Integer is 18 begin 19 return 5; 20 end Integer_Five; 21 22 procedure Integer_Five (I : out Integer) is 23 begin 24 I := 5; 25 end Integer_Five; 26 27 begin 28 accept Inner_Return_Entry do 29 B := True; -- should not trigger (reference follows in unmovable `if') 30 D := Digit'First; -- should trigger (no dependency) 31 if B then -- should not trigger 32 return; -- ('inner exclusive') 33 end if; 34 B := False; -- should trigger (below 'inner exclusive') 35 end Inner_Return_Entry; 36 37 accept Declare_Entry (P : in out Digit) do 38 N := Natural'Last; -- should trigger (no dependency) 39 D := Digit'First; -- should not trigger (referenced follows in unmovable `declare') 40 B := False; -- should not trigger (referenced follows in unmovable `declare') 41 declare -- should not trigger (explicit reference) 42 procedure Assign (Left : out Digit; 43 Right : in Digit) 44 is 45 begin 46 Left := Right; 47 end Assign; 48 begin 49 Assign (P, D); -- explicit reference is here 50 B := True; 51 end; 52 N := Natural'First; -- should trigger (below last parameter reference) 53 end Declare_Entry; 54 55 accept User_Defined_Dependent_Function_Entry do 56 D := Digit'Last; -- should trigger (no dependency) 57 I := Integer_Five; -- should not trigger (user-defined dependency) 58 N := Natural (I) + 1; -- should trigger (below user-defined dependency) 59 end User_Defined_Dependent_Function_Entry; 60 61 accept User_Defined_Dependent_Procedure_Entry do 62 D := Digit'Last; -- should trigger (no dependency) 63 Integer_Five (I); -- should not trigger (user-defined dependency) 64 N := Natural (I) + 1; -- should trigger (below user-defined dependency) 65 end User_Defined_Dependent_Procedure_Entry; 66 end Simple_Task_Type; 67 68 task Separate_Task is 69 entry Out_Parameter (X : out Boolean); 70 end Separate_Task; 71 task body Separate_Task is separate; 72 73 -- A_Procedure_Body_Stub (for renamings) 74 procedure Renaming is separate; 75 76begin 77 null; 78end T_Movable_Accept_Statements; 79