bug-gnu-emacs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

bug#56236: Package: emacs, ada-mode


From: Cameron Howie
Subject: bug#56236: Package: emacs, ada-mode
Date: Mon, 27 Jun 2022 16:26:09 +0000 (UTC)

Hi Lars, 

Following up on the emails of yesterday, I have pasted below into this message a concrete example Ada code that raises issues with the Ada Mode plug-in regarding using of a "declaration _expression_" inside a Postcondition. As commented in the code itself, if you remove the comment markers from the Postcondition the Ada Mode parser indicates all sorts of errors when in fact the Postcondition is legal Ada 2022.

I didn't want to send to the "56236@debbugs.gnu.org address as you may have some better way of handling this internally...

-------- EXAMPLE FILE main.adb STARTS HERE

--  Build with e.g., "gnatmake main.adb -gnat2020"
--  EMACS ADA MODE ISSUE: remove the 'commented out' Postcondition for 
--                        Absolute_Difference and the Ada Mode parser signals 
--                        all sorts of errors.

with Ada.Text_IO; use Ada.Text_IO;

procedure Main
is
   procedure Absolute_Difference
     (x, y : Integer;
      diff : out Integer)
      --  with Post => (declare
      --     min : constant Integer := Integer'Min(x, y);
      --     max : constant Integer := Integer'Max(x, y);
      --     begin diff = max - min)
   is
   begin
      diff := abs x - y;
   end Absolute_Difference;

   u : constant Integer := 95;
   v : constant Integer := 5;
   d : Integer;
begin
   Absolute_Difference (u, v, diff => d);
   Put_Line ("Absolute difference =" & d'Img);  --  prints "90"
end Main;

-------- END OF EXAMPLE FILE main.adb




On Sunday, June 26, 2022, 06:09:57 PM GMT+2, Lars Ingebrigtsen <larsi@gnus.org> wrote:


(Resending with the debbugs address in the CC header so that it lands in
the bug tracker.)

Cameron Howie <howiect@yahoo.com> writes:

> No immediately, Lars, no. However, I can send one through tomorrow. Off the top of
> my head, the issue arises when I use a declare _expression_ in a Post condition, so
> something like this:
>
> procedure Foo
>    (x, y : Integer;
>      arr : in out Integer_Array)
> with Post => (declare sum : constant Integer := Sum_Elements (arr); begin sum >= x
> + y);
>
> I've not yet used the declare _expression_ syntax in a subprogram body, just (so far) in
> contract specifications.
>
> On Sunday, June 26, 2022, 05:54:21 PM GMT+2, Lars Ingebrigtsen <larsi@gnus.org>
> wrote:
>
> Cameron Howie via "Bug reports for GNU Emacs, the Swiss army knife of
>
> text editors" <bug-gnu-emacs@gnu.org> writes:
>
>> I'm using Ada Mode version 7.2.0. The internal parser is currently
>> failing to handle Ada 2022 "declare _expression_" syntax. This leads to
>> other problems like various parsing-sensitive commands failing. My
>> only (current) solution is to use older Ada syntax.
>
> Do you have a code snippet that demonstrates these problems?

reply via email to

[Prev in Thread] Current Thread [Next in Thread]