------- Comment #5 from sam at gcc dot gnu dot org 2008-04-24 08:36 ------- Ahn Vo: Pak2.Eq is *the same* as Pak1.Eq, that's the whole point. Thus both consider only T1 aspects of the objects.
What you say would be true if the code had been: package Pak1 is type T1 is tagged null record; function Eq(X, Y: T1) return Boolean renames "="; end Pak1; package Pak2 is type T2 is new Pak1.T1 with record F1: Integer; end record; function Eq(X, Y: T2) return Boolean renames "="; -- This line added end Pak2; But there is no such line in the original example. In the original example, Pak2.Eq is *not* the "=" operator on T2, it is the "=" operator on T1 objects. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=32181