Version 1.1 of ais/ai-00168.txt
!standard 04.06 (00) 96-11-16 AI95-00168/00
!class binding interpretation 96-11-16
!status received 96-11-16
!priority Medium
!difficulty Easy
!subject Aliased objects can have discriminants modified
!summary 96-11-16
!question 96-11-16
!recommendation 96-11-16
!wording 96-11-16
!discussion 96-11-16
!appendix
!section 4.6(00)
!subject Aliased objects can have discriminants modified
!reference RM95-4.6
!reference RM95-6.4.1 (16,17)
!from Stephen Michell 96-10-12
!keywords constrained object aliased change of discriminat
!reference 96-5720.a Steve Michell 96-10-12>>
!discussion
Consider the following code fragment
procedure acc_cvt2 is
package P is
type T is private;
a: constant T;
b: constant T;
private
type T( X: integer := 0 ) is null record;
a: constant T := ( X => 1 );
b: constant T := ( X => 2 );
end P;
type A is array( 1 .. 10) of aliased P.T;
type B is array( 1 .. 10) of P.T;
X : A := (1..10 => P.a);
procedure Q( Y : in out B ) is
begin
Y(1) := P.B;
end Q;
begin
Q(B(X));
end ACC_CVT2;
Object X is constrained because it is an array of aliased records, even
though unaliased objects of such a type would be unconstrained. The call
Q(B(X)) is a view conversion by 4.6(5). The remaining rules in 4.6
do not appear to cover the case shown above, but it appears that a view
conversion between an unconstrained and constrained view of an object
should be illegal.
****************************************************************
Questions? Ask the ACAA Technical Agent