-- { dg-do run } | |
procedure Equal2 is | |
package L1 is | |
type T is private; | |
overriding function "=" (Left, Right : T) return Boolean; | |
private | |
type T is tagged record | |
I : Integer := 0; | |
end record; | |
end L1; | |
package L2 is | |
type T is private; | |
private | |
type T is new L1.T; | |
overriding function "=" (Left, Right : T) return Boolean; | |
end L2; | |
package body L1 is | |
overriding function "=" (Left, Right : T) return Boolean is | |
begin | |
return False; | |
end "="; | |
end L1; | |
package body L2 is | |
overriding function "=" (Left, Right : T) return Boolean is | |
begin | |
return True; | |
end "="; | |
end L2; | |
use type L2.T; | |
Left, Right : L2.T; | |
begin | |
if Left /= Right then | |
raise Program_Error; | |
end if; | |
end; |