summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorcharlet <charlet@138bc75d-0d04-0410-961f-82ee72b054a4>2005-09-05 08:02:37 +0000
committercharlet <charlet@138bc75d-0d04-0410-961f-82ee72b054a4>2005-09-05 08:02:37 +0000
commit409a5de10ee7f575ad4f46ce115cd4a4ace10bdc (patch)
tree52bc6b9a192d1df318a2f76295d6286a807f0dc2
parentf2a8ab60b8245be58471a4dd8a0464110c00f008 (diff)
downloadppe42-gcc-409a5de10ee7f575ad4f46ce115cd4a4ace10bdc.tar.gz
ppe42-gcc-409a5de10ee7f575ad4f46ce115cd4a4ace10bdc.zip
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. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@103884 138bc75d-0d04-0410-961f-82ee72b054a4
-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 f15bd748aff..bba2ece8cc0 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,
OpenPOWER on IntegriCloud