diff options
author | Ed Schonberg <schonberg@adacore.com> | 2005-09-05 10:02:37 +0200 |
---|---|---|
committer | Arnaud Charlet <charlet@gcc.gnu.org> | 2005-09-05 10:02:37 +0200 |
commit | 725393ea9114df692c55610f1f8bafe5959395a9 (patch) | |
tree | 52bc6b9a192d1df318a2f76295d6286a807f0dc2 | |
parent | 41251c605ff07de711f91f42accdc1efec00debd (diff) | |
download | gcc-725393ea9114df692c55610f1f8bafe5959395a9.zip gcc-725393ea9114df692c55610f1f8bafe5959395a9.tar.gz gcc-725393ea9114df692c55610f1f8bafe5959395a9.tar.bz2 |
sem_ch8.adb (Analyze_Renamed_Entry): For a renaming_as_declaration...
2005-09-01 Ed Schonberg <schonberg@adacore.com>
* sem_ch8.adb (Analyze_Renamed_Entry): For a renaming_as_declaration,
verify that the procedure and the entry are mode conformant.
(Analyze_Subprogram_Renaming): Emit a warning if an operator is renamed
as a different operator, which is often a cut-and-paste error.
From-SVN: r103884
-rw-r--r-- | gcc/ada/sem_ch8.adb | 25 |
1 files changed, 22 insertions, 3 deletions
diff --git a/gcc/ada/sem_ch8.adb b/gcc/ada/sem_ch8.adb index f15bd74..bba2ece 100644 --- a/gcc/ada/sem_ch8.adb +++ b/gcc/ada/sem_ch8.adb @@ -1047,6 +1047,11 @@ package body Sem_Ch8 is Check_Subtype_Conformant (New_S, Old_S, N); Generate_Reference (New_S, Defining_Entity (N), 'b'); Style.Check_Identifier (Defining_Entity (N), New_S); + + else + -- Only mode conformance required for a renaming_as_declaration. + + Check_Mode_Conformant (New_S, Old_S, N); end if; Inherit_Renamed_Profile (New_S, Old_S); @@ -1735,6 +1740,19 @@ package body Sem_Ch8 is end; end if; + -- A useful warning, suggested by Ada Bug Finder (Ada-Europe 2005) + + if Comes_From_Source (N) + and then Present (Old_S) + and then Nkind (Old_S) = N_Defining_Operator_Symbol + and then Nkind (New_S) = N_Defining_Operator_Symbol + and then Chars (Old_S) /= Chars (New_S) + then + Error_Msg_NE + ("?& is being renamed as a different operator", + New_S, Old_S); + end if; + Ada_Version := Save_AV; Ada_Version_Explicit := Save_AV_Exp; end Analyze_Subprogram_Renaming; @@ -2067,9 +2085,10 @@ package body Sem_Ch8 is return; end if; - Find_Type (Subtype_Mark (Spec)); - Rewrite (Subtype_Mark (Spec), - New_Reference_To (Base_Type (Entity (Subtype_Mark (Spec))), Loc)); + Find_Type (Result_Definition (Spec)); + Rewrite (Result_Definition (Spec), + New_Reference_To ( + Base_Type (Entity (Result_Definition (Spec))), Loc)); Body_Node := Make_Subprogram_Body (Loc, |