[multiple changes]
2011-08-01 Ed Schonberg <schonberg@adacore.com> * sem_attr.adb (Analyze_Attribute, case 'Access): handle properly named access to protected subprograms in generic bodies. * sem_ch6.adb (Analyze_Subprogram_Declaration): If the context is a protected type, indicate that the convention of the subprogram is Convention_Protected, because it may be used in subsequent declarations within the protected declaration. 2011-08-01 Vincent Celier <celier@adacore.com> * mlib-prj.adb (Build_Library): Use "ada_" as the prefix for the "init" and "final" procedures when the name of the library is "ada", to avoid duplicate symbols "adainit" and "adafinal" in executables. From-SVN: r177002
This commit is contained in:
parent
67e28ef818
commit
1a265e7824
|
@ -1,3 +1,18 @@
|
||||||
|
2011-08-01 Ed Schonberg <schonberg@adacore.com>
|
||||||
|
|
||||||
|
* sem_attr.adb (Analyze_Attribute, case 'Access): Handle properly named
|
||||||
|
access to protected subprograms in generic bodies.
|
||||||
|
* sem_ch6.adb (Analyze_Subprogram_Declaration): If the context is a
|
||||||
|
protected type, indicate that the convention of the subprogram is
|
||||||
|
Convention_Protected, because it may be used in subsequent declarations
|
||||||
|
within the protected declaration.
|
||||||
|
|
||||||
|
2011-08-01 Vincent Celier <celier@adacore.com>
|
||||||
|
|
||||||
|
* mlib-prj.adb (Build_Library): Use "ada_" as the prefix for the "init"
|
||||||
|
and "final" procedures when the name of the library is "ada", to avoid
|
||||||
|
duplicate symbols "adainit" and "adafinal" in executables.
|
||||||
|
|
||||||
2011-08-01 Ed Schonberg <schonberg@adacore.com>
|
2011-08-01 Ed Schonberg <schonberg@adacore.com>
|
||||||
|
|
||||||
* sem_attr.adb (Analyze_Attribute, case 'Result): Handle properly a
|
* sem_attr.adb (Analyze_Attribute, case 'Result): Handle properly a
|
||||||
|
|
|
@ -862,7 +862,7 @@ package body MLib.Prj is
|
||||||
Arguments := new String_List (1 .. Initial_Argument_Max);
|
Arguments := new String_List (1 .. Initial_Argument_Max);
|
||||||
end if;
|
end if;
|
||||||
|
|
||||||
-- Add "-n -o b~<lib>.adb (b__<lib>.adb on VMS) -L<lib>"
|
-- Add "-n -o b~<lib>.adb (b__<lib>.adb on VMS) -L<lib>_"
|
||||||
|
|
||||||
Argument_Number := 2;
|
Argument_Number := 2;
|
||||||
Arguments (1) := No_Main;
|
Arguments (1) := No_Main;
|
||||||
|
@ -875,7 +875,17 @@ package body MLib.Prj is
|
||||||
Add_Argument
|
Add_Argument
|
||||||
(B_Start.all
|
(B_Start.all
|
||||||
& Get_Name_String (For_Project.Library_Name) & ".adb");
|
& Get_Name_String (For_Project.Library_Name) & ".adb");
|
||||||
Add_Argument ("-L" & Get_Name_String (For_Project.Library_Name));
|
|
||||||
|
-- Make sure that the init procedure is never "adainit"
|
||||||
|
|
||||||
|
Get_Name_String (For_Project.Library_Name);
|
||||||
|
|
||||||
|
if Name_Buffer (1 .. Name_Len) = "ada" then
|
||||||
|
Add_Argument ("-Lada_");
|
||||||
|
else
|
||||||
|
Add_Argument
|
||||||
|
("-L" & Get_Name_String (For_Project.Library_Name));
|
||||||
|
end if;
|
||||||
|
|
||||||
if For_Project.Lib_Auto_Init and then SALs_Use_Constructors then
|
if For_Project.Lib_Auto_Init and then SALs_Use_Constructors then
|
||||||
Add_Argument (Auto_Initialize);
|
Add_Argument (Auto_Initialize);
|
||||||
|
@ -950,16 +960,15 @@ package body MLib.Prj is
|
||||||
then
|
then
|
||||||
if Check_Project (Unit.File_Names (Impl).Project) then
|
if Check_Project (Unit.File_Names (Impl).Project) then
|
||||||
if Unit.File_Names (Spec) = null then
|
if Unit.File_Names (Spec) = null then
|
||||||
|
|
||||||
|
-- Add the ALI file only if it is not a subunit
|
||||||
|
|
||||||
declare
|
declare
|
||||||
Src_Ind : Source_File_Index;
|
Src_Ind : constant Source_File_Index :=
|
||||||
|
Sinput.P.Load_Project_File
|
||||||
|
(Get_Name_String
|
||||||
|
(Unit.File_Names (Impl).Path.Name));
|
||||||
begin
|
begin
|
||||||
Src_Ind := Sinput.P.Load_Project_File
|
|
||||||
(Get_Name_String
|
|
||||||
(Unit.File_Names (Impl).Path.Name));
|
|
||||||
|
|
||||||
-- Add the ALI file only if it is not a subunit
|
|
||||||
|
|
||||||
if not
|
if not
|
||||||
Sinput.P.Source_File_Is_Subunit (Src_Ind)
|
Sinput.P.Source_File_Is_Subunit (Src_Ind)
|
||||||
then
|
then
|
||||||
|
|
|
@ -7837,14 +7837,16 @@ package body Sem_Attr is
|
||||||
|
|
||||||
if Ekind_In (Btyp, E_Access_Subprogram_Type,
|
if Ekind_In (Btyp, E_Access_Subprogram_Type,
|
||||||
E_Anonymous_Access_Subprogram_Type,
|
E_Anonymous_Access_Subprogram_Type,
|
||||||
|
E_Access_Protected_Subprogram_Type,
|
||||||
E_Anonymous_Access_Protected_Subprogram_Type)
|
E_Anonymous_Access_Protected_Subprogram_Type)
|
||||||
then
|
then
|
||||||
-- Deal with convention mismatch
|
-- Deal with convention mismatch
|
||||||
|
|
||||||
if Convention (Btyp) /= Convention (Entity (P)) then
|
if Convention (Designated_Type (Btyp)) /=
|
||||||
|
Convention (Entity (P))
|
||||||
|
then
|
||||||
Error_Msg_FE
|
Error_Msg_FE
|
||||||
("subprogram & has wrong convention", P, Entity (P));
|
("subprogram & has wrong convention", P, Entity (P));
|
||||||
|
|
||||||
Error_Msg_FE
|
Error_Msg_FE
|
||||||
("\does not match convention of access type &",
|
("\does not match convention of access type &",
|
||||||
P, Btyp);
|
P, Btyp);
|
||||||
|
|
|
@ -2929,6 +2929,14 @@ package body Sem_Ch6 is
|
||||||
Write_Eol;
|
Write_Eol;
|
||||||
end if;
|
end if;
|
||||||
|
|
||||||
|
if Is_Protected_Type (Current_Scope) then
|
||||||
|
|
||||||
|
-- Indicate that this is a protected operation, because it may be
|
||||||
|
-- used in subsequent declarations within the protected type.
|
||||||
|
|
||||||
|
Set_Convention (Designator, Convention_Protected);
|
||||||
|
end if;
|
||||||
|
|
||||||
List_Inherited_Pre_Post_Aspects (Designator);
|
List_Inherited_Pre_Post_Aspects (Designator);
|
||||||
Analyze_Aspect_Specifications (N, Designator, Aspect_Specifications (N));
|
Analyze_Aspect_Specifications (N, Designator, Aspect_Specifications (N));
|
||||||
end Analyze_Subprogram_Declaration;
|
end Analyze_Subprogram_Declaration;
|
||||||
|
|
Loading…
Reference in New Issue