Dot notation in Ada 2005



I am testing some features of the new Ada 2005 version. Here a simple problem that seems to me rather a gnat bug than a limitation of the norm. With the code:

------
package Objs is

type Point is tagged null record;

end Objs;

------
package Objs.ext_objs is

type New_Point is new Point With private;
function X (P : New_Point) return Integer;

private
type New_Point is new Point with record
X1, Y1 : Integer := 0;
end record;
end Objs.ext_objs;

------
package body Objs.Ext_Objs is

function X (P : New_Point) return Integer is
begin
return P.X1;
end X;

procedure Test ( A : Integer; Y : Integer) is
begin
null;
end Test;

procedure Draw (A : Integer; P : New_Point) is
begin
Test (A, P.X); -- PROBLEM HERE
end Draw;

end Objs.Ext_Objs;

i get a compilation error ("no selector X for private type P") when P.X is not the first argument of the function Test.

It seems to me a rather strange behavior.

Some explanation?

Philippe Tarroux

.



Relevant Pages