aboutsummaryrefslogtreecommitdiff
path: root/gcc/ada/sinfo.adb
diff options
context:
space:
mode:
authorArnaud Charlet <charlet@gcc.gnu.org>2013-10-10 14:10:58 +0200
committerArnaud Charlet <charlet@gcc.gnu.org>2013-10-10 14:10:58 +0200
commite28072cdc85406f97fb06389639f5b9933101201 (patch)
tree33b0b66fb30d3aa482ca82a0cb0342e91e27b07b /gcc/ada/sinfo.adb
parent13b72c22f731e9be33af0331f244f3407dca12f8 (diff)
downloadgcc-e28072cdc85406f97fb06389639f5b9933101201.zip
gcc-e28072cdc85406f97fb06389639f5b9933101201.tar.gz
gcc-e28072cdc85406f97fb06389639f5b9933101201.tar.bz2
[multiple changes]
2013-10-10 Ed Schonberg <schonberg@adacore.com> * par-ch13.adb (Aspect_Specifications_Present)): In earlier than Ada2012 mode, assume that a legal aspect name following "with" keyword is an older gnat switch and not a misplaced with_clause. 2013-10-10 Hristian Kirtchev <kirtchev@adacore.com> * aspects.adb: Add an entry for Aspect_Refined_Pre in table Canonical_Aspect. (Aspects_On_Body_OK): Renamed to Aspects_On_Body_Or_Stub_OK. (Aspects_On_Body_Or_Stub_OK): Update the query in table Aspect_On_Body_OK. * aspects.ads: Add an entry for Aspect_Refined_Pre in tables Aspect_Id, Aspect_Argument, Aspect_Names, Aspect_Delay, Aspect_On_Body_Or_Stub_OK. Table Aspect_On_Body_OK is now known as Aspect_On_Body_Or_Stub_OK. Add a section of aspect specifications that apply to body stubs. (Aspects_On_Body_OK): Renamed to Aspects_On_Body_Or_Stub_OK. (Aspects_On_Body_Or_Stub_OK): Update the comment on usage. * par-prag.adb: Add pragma Refined_Pre to the list of pragmas that do not require special processing by the parser. * sem_ch6.adb (Analyze_Subprogram_Body_Helper): Delay the analysis of aspect specifications that apply to a body stub until the proper body is analyzed. * sem_ch10.adb: Add with and use clause for Sem_Ch13. (Analyze_Package_Body_Stub): Set the corresponding spec of the stub. (Analyze_Proper_Body): Relocate all pragmas that apply to a subprogram body stub to the declarations of the proper body. Analyze the aspect specifications of the stub when the proper body is not present. (Analyze_Protected_Body_Stub): Set the corresponding spec of the stub. (Analyze_Task_Body_Stub): Set the corresponding spec of the stub. (Move_Stub_Pragmas_To_Body): New routine. * sem_ch13.adb (Analyze_Aspect_Specifications): Add processing for aspect Refined_Pre. (Check_Aspect_At_Freeze_Point): Aspect Refined_Pre does not need delayed processing at the freeze point. * sem_prag.adb: Remove with and use clause for Snames. Add an entry for Pragma_Refined_Pre in table Sig_Flags. (Analyze_Pragma): Add processing for pragma Refined_Pre. * sem_prag.ads: Add with and use clause for Snames. Add table Pragma_On_Stub_OK. * sinfo.adb (Corresponding_Spec_Of_Stub): New routine. (Set_Corresponding_Spec_Of_Stub): New routine. * sinfo.ads: Add new attribute Corresponding_Spec_Of_Stub along with comment on usage and occurrences in nodes. (Corresponding_Spec_Of_Stub): New routine along with pragma Inline. (Set_Corresponding_Spec_Of_Stub): New routine along with pragma Inline. * snames.ads-tmpl: Add new predefined name for Refined_Pre. Add new Pragma_Id for Refined_Pre. 2013-10-10 Ed Schonberg <schonberg@adacore.com> * sem_ch12.adb (Analyze_Package_Instantiation, Analyze_Subprogram_Instantiation): Improve error message when name in instantiation does not designate a generic unit of the right kind. From-SVN: r203355
Diffstat (limited to 'gcc/ada/sinfo.adb')
-rw-r--r--gcc/ada/sinfo.adb22
1 files changed, 22 insertions, 0 deletions
diff --git a/gcc/ada/sinfo.adb b/gcc/ada/sinfo.adb
index 6cb18c1..4aae39d 100644
--- a/gcc/ada/sinfo.adb
+++ b/gcc/ada/sinfo.adb
@@ -691,6 +691,17 @@ package body Sinfo is
return Node5 (N);
end Corresponding_Spec;
+ function Corresponding_Spec_Of_Stub
+ (N : Node_Id) return Entity_Id is
+ begin
+ pragma Assert (False
+ or else NT (N).Nkind = N_Package_Body_Stub
+ or else NT (N).Nkind = N_Protected_Body_Stub
+ or else NT (N).Nkind = N_Subprogram_Body_Stub
+ or else NT (N).Nkind = N_Task_Body_Stub);
+ return Node2 (N);
+ end Corresponding_Spec_Of_Stub;
+
function Corresponding_Stub
(N : Node_Id) return Node_Id is
begin
@@ -3817,6 +3828,17 @@ package body Sinfo is
Set_Node5 (N, Val); -- semantic field, no parent set
end Set_Corresponding_Spec;
+ procedure Set_Corresponding_Spec_Of_Stub
+ (N : Node_Id; Val : Entity_Id) is
+ begin
+ pragma Assert (False
+ or else NT (N).Nkind = N_Package_Body_Stub
+ or else NT (N).Nkind = N_Protected_Body_Stub
+ or else NT (N).Nkind = N_Subprogram_Body_Stub
+ or else NT (N).Nkind = N_Task_Body_Stub);
+ Set_Node2 (N, Val); -- semantic field, no parent set
+ end Set_Corresponding_Spec_Of_Stub;
+
procedure Set_Corresponding_Stub
(N : Node_Id; Val : Node_Id) is
begin