* Is this an error in compiler
@ 2022-09-11 7:19 reinert
2022-09-11 8:10 ` Simon Wright
0 siblings, 1 reply; 11+ messages in thread
From: reinert @ 2022-09-11 7:19 UTC (permalink / raw)
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 "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
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: Is this an error in compiler
2022-09-11 7:19 Is this an error in compiler reinert
@ 2022-09-11 8:10 ` Simon Wright
2022-09-11 10:52 ` reinert
` (2 more replies)
0 siblings, 3 replies; 11+ messages in thread
From: Simon Wright @ 2022-09-11 8:10 UTC (permalink / raw)
reinert <reinkor@gmail.com> writes:
(4 times!!!!)
> However, if I uncomment 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?
You have the conditions the wrong way round: if the 'a' line is
commented out and the 'b' lines are uncommented, the compilation
succeeds; the source as presented (and if compiled with -gnatX) fails in
the way you state.
And, yes, it's a compiler error.
I have to say these conditional constructs strike me as regrettable
Perl-isms, and reduce clarity:
return foo when blah;
raise baz when quux;
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: Is this an error in compiler
2022-09-11 8:10 ` Simon Wright
@ 2022-09-11 10:52 ` reinert
2022-09-11 12:30 ` Jeffrey R.Carter
2022-09-11 15:14 ` Oliver Kellogg
2 siblings, 0 replies; 11+ messages in thread
From: reinert @ 2022-09-11 10:52 UTC (permalink / raw)
søndag 11. september 2022 kl. 10:10:19 UTC+2 skrev Simon Wright:
> reinert <rei...@gmail.com> writes:
>
> (4 times!!!!)
>
4 times?
The google system must have been too quick to store/spread my message before me deleting.
It seems not to consider dysleksi :-)
reinert
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: Is this an error in compiler
2022-09-11 8:10 ` Simon Wright
2022-09-11 10:52 ` reinert
@ 2022-09-11 12:30 ` Jeffrey R.Carter
2022-09-11 12:59 ` Dmitry A. Kazakov
2022-09-11 14:44 ` Niklas Holsti
2022-09-11 15:14 ` Oliver Kellogg
2 siblings, 2 replies; 11+ messages in thread
From: Jeffrey R.Carter @ 2022-09-11 12:30 UTC (permalink / raw)
On 2022-09-11 10:10, Simon Wright wrote:
>
> I have to say these conditional constructs strike me as regrettable
> Perl-isms, and reduce clarity:
>
> return foo when blah;
> raise baz when quux;
I presume you never use
exit Name when Condition;
since it must reduce clarity as well.
I suggested these constructs for Ada 9X. They were rejected because you could
get the same functionality with an if statement, and the ARG had more important
things to spend their time on. I guess the ARG's workload must have decreased.
--
Jeff Carter
"Sheriff murdered, crops burned, stores looted,
people stampeded, and cattle raped."
Blazing Saddles
35
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: Is this an error in compiler
2022-09-11 12:30 ` Jeffrey R.Carter
@ 2022-09-11 12:59 ` Dmitry A. Kazakov
2022-09-11 14:44 ` Niklas Holsti
1 sibling, 0 replies; 11+ messages in thread
From: Dmitry A. Kazakov @ 2022-09-11 12:59 UTC (permalink / raw)
On 2022-09-11 14:30, Jeffrey R.Carter wrote:
> On 2022-09-11 10:10, Simon Wright wrote:
>>
>> I have to say these conditional constructs strike me as regrettable
>> Perl-isms, and reduce clarity:
>>
>> return foo when blah;
>> raise baz when quux;
>
> I presume you never use
>
> exit Name when Condition;
>
> since it must reduce clarity as well.
>
> I suggested these constructs for Ada 9X. They were rejected because you
> could get the same functionality with an if statement, and the ARG had
> more important things to spend their time on. I guess the ARG's workload
> must have decreased.
And the evaluation order of the return value vs the condition? E.g. in
return Boolean'Input (Stream) when Boolean'Input (Stream);
There is no issue with exit-when of course. Return and, even, raise (as
you can have an expressions there with Exception_Occurrence type) look
problematic.
I would expect the condition evaluated first, but that is kind of
"German" way of reading texts... 😂
--
Regards,
Dmitry A. Kazakov
http://www.dmitry-kazakov.de
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: Is this an error in compiler
2022-09-11 12:30 ` Jeffrey R.Carter
2022-09-11 12:59 ` Dmitry A. Kazakov
@ 2022-09-11 14:44 ` Niklas Holsti
2022-09-11 15:47 ` Jeffrey R.Carter
2022-09-12 7:05 ` Simon Wright
1 sibling, 2 replies; 11+ messages in thread
From: Niklas Holsti @ 2022-09-11 14:44 UTC (permalink / raw)
On 2022-09-11 15:30, Jeffrey R.Carter wrote:
> On 2022-09-11 10:10, Simon Wright wrote:
>>
>> I have to say these conditional constructs strike me as regrettable
>> Perl-isms, and reduce clarity:
>>
>> return foo when blah;
>> raise baz when quux;
>
> I presume you never use
>
> exit Name when Condition;
>
> since it must reduce clarity as well.
>
> I suggested these constructs for Ada 9X. They were rejected because you
> could get the same functionality with an if statement, and the ARG had
> more important things to spend their time on. I guess the ARG's workload
> must have decreased.
I don't find these "raise .. when" or "return .. when" constructs in the
Ada 2022 RM draft, so I don't think the ARG has adopted them (yet). I
suspect they are GNAT extensions, as is the ability to make a subtype of
String with a fixed lower index bound of 1 but an unconstrained upper
bound (1 .. <>), as also done in the OP's code.
I would not use these non-standard GNAT extensions, as long as GNAT is
not the only Ada compiler in the world, which it fortunately isn't.
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: Is this an error in compiler
2022-09-11 14:44 ` Niklas Holsti
@ 2022-09-11 15:47 ` Jeffrey R.Carter
2022-09-11 16:47 ` reinert
2022-09-12 7:05 ` Simon Wright
1 sibling, 1 reply; 11+ messages in thread
From: Jeffrey R.Carter @ 2022-09-11 15:47 UTC (permalink / raw)
On 2022-09-11 16:44, Niklas Holsti wrote:
>
> I don't find these "raise .. when" or "return .. when" constructs in the Ada
> 2022 RM draft, so I don't think the ARG has adopted them (yet). I suspect they
> are GNAT extensions, as is the ability to make a subtype of String with a fixed
> lower index bound of 1 but an unconstrained upper bound (1 .. <>), as also done
> in the OP's code.
Sorry, I didn't realize AdaCore was distributing GNAT for non-Ada.
> I would not use these non-standard GNAT extensions, as long as GNAT is not the
> only Ada compiler in the world, which it fortunately isn't.
I won't even use the Ada-2X features until it's supported by multiple compilers.
--
Jeff Carter
"Sheriff murdered, crops burned, stores looted,
people stampeded, and cattle raped."
Blazing Saddles
35
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: Is this an error in compiler
2022-09-11 14:44 ` Niklas Holsti
2022-09-11 15:47 ` Jeffrey R.Carter
@ 2022-09-12 7:05 ` Simon Wright
1 sibling, 0 replies; 11+ messages in thread
From: Simon Wright @ 2022-09-12 7:05 UTC (permalink / raw)
Niklas Holsti <niklas.holsti@tidorum.invalid> writes:
> I don't find these "raise .. when" or "return .. when" constructs in
> the Ada 2022 RM draft, so I don't think the ARG has adopted them
> (yet). I suspect they are GNAT extensions, as is the ability to make a
> subtype of String with a fixed lower index bound of 1 but an
> unconstrained upper bound (1 .. <>), as also done in the OP's code.
Indeed.
c0a.adb:7:37: error: fixed-lower-bound array is a GNAT specific extension
c0a.adb:7:37: error: unit must be compiled with -gnatX switch
c0a.adb:26:28: error: return when statement is a GNAT specific extension
c0a.adb:26:28: error: unit must be compiled with -gnatX switch
c0a.adb:27:59: error: raise when statement is a GNAT specific extension
c0a.adb:27:59: error: unit must be compiled with -gnatX switch
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: Is this an error in compiler
2022-09-11 8:10 ` Simon Wright
2022-09-11 10:52 ` reinert
2022-09-11 12:30 ` Jeffrey R.Carter
@ 2022-09-11 15:14 ` Oliver Kellogg
2 siblings, 0 replies; 11+ messages in thread
From: Oliver Kellogg @ 2022-09-11 15:14 UTC (permalink / raw)
On Sunday, September 11, 2022 at 10:10:19 AM UTC+2, Simon Wright wrote:
> reinert <rei...@gmail.com> writes:
> > [...]
> I have to say these conditional constructs strike me as regrettable
> Perl-isms, and reduce clarity:
>
> return foo when blah;
> raise baz when quux;
+1 on that.
On the other hand,
blah and return foo;
quux and raise baz;
would make more sense to me.
Not that I am proposing it, IMO Ada already has way too many extensions.
^ permalink raw reply [flat|nested] 11+ messages in thread
end of thread, other threads:[~2022-09-12 7:05 UTC | newest]
Thread overview: 11+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-09-11 7:19 Is this an error in compiler reinert
2022-09-11 8:10 ` Simon Wright
2022-09-11 10:52 ` reinert
2022-09-11 12:30 ` Jeffrey R.Carter
2022-09-11 12:59 ` Dmitry A. Kazakov
2022-09-11 14:44 ` Niklas Holsti
2022-09-11 15:47 ` Jeffrey R.Carter
2022-09-11 16:47 ` reinert
2022-09-11 17:18 ` Dmitry A. Kazakov
2022-09-12 7:05 ` Simon Wright
2022-09-11 15:14 ` Oliver Kellogg
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox