comp.lang.ada
 help / color / mirror / Atom feed
From: Blady <p.p11@orange.fr>
Subject: Aggregate with derived types.
Date: Thu, 14 Sep 2023 16:02:39 +0200	[thread overview]
Message-ID: <udv3q0$2l5b9$1@dont-email.me> (raw)

Hello,

I want to extend a container type like Vectors, I've written:
   type My_Float_List2 is new My_Float_Lists.Vector with null record;

But the initialization gives an error line 6:

      1. with Ada.Containers.Vectors;
      2. with Ada.Text_IO;
      3. procedure test_20230914_derived_agg is
      4.    package My_Float_Lists is new Ada.Containers.Vectors 
(Positive, Float);
      5.    subtype My_Float_List1 is My_Float_Lists.Vector;
      6.    type My_Float_List2 is new My_Float_Lists.Vector with null 
record;
      7.    ML1 : My_Float_List1 := [-3.1, -6.7, 3.3, -3.14, 0.0];
      8.    ML2 : My_Float_List2 := ([-3.1, -6.7, 3.3, -3.14, 0.0] with 
null record);
                                     |
         >>> error: no unique type for this aggregate
      9. begin
     10.    Ada.Text_IO.Put_Line (ML1.Element (3)'Image);
     11.    Ada.Text_IO.Put_Line (ML2.Element (3)'Image);
     12. end test_20230914_derived_agg;

The RM says:
4.3.2 Extension Aggregates
1   [An extension_aggregate specifies a value for a type that is a record
extension by specifying a value or subtype for an ancestor of the type,
followed by associations for any components not determined by the
ancestor_part.]
                          Language Design Principles
1.a         The model underlying this syntax is that a record extension can
             also be viewed as a regular record type with an ancestor 
"prefix".
             The record_component_association_list corresponds to 
exactly what
             would be needed if there were no ancestor/prefix type. The
             ancestor_part determines the value of the ancestor/prefix.
                                    Syntax
2       extension_aggregate ::=
             (ancestor_part with record_component_association_list)
3       ancestor_part ::= expression | subtype_mark

It is not so clear for me what could a unique type?
Any clue?

Thanks Pascal.


             reply	other threads:[~2023-09-14 14:02 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-09-14 14:02 Blady [this message]
2023-09-14 15:31 ` Aggregate with derived types Jeffrey R.Carter
2023-09-14 20:00   ` Blady
2023-09-14 21:37     ` Jeffrey R.Carter
2023-09-15  7:27       ` Blady
2023-09-16  6:39     ` Randy Brukardt
replies disabled

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