diff options
author | Robert Dewar <dewar@adacore.com> | 2010-08-10 13:50:53 +0000 |
---|---|---|
committer | Arnaud Charlet <charlet@gcc.gnu.org> | 2010-08-10 15:50:53 +0200 |
commit | b5c739f9f5969b4803b40467822b0b64e0ecd35e (patch) | |
tree | 68d280c8a731b8532d94ecf7f4d3dbceace88a64 /gcc/ada/restrict.adb | |
parent | d606f1df142db414d00e0089acb76f4d29caf441 (diff) | |
download | gcc-b5c739f9f5969b4803b40467822b0b64e0ecd35e.zip gcc-b5c739f9f5969b4803b40467822b0b64e0ecd35e.tar.gz gcc-b5c739f9f5969b4803b40467822b0b64e0ecd35e.tar.bz2 |
a-chahan.ads: Add comments on handling of obsolescent entries.
2010-08-10 Robert Dewar <dewar@adacore.com>
* a-chahan.ads: Add comments on handling of obsolescent entries.
* opt.ads: Add Ada_2005 and Ada_2012 renamings for versions.
* restrict.adb (Check_Obsolescent_2005_Entity): New procedure.
* restrict.ads (Check_Obsolescent_2005_Entity): New procedure.
* sem_attr.adb (Analyze_Access_Attribute): Call
Check_Obsolescent_2005_Entity to check for access to obsolescent
Ada.Characters.Handling subprogram.
(Analyze_Attribute, case Class): Applying Class to untagged incomplete
type is obsolescent in Ada 2005.
(Analyze_Attribute, case Constrained): Better placement of flag when
flagged as obsolescent feature.
(Analyze_Attribute, case Storage_Size): Use with tasks is obsolescent
* sem_ch10.adb (Analyze_With_Clause): With of renamings such as Text_IO
is an obsolescent feature.
* sem_ch11.adb (Analyze_Raise_Statement): Numeric_Error is obsolescent
feature.
* sem_ch8.adb (Analyze_Subprogram_Renaming): Call
Check_Obsolescent_2005_Entity to check for renaming obsolete
Ada.Characters.Handling subprogram.
* sem_prag.adb (Process_Restrictions_Or_Restriction_Warnings): Check
for obsolescent restrictions in Ada 2005.
(Analyze_Pragma, case Suppress): Entity arg is obsolescent in Ada 2005
(Analyze_Pragma, case Interface): Interface is obsolescent in Ada 2005
* sem_res.adb (Resolve_Call): Call Check_Obsolescent_2005_Entity to
check for obsolescent references to Ada.Characters.Handling subprograms
2010-08-10 Robert Dewar <dewar@adacore.com>
* einfo.adb, einfo.ads: Fix bad -gnatdt output for incomplete type.
2010-08-10 Robert Dewar <dewar@adacore.com>
* errout.ads: Add VMS table entries for 2005, 12, 2012 switches
* par-ch4.adb: Change wording of Ada 2012 messages
* vms_data.ads: Add VMS entries for /2005, /12, /2012
From-SVN: r163063
Diffstat (limited to 'gcc/ada/restrict.adb')
-rw-r--r-- | gcc/ada/restrict.adb | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/gcc/ada/restrict.adb b/gcc/ada/restrict.adb index f7d97ba..2beae88 100644 --- a/gcc/ada/restrict.adb +++ b/gcc/ada/restrict.adb @@ -34,6 +34,7 @@ with Opt; use Opt; with Sinfo; use Sinfo; with Sinput; use Sinput; with Snames; use Snames; +with Stand; use Stand; with Uname; use Uname; package body Restrict is @@ -121,6 +122,46 @@ package body Restrict is Check_Restriction (No_Implicit_Heap_Allocations, N); end Check_No_Implicit_Heap_Alloc; + ----------------------------------- + -- Check_Obsolescent_2005_Entity -- + ----------------------------------- + + procedure Check_Obsolescent_2005_Entity (E : Entity_Id; N : Node_Id) is + function Chars_Is (E : Entity_Id; S : String) return Boolean; + -- Return True iff Chars (E) matches S (given in lower case) + + function Chars_Is (E : Entity_Id; S : String) return Boolean is + Nam : constant Name_Id := Chars (E); + begin + if Length_Of_Name (Nam) /= S'Length then + return False; + else + return Get_Name_String (Nam) = S; + end if; + end Chars_Is; + + -- Start of processing for Check_Obsolescent_2005_Entity + + begin + if Ada_Version >= Ada_2005 + and then Restriction_Active (No_Obsolescent_Features) + and then Chars_Is (Scope (E), "handling") + and then Chars_Is (Scope (Scope (E)), "characters") + and then Chars_Is (Scope (Scope (Scope (E))), "ada") + and then Scope (Scope (Scope (Scope (E)))) = Standard_Standard + then + if Chars_Is (E, "is_character") or else + Chars_Is (E, "is_string") or else + Chars_Is (E, "to_character") or else + Chars_Is (E, "to_string") or else + Chars_Is (E, "to_wide_character") or else + Chars_Is (E, "to_wide_string") + then + Check_Restriction (No_Obsolescent_Features, N); + end if; + end if; + end Check_Obsolescent_2005_Entity; + --------------------------- -- Check_Restricted_Unit -- --------------------------- |