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
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
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