2019-08-12 Ed Schonberg <schonberg@adacore.com>
gcc/ada/
* sem_ch6.adb (heck_Untagged_Equality): Verify that user-defined
equality has the same profile as the predefined equality before
applying legality rule in RM 4.5.2 (9.8).
gcc/testsuite/
* gnat.dg/equal10.adb, gnat.dg/equal10.ads: New testcase.
From-SVN: r274297
+2019-08-12 Ed Schonberg <schonberg@adacore.com>
+
+ * sem_ch6.adb (heck_Untagged_Equality): Verify that user-defined
+ equality has the same profile as the predefined equality before
+ applying legality rule in RM 4.5.2 (9.8).
+
2019-08-12 Bob Duff <duff@adacore.com>
* libgnat/a-except.ads: Update obsolete comment, still making
begin
-- This check applies only if we have a subprogram declaration with an
- -- untagged record type.
+ -- untagged record type that is conformant to the predefined op.
if Nkind (Decl) /= N_Subprogram_Declaration
or else not Is_Record_Type (Typ)
or else Is_Tagged_Type (Typ)
+ or else Etype (Next_Formal (First_Formal (Eq_Op))) /= Typ
then
return;
end if;
+2019-08-12 Ed Schonberg <schonberg@adacore.com>
+
+ * gnat.dg/equal10.adb, gnat.dg/equal10.ads: New testcase.
+
2019-08-12 Gary Dismukes <dismukes@adacore.com>
* gnat.dg/suppress_initialization2.adb,
--- /dev/null
+-- { dg-do compile }
+
+package body Equal10 is
+ procedure Dummy is null;
+end Equal10;
--- /dev/null
+package Equal10 is
+ type R is record X : Integer; end record;
+ Rr : R;
+ function "=" (Y : R; Z : Integer) return Boolean is
+ (Y.X = Z);
+ procedure Dummy;
+end Equal10;