gcc/ada/
* exp_ch3.adb (Build_Access_Subprogram_Wrapper_Body): Create a
proper signature when the access type denotes a parameterless
subprogram.
* exp_ch6.adb (Expand_Call): Handle properly a parameterless
indirect call when the corresponding access type has contracts.
Act := First (Parameter_Specifications (Spec_Node));
while Present (Act) loop
+ exit when Act = Last (Parameter_Specifications (Spec_Node));
Append_To (Actuals,
Make_Identifier (Loc, Chars (Defining_Identifier (Act))));
Next (Act);
- exit when Act = Last (Parameter_Specifications (Spec_Node));
end loop;
Ptr :=
Access_Subprogram_Wrapper (Etype (Name (N)));
Ptr : constant Node_Id := Prefix (Name (N));
Ptr_Type : constant Entity_Id := Etype (Ptr);
- Parms : constant List_Id := Parameter_Associations (N);
Typ : constant Entity_Id := Etype (N);
+
New_N : Node_Id;
+ Parms : List_Id := Parameter_Associations (N);
Ptr_Act : Node_Id;
begin
Ptr_Act := Ptr;
end if;
+ -- Handle parameterless subprogram.
+
+ if No (Parms) then
+ Parms := New_List;
+ end if;
+
Append
(Make_Parameter_Association (Loc,
Selector_Name => Make_Identifier (Loc,