http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47748
Summary: Legal program rejected, ARM 12.7(3/2): instantiating a
generic package with "others => <>"
Product: gcc
Version: 4.5.1
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: ada
AssignedTo: [email protected]
ReportedBy: [email protected]
This bug was first reported on comp.lang.ada and confirmed:
package formalpkg is
generic
type T is private;
with procedure P (X : T) is <>;
package F is
end F;
generic
with package FA is new F (others => <>); -- line 17
package B is
end B;
procedure P1 (X : Character) is null;
package F1 is new F (Character, P1); -- use P => P1
package B1 is new B (F1); -- Error !!
procedure P (X : Character) is null;
package F2 is new F (Character); -- P => P
package B2 is new B (F2); -- OK
end formalpkg;
--------
% gnatmake formalpkg.ads
gcc -c formalpkg.ads
formalpkg.ads:17:25: actual for "P" in actual instance does not match formal
gnatmake: "formalpkg.ads" compilation error
On line 17, replacing "others => <>" with just "<>" makes the package compile
cleanly.