aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEd Schonberg <schonberg@adacore.com>2005-09-05 10:02:37 +0200
committerArnaud Charlet <charlet@gcc.gnu.org>2005-09-05 10:02:37 +0200
commit725393ea9114df692c55610f1f8bafe5959395a9 (patch)
tree52bc6b9a192d1df318a2f76295d6286a807f0dc2
parent41251c605ff07de711f91f42accdc1efec00debd (diff)
downloadgcc-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.adb25
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,