-
Is this an error in compiler?
From
reinert@21:1/5 to
All on Sun Sep 11 00:16:18 2022
Hello,
I tried alire with the latest version of the compiler (I believe) and I got trouble
compiling this program (which I here have reduced just to communicate my point - i.e. the program has noe other meaning here):
--------------------------------------------------------------------------------------------
with Ada.Strings.Fixed; use Ada.Strings.Fixed;
with Ada.Exceptions;
with Ada.Text_IO; use Ada.Text_IO;
procedure c0a is
subtype String_1 is String (1 .. <>);
package cpros is
cfe0,cfe1,cfe2 : exception;
generic
with procedure execute_command1 (command1 : String);
procedure cpros0
(file1 : in Ada.Text_IO.File_Type; command0 : String := "");
end cpros;
package body cpros is
procedure cpros0 (file1 : in Ada.Text_IO.File_Type; command0 : String := "")
is
begin
declare
function rep1 (str0 : String_1) return String is
i : constant Natural := Index (str0, "$");
begin
return str0 when i = 0;
raise cfe2 with "(wrong use of '$')" when i = str0'Last; -- a
-- if i = str0'Last then -- b
-- raise cfe2 with "(wrong use of '$')"; -- b
-- end if; -- b
return "aaa";
end rep1;
str0 : constant String := rep1 (Get_Line (file1));
begin
null;
end;
end cpros0;
end cpros;
procedure execute_command1 (str : String) is
begin
null;
end execute_command1;
procedure cpros1 is new cpros.cpros0 (execute_command1 => execute_command1);
begin
null;
end c0a; -----------------------------------------------------------------------------------------------
This goes through when I compile it.
However, if I uncomment out the "a" line and comment out the "b" line (see code above), then I get the error message:
c0a.adb:45:04: error: instantiation error at line 27
c0a.adb:45:04: error: "cfe2" is not visible
c0a.adb:45:04: error: instantiation error at line 27
c0a.adb:45:04: error: non-visible declaration at line 10
Have you the same experience?
reinert
--- SoupGate-Win32 v1.05
* Origin: fsxNet Usenet Gateway (21:1/5)
-
From
reinert@21:1/5 to
All on Sun Sep 11 00:21:40 2022
Hello,
I tried alire with the latest version of the compiler (I believe) and I got trouble
compiling this program (which I here have reduced just to communicate my point - i.e. the program has noe other meaning here):
--------------------------------------------------------------------------------------------
with Ada.Strings.Fixed; use Ada.Strings.Fixed;
with Ada.Exceptions;
with Ada.Text_IO; use Ada.Text_IO;
procedure c0a is
subtype String_1 is String (1 .. <>);
package cpros is
cfe0,cfe1,cfe2 : exception;
generic
with procedure execute_command1 (command1 : String);
procedure cpros0
(file1 : in Ada.Text_IO.File_Type; command0 : String := "");
end cpros;
package body cpros is
procedure cpros0 (file1 : in Ada.Text_IO.File_Type; command0 : String := "")
is
begin
declare
function rep1 (str0 : String_1) return String is
i : constant Natural := Index (str0, "$");
begin
return str0 when i = 0;
-- raise cfe2 with "(wrong use of '$')" when i = str0'Last; -- a
if i = str0'Last then -- b
raise cfe2 with "(wrong use of '$')"; -- b
end if; -- b
return "aaa";
end rep1;
str0 : constant String := rep1 (Get_Line (file1));
begin
null;
end;
end cpros0;
end cpros;
procedure execute_command1 (str : String) is
begin
null;
end execute_command1;
procedure cpros1 is new cpros.cpros0 (execute_command1 => execute_command1);
begin
null;
end c0a; -----------------------------------------------------------------------------------------------
This goes through when I compile it.
However, if I uncomment out the "a" line and comment out the "b" line (see code above), then I get the error message:
c0a.adb:45:04: error: instantiation error at line 27
c0a.adb:45:04: error: "cfe2" is not visible
c0a.adb:45:04: error: instantiation error at line 27
c0a.adb:45:04: error: non-visible declaration at line 10
Have you the same experience?
reinert
--- SoupGate-Win32 v1.05
* Origin: fsxNet Usenet Gateway (21:1/5)
-
From
reinert@21:1/5 to
All on Sun Sep 11 00:27:20 2022
Hello,
I tried alire with the latest version of the compiler (I believe) and I got trouble
compiling this program (which I here have reduced just to communicate my
point - i.e. the program has no other meaning here): --------------------------------------------------------------------------------------------
with Ada.Strings.Fixed; use Ada.Strings.Fixed;
with Ada.Exceptions;
with Ada.Text_IO; use Ada.Text_IO;
procedure c0a is
subtype String_1 is String (1 .. <>);
package cpros is
cfe0,cfe1,cfe2 : exception;
generic
with procedure execute_command1 (command1 : String);
procedure cpros0
(file1 : in Ada.Text_IO.File_Type; command0 : String := "");
end cpros;
package body cpros is
procedure cpros0 (file1 : in Ada.Text_IO.File_Type; command0 : String := "")
is
begin
declare
function rep1 (str0 : String_1) return String is
i : constant Natural := Index (str0, "$");
begin
return str0 when i = 0;
-- raise cfe2 with "(wrong use of '$')" when i = str0'Last; -- a
if i = str0'Last then -- b
raise cfe2 with "(wrong use of '$')"; -- b
end if; -- b
return "aaa";
end rep1;
str0 : constant String := rep1 (Get_Line (file1));
begin
null;
end;
end cpros0;
end cpros;
procedure execute_command1 (str : String) is
begin
null;
end execute_command1;
procedure cpros1 is new cpros.cpros0 (execute_command1 => execute_command1);
begin
null;
end c0a; -----------------------------------------------------------------------------------------------
This goes through when I compile it.
However, if I uncomment the "a" line and comment out the alternative "b" line (see code above), then I get the error message:
c0a.adb:45:04: error: instantiation error at line 27
c0a.adb:45:04: error: "cfe2" is not visible
c0a.adb:45:04: error: instantiation error at line 27
c0a.adb:45:04: error: non-visible declaration at line 10
Have you the same experience?
reinert
--- SoupGate-Win32 v1.05
* Origin: fsxNet Usenet Gateway (21:1/5)