Example code at the end. When I compile it, I get this error: [EMAIL PROTECTED] gcc -c unclear_override.ads unclear_override.ads:13:20: not subtype conformant with operation inherited at line 11 unclear_override.ads:13:20: type of "Item" does not match
The problem is that in real life, Interface_1, Abstract_1 and Abstract_2 were all in different packages, and I'd just added Interface_1 but was not aware that Proc was also declared in Abstract_1. Since the error message made no mention of Abstract_1, nor that Proc was inherited from two places, it was difficult to diagnose this problem -- clearly the type of Item *does* match (so I thought). Would it be possible to add a reference in the error to the specific declaration that causes the type error? I.e. the declaration of Proc for Abstract_1. package Unclear_Override is type Interface_1 is interface; procedure Proc (Item : access Interface_1) is abstract; type Abstract_1 is abstract tagged null record; procedure Proc (Item : not null access Abstract_1) is abstract; type Abstract_2 is abstract tagged null record; type Definite_1 is new Abstract_1 and Interface_1 with null record; procedure Proc (Item : access Definite_1); end Unclear_Override; -- Summary: Unclear type error message when inheriting from interface and tagged type Product: gcc Version: 4.3.2 Status: UNCONFIRMED Severity: minor Priority: P3 Component: ada AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: fraser at thewhitelion dot org GCC target triplet: x86_64-redhat-linux http://gcc.gnu.org/bugzilla/show_bug.cgi?id=38315