* Compiler error (2) ?
@ 2022-09-26 6:54 reinert
2022-09-26 8:12 ` Simon Wright
2022-09-26 8:34 ` J-P. Rosen
0 siblings, 2 replies; 5+ messages in thread
From: reinert @ 2022-09-26 6:54 UTC (permalink / raw)
Hello,
This must reveal a compiler error :
-------------------------------------------------------------------------------------------------------
with Ada.Text_IO;
with Ada.Containers.Vectors;
procedure test1a is
type s_name_type is (s0, s1, s2, s3, s4, s5, s6, s7, s8, s9);
for s_name_type use
(S0 => 0, S1 => 1, S2 => 2, S3 => 3, S4 => 4,
S5 => 5, S6 => 6, S7 => 7, S8 => 8, S9 => 9);
package s_names_p is new Ada.Containers.Vectors
(Index_Type => Positive, Element_Type => s_name_type);
k : integer := 7;
-- n : constant integer := 7; -- uncomment this line and comment out the line below.
n : constant integer := k;
s_names: constant s_names_p.Vector := [for i in 3..n => S0];
begin
Ada.Text_IO.Put_Line(s_names'Image);
end test1a;
-------------------------------------------------------------------------------------------------------
(compiled using alire and
package Compiler is
for Switches ("ada") use ("-gnatwa", "-gnata", "-gnatX", "-gnatwv");
end Compiler;
-------------------------------------------------------------------------------------------------------
Right?
reinert
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: Compiler error (2) ?
2022-09-26 6:54 Compiler error (2) ? reinert
@ 2022-09-26 8:12 ` Simon Wright
2022-09-26 8:34 ` J-P. Rosen
1 sibling, 0 replies; 5+ messages in thread
From: Simon Wright @ 2022-09-26 8:12 UTC (permalink / raw)
I'm not sure what compiler error you mean.
Agreed that the code as stands reports a strange issue,
11. S_Names: constant S_Names_P.Vector := [for I in 3..N => S0];
|
>>> error: expected type "Standard.Integer"
>>> error: found type "Ada.Containers.Count_Type"
which does look like a compiler error (even if it's only misreporting a
valid issue, I'm not sure).
What's more interesting is what happens if you make your suggested
change and it compiles. When you run it,
$ ./reinert_2
raised CONSTRAINT_ERROR : test1a.s_names_p.Replace_Element: Index is
out of range
Running this under the debugger, with 'catch exception',
Catchpoint 1, CONSTRAINT_ERROR (test1a.s_names_p.Replace_Element: Index is out of range) at 0x0000000100008ae5 in test1a () at reinert_2.adb:15
15 s_names: constant s_names_p.Vector := [for i in 3..n => S0];
So, what's Index?
(gdb) p index
No definition of "index" in current context.
Looing at the backtrace,
(gdb) bt
[...]
#4 0x0000000100011711 in test1a.s_names_p.replace_element (container=...,
index=6, new_item=s0)
at /opt/gcc-12.1.0/lib/gcc/x86_64-apple-darwin15/12.1.0/adainclude/a-convec.adb:2522
#5 0x0000000100008ae5 in test1a () at reinert_2.adb:15
Frame 4 is in the runtime; maybe we can see what's going on,
(gdb) fr 4
#4 0x0000000100011711 in test1a.s_names_p.replace_element (container=...,
index=6, new_item=s0)
at /opt/gcc-12.1.0/lib/gcc/x86_64-apple-darwin15/12.1.0/adainclude/a-convec.adb:2522
2522 raise Constraint_Error with "Index is out of range";
(gdb) p index
$1 = 6
Hmm. What does the source say?
(gdb) l
2517 is
2518 begin
2519 TE_Check (Container.TC);
2520
2521 if Checks and then Index > Container.Last then
2522 raise Constraint_Error with "Index is out of range";
2523 end if;
2524
2525 Container.Elements.EA (Index) := New_Item;
2526 end Replace_Element;
So Index (6) is more than Container.Last:
(gdb) p container
$2 = (elements => 0x600000008000, last => 5, tc => (busy => 0, lock => 0))
(gdb)
6 is certainly more than 5. Where does 5 come from?
Index is Positive. We were hoping to have our container with indices
supporting values up to 7, but the first index of a container has to be
Index_Type'First i.e. 1; the compiler has looked at the length of the
aggregate (5) and created an empty Vector s_names of that length.
Clearly you can't do slices in this context!
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: Compiler error (2) ?
2022-09-26 6:54 Compiler error (2) ? reinert
2022-09-26 8:12 ` Simon Wright
@ 2022-09-26 8:34 ` J-P. Rosen
2022-09-26 8:47 ` reinert
1 sibling, 1 reply; 5+ messages in thread
From: J-P. Rosen @ 2022-09-26 8:34 UTC (permalink / raw)
Please give the exact error message, and why you think it could be a
compiler error. Otherwise, it's hard to help...
Le 26/09/2022 à 08:54, reinert a écrit :
> Hello,
>
> This must reveal a compiler error :
> -------------------------------------------------------------------------------------------------------
> with Ada.Text_IO;
> with Ada.Containers.Vectors;
> procedure test1a is
> type s_name_type is (s0, s1, s2, s3, s4, s5, s6, s7, s8, s9);
> for s_name_type use
> (S0 => 0, S1 => 1, S2 => 2, S3 => 3, S4 => 4,
> S5 => 5, S6 => 6, S7 => 7, S8 => 8, S9 => 9);
> package s_names_p is new Ada.Containers.Vectors
> (Index_Type => Positive, Element_Type => s_name_type);
> k : integer := 7;
>
> -- n : constant integer := 7; -- uncomment this line and comment out the line below.
> n : constant integer := k;
>
> s_names: constant s_names_p.Vector := [for i in 3..n => S0];
> begin
> Ada.Text_IO.Put_Line(s_names'Image);
> end test1a;
> -------------------------------------------------------------------------------------------------------
> (compiled using alire and
> package Compiler is
> for Switches ("ada") use ("-gnatwa", "-gnata", "-gnatX", "-gnatwv");
> end Compiler;
> -------------------------------------------------------------------------------------------------------
>
> Right?
>
> reinert
--
J-P. Rosen
Adalog
2 rue du Docteur Lombard, 92441 Issy-les-Moulineaux CEDEX
Tel: +33 1 45 29 21 52
https://www.adalog.fr
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: Compiler error (2) ?
2022-09-26 8:34 ` J-P. Rosen
@ 2022-09-26 8:47 ` reinert
2022-09-26 9:59 ` reinert
0 siblings, 1 reply; 5+ messages in thread
From: reinert @ 2022-09-26 8:47 UTC (permalink / raw)
This is what I (also) get:
test1a.adb:16:42: error: expected type "Standard.Integer"
test1a.adb:16:42: error: found type "Ada.Containers.Count_Type"
compilation of test1a.adb failed
gprbuild: *** compilation phase failed
error: Command ["gprbuild", "-s", "-j0", "-p", "-P", "/home/reinert/test1a/test1a.gpr"] exited with code 4
error: Compilation failed.
---------------------------------------------------------------------------------------------------
**However, the following version goes through the compiler and runs
(using "subtype n_t is Positive range 3..Positive'Last;" for)
in the package specification) - confirming what Simon says:
with Ada.Text_IO;
with Ada.Containers.Vectors;
procedure test1a is
type s_name_type is (s0, s1, s2, s3, s4, s5, s6, s7, s8, s9);
for s_name_type use
(S0 => 0, S1 => 1, S2 => 2, S3 => 3, S4 => 4,
S5 => 5, S6 => 6, S7 => 7, S8 => 8, S9 => 9);
subtype n_t is Positive range 3..Positive'Last;
package s_names_p is new Ada.Containers.Vectors
(Index_Type => n_t, Element_Type => s_name_type);
k : integer := 7;
n : constant integer := 7;
-- n : constant integer := k; -- uncomment this line and comment out the line above.
s_names: constant s_names_p.Vector := [for i in 3..n => S0];
begin
Ada.Text_IO.Put_Line(s_names'Image);
end test1a;
reinert
mandag 26. september 2022 kl. 10:34:18 UTC+2 skrev J-P. Rosen:
> Please give the exact error message, and why you think it could be a
> compiler error. Otherwise, it's hard to help...
> Le 26/09/2022 à 08:54, reinert a écrit :
> > Hello,
> >
> > This must reveal a compiler error :
> > -------------------------------------------------------------------------------------------------------
> > with Ada.Text_IO;
> > with Ada.Containers.Vectors;
> > procedure test1a is
> > type s_name_type is (s0, s1, s2, s3, s4, s5, s6, s7, s8, s9);
> > for s_name_type use
> > (S0 => 0, S1 => 1, S2 => 2, S3 => 3, S4 => 4,
> > S5 => 5, S6 => 6, S7 => 7, S8 => 8, S9 => 9);
> > package s_names_p is new Ada.Containers.Vectors
> > (Index_Type => Positive, Element_Type => s_name_type);
> > k : integer := 7;
> >
> > -- n : constant integer := 7; -- uncomment this line and comment out the line below.
> > n : constant integer := k;
> >
> > s_names: constant s_names_p.Vector := [for i in 3..n => S0];
> > begin
> > Ada.Text_IO.Put_Line(s_names'Image);
> > end test1a;
> > -------------------------------------------------------------------------------------------------------
> > (compiled using alire and
> > package Compiler is
> > for Switches ("ada") use ("-gnatwa", "-gnata", "-gnatX", "-gnatwv");
> > end Compiler;
> > -------------------------------------------------------------------------------------------------------
> >
> > Right?
> >
> > reinert
> --
> J-P. Rosen
> Adalog
> 2 rue du Docteur Lombard, 92441 Issy-les-Moulineaux CEDEX
> Tel: +33 1 45 29 21 52
> https://www.adalog.fr
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: Compiler error (2) ?
2022-09-26 8:47 ` reinert
@ 2022-09-26 9:59 ` reinert
0 siblings, 0 replies; 5+ messages in thread
From: reinert @ 2022-09-26 9:59 UTC (permalink / raw)
Sorry for some typos in my latest post, but the intelligent reader should understand :-)
reinert
mandag 26. september 2022 kl. 10:47:16 UTC+2 skrev reinert:
> This is what I (also) get:
>
> test1a.adb:16:42: error: expected type "Standard.Integer"
> test1a.adb:16:42: error: found type "Ada.Containers.Count_Type"
>
> compilation of test1a.adb failed
>
> gprbuild: *** compilation phase failed
> error: Command ["gprbuild", "-s", "-j0", "-p", "-P", "/home/reinert/test1a/test1a.gpr"] exited with code 4
> error: Compilation failed.
> ---------------------------------------------------------------------------------------------------
> **However, the following version goes through the compiler and runs
> (using "subtype n_t is Positive range 3..Positive'Last;" for)
> in the package specification) - confirming what Simon says:
>
> with Ada.Text_IO;
> with Ada.Containers.Vectors;
> procedure test1a is
> type s_name_type is (s0, s1, s2, s3, s4, s5, s6, s7, s8, s9);
> for s_name_type use
> (S0 => 0, S1 => 1, S2 => 2, S3 => 3, S4 => 4,
> S5 => 5, S6 => 6, S7 => 7, S8 => 8, S9 => 9);
> subtype n_t is Positive range 3..Positive'Last;
> package s_names_p is new Ada.Containers.Vectors
> (Index_Type => n_t, Element_Type => s_name_type);
> k : integer := 7;
> n : constant integer := 7;
> -- n : constant integer := k; -- uncomment this line and comment out the line above.
> s_names: constant s_names_p.Vector := [for i in 3..n => S0];
> begin
> Ada.Text_IO.Put_Line(s_names'Image);
> end test1a;
> reinert
> mandag 26. september 2022 kl. 10:34:18 UTC+2 skrev J-P. Rosen:
> > Please give the exact error message, and why you think it could be a
> > compiler error. Otherwise, it's hard to help...
> > Le 26/09/2022 à 08:54, reinert a écrit :
> > > Hello,
> > >
> > > This must reveal a compiler error :
> > > -------------------------------------------------------------------------------------------------------
> > > with Ada.Text_IO;
> > > with Ada.Containers.Vectors;
> > > procedure test1a is
> > > type s_name_type is (s0, s1, s2, s3, s4, s5, s6, s7, s8, s9);
> > > for s_name_type use
> > > (S0 => 0, S1 => 1, S2 => 2, S3 => 3, S4 => 4,
> > > S5 => 5, S6 => 6, S7 => 7, S8 => 8, S9 => 9);
> > > package s_names_p is new Ada.Containers.Vectors
> > > (Index_Type => Positive, Element_Type => s_name_type);
> > > k : integer := 7;
> > >
> > > -- n : constant integer := 7; -- uncomment this line and comment out the line below.
> > > n : constant integer := k;
> > >
> > > s_names: constant s_names_p.Vector := [for i in 3..n => S0];
> > > begin
> > > Ada.Text_IO.Put_Line(s_names'Image);
> > > end test1a;
> > > -------------------------------------------------------------------------------------------------------
> > > (compiled using alire and
> > > package Compiler is
> > > for Switches ("ada") use ("-gnatwa", "-gnata", "-gnatX", "-gnatwv");
> > > end Compiler;
> > > -------------------------------------------------------------------------------------------------------
> > >
> > > Right?
> > >
> > > reinert
> > --
> > J-P. Rosen
> > Adalog
> > 2 rue du Docteur Lombard, 92441 Issy-les-Moulineaux CEDEX
> > Tel: +33 1 45 29 21 52
> > https://www.adalog.fr
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2022-09-26 9:59 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-09-26 6:54 Compiler error (2) ? reinert
2022-09-26 8:12 ` Simon Wright
2022-09-26 8:34 ` J-P. Rosen
2022-09-26 8:47 ` reinert
2022-09-26 9:59 ` reinert
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox