+2008-04-13 Samuel Tardieu <sam@rfc1149.net>
+
+ PR ada/17985
+ * sem_aggr.adb (Valid_Ancestor_Type): A type is not an ancestor of
+ itself.
+
2008-04-13 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
* sfn_scan.adb, sfn_scan.ads, sinfo.ads,
Imm_Type := Etype (Base_Type (Imm_Type));
end loop;
- if Etype (Imm_Type) /= Base_Type (A_Type) then
+ if Etype (Imm_Type) /= Base_Type (A_Type)
+ or else Base_Type (Typ) = Base_Type (A_Type)
+ then
Error_Msg_NE ("expect ancestor type of &", A, Typ);
return False;
else
+2008-04-13 Samuel Tardieu <sam@rfc1149.net>
+
+ PR ada/17985
+ * gnat.dg/ancestor_type.ads, gnat.dg/ancestor_type.adb: New test.
+
2008-04-12 Andrew Pinski <pinskia@gmail.com>
* gcc.target/powerpc/darwin-save-world-1.c: New test.
--- /dev/null
+-- { dg-do compile }
+
+package body Ancestor_Type is
+
+ package body B is
+ function make return T is
+ begin
+ return (T with n => 0); -- { dg-error "expect ancestor" }
+ end make;
+
+ end B;
+
+end Ancestor_Type;
--- /dev/null
+package Ancestor_Type is
+
+ type T is tagged private;
+
+ package B is
+ function make return T;
+ end B;
+
+private
+ type T is tagged record
+ n: Natural;
+ end record;
+end Ancestor_Type;