With Ada.Text_IO ; Use Ada.Text_IO ;
With Ada.Integer_Text_IO ; Use Ada.Integer_Text_IO ;
procedure Program is
type MyClass1 is tagged
record
i: integer;
end record ;
procedure Foo( self: in out MyClass1) is
begin
Put_Line( "foo" ) ;
end ;
type MyClass2 is new MyClass1 with null record ;
procedure Foo( self: in out MyClass2) is
begin
Put_Line( "foobar" ) ;
end ;
object_storage: MyClass2;
object: MyClass1'class := object_storage;
begin
object.Foo ;
end Program;
V2l0aCBBZGEuVGV4dF9JTzsgVXNlIEFkYS5UZXh0X0lPOyAgCldpdGggQWRhLkludGVnZXJfVGV4dF9JTzsgVXNlIEFkYS5JbnRlZ2VyX1RleHRfSU87Cgpwcm9jZWR1cmUgUHJvZ3JhbSBpcwoKICB0eXBlIE15Q2xhc3MxIGlzIHRhZ2dlZAogICAgcmVjb3JkCiAgICAgIGk6IGludGVnZXI7CiAgICBlbmQgcmVjb3JkOwogIAogIHByb2NlZHVyZSBGb28oc2VsZjogaW4gb3V0IE15Q2xhc3MxKSBpcwogIGJlZ2luCiAgICBQdXRfTGluZSgiZm9vIik7CiAgZW5kOwoKICB0eXBlIE15Q2xhc3MyIGlzIG5ldyBNeUNsYXNzMSB3aXRoIG51bGwgcmVjb3JkOwogIAogIHByb2NlZHVyZSBGb28oc2VsZjogaW4gb3V0IE15Q2xhc3MyKSBpcwogIGJlZ2luCiAgICBQdXRfTGluZSgiZm9vYmFyIik7CiAgZW5kOwogIAogIG9iamVjdF9zdG9yYWdlOiBNeUNsYXNzMjsKICBvYmplY3Q6IE15Q2xhc3MxJ2NsYXNzIDo9IG9iamVjdF9zdG9yYWdlOwpiZWdpbgogIG9iamVjdC5Gb287CmVuZCBQcm9ncmFtOw==
compilation info
gcc-5 -c -pipe -O2 test.adb
test.adb:4:11: warning: file name does not match unit name, should be "program.adb"
test.adb:26:09: no selector "Foo" for type "MyClass1'Class" defined at line 6
gnatmake: "test.adb" compilation error
stdout