Another case:
with C392014_2;
package body C392014_0 is
    function Create return T'Class is
    begin
        return C392014_2.Create ;
    end Create;
end C392014_0;
package C392014_0 is
    type T (D : natural) is abstract tagged null record;
    function Create return T'Class;
end C392014_0;
with C392014_0;
with C392014_1;
package C392014_2 is
    type T is new C392014_1.T with
        record
            C2 : natural;
        end record;
    function Create return T'Class;
end C392014_2;
with C392014_0;
package C392014_1 is
    type T is new C392014_0.T with
        record
            C1 : natural;
        end record;
end C392014_1;
Again see PR 22368 for the patch which I used to find this.

c392014_2.ads: In function 'C392014_0.Create':
c392014_2.ads:9: error: statement types mismatch
D.865 = D.866;

struct c392014_0__tD.395 *
struct c392014_2__tD.827 *

-- 
           Summary: Ada produces mis-match (non compatible) types in
                    MODIFY_EXPR
           Product: gcc
           Version: 4.1.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P2
         Component: ada
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: pinskia at gcc dot gnu dot org
                CC: bosch at gcc dot gnu dot org,gcc-bugs at gcc dot gnu dot
                    org


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=22419

Reply via email to