Version 1.1 of ai05s/ai05-0282-1.txt

Unformatted version of ai05s/ai05-0282-1.txt version 1.1
Other versions for file ai05s/ai05-0282-1.txt

!standard 4.3.2(8)          11-11-08 AI12-0008-1/01
!class binding interpretation 11-11-08
!status work item 11-11-08
!status received 11-09-26
!priority Low
!difficulty Easy
!qualifier Omission
!subject Bad ancestor constraints for extension aggregates
!summary
** TBD.
!question
4.3.2(8) does not seem to apply if the ancestor is constrained.
Consider:
procedure Foo is type Root (D : natural) is tagged record F1 : String (1 .. D) := (others => 'x'); end record;
subtype S1 is Root (1); subtype S2 is Root (2);
type Ext is new S1 with record F2 : Integer; end record;
Var : Ext := (S2 with F2 => 123); begin null; end Foo;
One would hope that this would raise Constraint_Error, but nothing seems to have that effect.
!recommendation
** TBD.
!wording
** TBD.
!discussion
Perhaps a static matching rule would be better if the target type is constrained??
!ACATS Test
!ASIS
!appendix

From: Steve Baird
Sent: Monday, September 26, 2011  5:28 PM

The following example obviously should raise Constraint_Error
(assuming that it is not rejected at compile time - one could 
imagine adding some sort of "statically matching subtype"
legality rule, but that seems outside the scope of this discussion):
 
   procedure Foo is
      type Root (D : natural) is tagged record
         F1 : String (1 .. D) := (others => 'x');
      end record;
 
      subtype S1 is Root (1);
      subtype S2 is Root (2);
 
      type Ext is new S1 with record F2 : Integer; end record;
  
      Var : Ext := (S2 with F2 => 123);
   begin
      null;
   end Foo;
 
It seems that the present RM wording fails to capture this intent.
 
Note that 4.3.2(8) does not apply because it begins with
    "If the type of the ancestor_part has discriminants that are not
     inherited by the type of the extension_aggregate, ..."

Perhaps this condition needs to be expanded to include the case of 
inherited discriminants and a constrained ancestor subtype_mark.

****************************************************************

Questions? Ask the ACAA Technical Agent