I don't know the reason for the restriction, but could hazard a guess. What you are doing really is constraining a subtype. Therefore, to make sure you and all readers know what the constraints are, and don't mistakenly think that only a subset of the discriminants are fixed for the subtype, all discriminants must be given. Again, this is only a guess. However, it has been said by many, many people that Ada is a reader's language, not a writer's language. Roger On Fri, 2005-06-03 at 15:20, Chris Sparks wrote: > The problem is that I rarely use discriminants. It just seems silly to > me that given that there are initializers on the type definition below, > the compiler can deduce what the other value is for MR2 and MR3. Now if > I didn't have initializers then that be a whole different matter. > > C. > > Roger Racine wrote: > > >3.7.1(8) says "A discriminant_constraint shall provide exactly one value > >for each discriminant of the subtype being constrained." While one > >might think that one is constraining a discriminant, and thus only need > >to put in the subset of discriminants you want to constrain, the subtype > >is what is being constrained, and yours has 2 discriminants, both of > >which need values. That has been there since Ada 83. > > > >Roger Racine > > > >On Fri, 2005-06-03 at 12:24, Chris Sparks wrote: > > > > > >>Hello experts! > >> > >>I thought I understood discriminants, however, when I tried to assign to > >>MR2 and MR3 below, the compiler barked at me... > >> > >>---------------------------------------------------- > >> type My_Record (Item : Integer := 1; > >> Data : Integer := 2) is record > >> Stuff : Integer := Item * Data; > >> end record; > >> > >> MR1 : My_Record; > >>--MR2 : My_Record (Data => 3); > >>--MR3 : My_Record (Item => 3); > >> MR4 : My_Record (Item => 10, Data => 11); > >>---------------------------------------------------- > >> > >>Can someone enlighten me on this? > >> > >>Chris Sparks > >> > >> > > > > > > > >