package pak1 is
   type T1(<>) is tagged limited private;
private
   type T1(D: integer) is tagged limited null record;
end pak1;

package pak1.pak3 is
   type T3 is new pak1.T1 with null record;   -- legal, but rejected
   x2: T3 := (pak1.T1 with null record);      -- legal, but rejected
end pak1.pak3;

RM 3.7(26) states: "A type declared without a discriminant part has no
discriminants, unless it is a derived type; if derived, such a type has the
same sort of discriminants (known, unknown, or none) as its parent (or
ancestor) type."  Therefore, the declaration of T3 is legal and T3 has unknown
discriminants.


-- 
           Summary: Legal program rejected, RM 3.7(26)
           Product: gcc
           Version: 4.1.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: ada
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: ludovic at ludovic-brenta dot org


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=34508

Reply via email to