comp.lang.ada
 help / color / mirror / Atom feed
From: pa.dec.com!nntpd2.cxo.dec.com!bonmot!wallace@decwrl.dec.com  (Richard Wal
Subject: Re: Variant Record Defaults
Date: 22 Sep 92 21:58:34 GMT	[thread overview]
Message-ID: <1992Sep22.215834.11990@nntpd2.cxo.dec.com> (raw)

 wallace@bonmot (Richard Wallace) writes:
 : BERRYMAN@orca.drep.dnd.ca (DON BERRYMAN) writes:
 : : 
 : : Please concider the following code fragment:
 : : 
 : :      package dstring is
 : :          type text (maxlen: positive := 64) is private;
 : :          ---STUFF DELETED--
 : :      private
 : :          type text (maxlen: positive := 64) is
 : :      	record
 : :      	    last: natural := 0;
 : :      	    data: string (1..maxlen);
 : :      	end record;
 : :      end dstring;
 : : 
 : :      with dstring;
 : :      procedure useit is
 : :         type buffer is record
 : :              data: dstring.text;
 : :         end record;
 : :         aaa: buffer;
 : :         bbb: dstring.text;
 : :      begin
 : :         null;
 : :      end useit;
 : : 
 : : 
 : : When compiled on VAX/VMS Ada I get the following:
 : : 
 : :      S2$ ada useit
 : :          3      type buffer is record
 : :      ...........1
 : :      %ADAC-I-CONS_OR_NUM_ERR, (1) CONSTRAINT_ERROR or NUMERIC_ERROR will b
e raised
 : :              here [LRM 11.1(5-6), F.9.5]
 : :              during evaluation related to record type buffer at line 3
 : :      %ADAC-I-ENDDIAGS, Ada compilation completed with 1 diagnostic
 : :      S2$
 : : 
 : : What appears to be the problem is that BUFFER.DATA is not using the defaul
t
 : : for MAXLEN. When I specify it in the record definition the message goes
 : : away. Since I can create the variable, BBB, of type DSTRING.TEXT it does n
ot
 : : seem to be a problem with my definitions. So why does ADA not use the 
 : : default for BUFFER.DATA???  
 : : 
 : : I'm sure the reason is given in an obscure section of the LRM,
 : : 
 : : 
 : : Don Berryman
 : : Defence Research Establishment Pacific
 : : Canadian Forces Base Esquimalt
 : : Victoria, BC, CANADA, V0S-1B0
 : : 604-363-2731    604-363-2856fax
 : : berryman@orca.drep.dnd.ca
 : : 
 : : 

Let me try again!

What's going wrong here is the declaration of a record aggregate with
a record aggregate with a discrimanant part.  Very specifically in
LRM 4.3.1(1) it states:

	"If the type of an aggregate is a record type, the
	component names given as choices must denote components
	(including discrimants) fo the record type."

This the second declaration is an object of the record type and not
an aggregate of the record type as is the first one.

Hope this helps!

Richard Wallace
Digital Equipment Corporation
301 Rockrimmon Blvd. South
CXO2-1/7A
Colorado Springs, CO 80919-2398
(719)548-2792
<wallace@cookie.enet.dec.com>

	"The opinions expressed are my own, Unlce Ken or Uncle Bob
	 may, or may not, agree with me.

             reply	other threads:[~1992-09-22 21:58 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
1992-09-22 21:58 pa.dec.com!nntpd2.cxo.dec.com!bonmot!wallace [this message]
  -- strict thread matches above, loose matches on Subject: below --
1992-09-24 23:04 Variant Record Defaults deccrl!news.crl.dec.com!pa.dec.com!jrdzzz.jrd.dec.com!e2big.mko.dec.com!n
1992-09-23 20:13 cis.ohio-state.edu!zaphod.mps.ohio-state.edu!usc!rpi!psinntp!psinntp!vitr
1992-09-22 21:50 pa.dec.com!nntpd2.cxo.dec.com!bonmot!wallace
replies disabled

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox