------- Additional Comments From ludovic dot brenta at insalien dot org
2005-08-03 05:14 -------
Yes, I was mistaken: RM 3.3(23) says: "A subtype is an indefinite subtype if it
is an unconstrained array subtype, or if it has unknown discriminants or
unconstrained discriminants without defaults, otherwise the subtype is a
definite subtype". Therefore, R is a definite subtype since it has known
discriminants. In contrast:
procedure Test_12_5_1 is
generic
type T is private;
package P is
end P;
package Q is
type R (<>) is private;
private
type R (B : Boolean := True) is record
case B is
when True => Component : Integer;
when False => null;
end case;
end record;
end Q;
package PP is new P (T => Q.R);
begin
null;
end Test_12_5_1;
Here, Q.R is indefinite and GNAT correcly diagnoses the problem:
test_12_5_1.adb:18:31: actual for "T" must be a definite subtype
gnatmake: "test_12_5_1.adb" compilation error
Marking this bug as INVALID (i.e. not a bug).
--
What |Removed |Added
----------------------------------------------------------------------------
Status|UNCONFIRMED |RESOLVED
Resolution| |INVALID
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23208