comp.lang.ada
 help / color / mirror / Atom feed
From: "Jeffrey R.Carter" <spam.jrcarter.not@spam.acm.org.not>
Subject: Re: error: choice must be static?
Date: Sun, 11 Feb 2024 21:56:17 +0100	[thread overview]
Message-ID: <uqbc9h$12olv$1@dont-email.me> (raw)
In-Reply-To: <uqaek7$vd8o$1@dont-email.me>

On 2024-02-11 13:29, Blady wrote:
> Hello,
> 
> I've got the following GNAT error:
> 
> $ gcc -c -gnat2022 -gnatl 2024/test_20240211_static_choice.adb
> GNAT 13.2.0
>       1. procedure test_20240211_static_choice is
>       2.
>       3.    package Maps is
>       4.       type Map_Type is private
>       5.         with Aggregate =>  (Empty     => Empty_Map,
>       6.                             Add_Named => Add_To_Map);
>       7.       procedure Add_To_Map (M : in out Map_Type; Key : in Integer; 
> Value : in String);
>       8.       Empty_Map : constant Map_Type;
>       9.    private
>      10.       type Map_Type is array (1..10) of String (1..10);
>      11.       procedure Add_To_Map (M : in out Map_Type; Key : in Integer; 
> Value : in String) is null;
>      12.       Empty_Map : constant Map_Type := [1..10 => "          "]; -- 
> error: choice must be static
>                                                   |
>          >>> error: choice must be static
> 
>      13.    end;
>      14.
>      15. begin
>      16.    null;
>      17. end;
> 
> I wonder what more static it should be.

I don't know what this means, but it's definitely related to the Aggregate 
aspect. This compiles:

procedure Test_20240211_Static_Choice is
    package Maps is
       type Map_Type is private
          with Aggregate =>  (Empty     => Empty_Map,
                              Add_Named => Add_To_Map);
       procedure Add_To_Map (M : in out Map_Type; Key : in Integer; Value : in 
String);
       Empty_Map : constant Map_Type;
    private
       type Map_Base is array (1 .. 10) of String (1 .. 10);
       type Map_Type is new Map_Base;
       procedure Add_To_Map (M : in out Map_Type; Key : in Integer; Value : in 
String) is null;
       Empty_Base : constant Map_Base := (1 .. 10 => (1 .. 10 => ' ') );
       Empty_Map  : constant Map_Type := Map_Type (Empty_Base);
    end Maps;
begin
    null;
end Test_20240211_Static_Choice;

-- 
Jeff Carter
"Nobody expects the Spanish Inquisition!"
Monty Python's Flying Circus
22

  reply	other threads:[~2024-02-11 20:56 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-02-11 12:29 error: choice must be static? Blady
2024-02-11 20:56 ` Jeffrey R.Carter [this message]
2024-02-12  8:12   ` Dmitry A. Kazakov
2024-02-13  2:12 ` Randy Brukardt
2024-02-13 11:45   ` Simon Wright
2024-02-14  4:28     ` Randy Brukardt
2024-02-17  8:51       ` Blady
replies disabled

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