With Ada.Text_IO ; Use Ada.Text_IO ;
With Ada.Integer_Text_IO ; Use Ada.Integer_Text_IO ;
procedure Program is
package MyClass1 is
type Class is tagged
record
i: integer;
end record ;
procedure Foo( self: in out Class) is
begin
Put_Line( "foo" ) ;
end ;
end ;
package MyClass2 is
type MyClass2 is new MyClass1 with null record ;
procedure Foo( self: in out MyClass2) is
begin
Put_Line( "foobar" ) ;
end ;
end ;
object_storage: MyClass2;
object: MyClass1'class := object_storage;
begin
object.Foo ;
end Program;
V2l0aCBBZGEuVGV4dF9JTzsgVXNlIEFkYS5UZXh0X0lPOyAgCldpdGggQWRhLkludGVnZXJfVGV4dF9JTzsgVXNlIEFkYS5JbnRlZ2VyX1RleHRfSU87Cgpwcm9jZWR1cmUgUHJvZ3JhbSBpcwoKICBwYWNrYWdlIE15Q2xhc3MxIGlzCgkgIHR5cGUgQ2xhc3MgaXMgdGFnZ2VkCgkgICAgcmVjb3JkCgkgICAgICBpOiBpbnRlZ2VyOwoJICAgIGVuZCByZWNvcmQ7CgkgIAoJICBwcm9jZWR1cmUgRm9vKHNlbGY6IGluIG91dCBDbGFzcykgaXMKCSAgYmVnaW4KCSAgICBQdXRfTGluZSgiZm9vIik7CgkgIGVuZDsKICBlbmQ7CiAgCiAgcGFja2FnZSBNeUNsYXNzMiBpcwoJICB0eXBlIE15Q2xhc3MyIGlzIG5ldyBNeUNsYXNzMSB3aXRoIG51bGwgcmVjb3JkOwoJICAKCSAgcHJvY2VkdXJlIEZvbyhzZWxmOiBpbiBvdXQgTXlDbGFzczIpIGlzCgkgIGJlZ2luCgkgICAgUHV0X0xpbmUoImZvb2JhciIpOwoJICBlbmQ7CiAgZW5kOwogIAogIG9iamVjdF9zdG9yYWdlOiBNeUNsYXNzMjsKICBvYmplY3Q6IE15Q2xhc3MxJ2NsYXNzIDo9IG9iamVjdF9zdG9yYWdlOwpiZWdpbgogIG9iamVjdC5Gb287CmVuZCBQcm9ncmFtOw==