This patch fixes an incorrect syntax error. In particular, in an example
like the following:

    procedure Main is
    procedure Imported with Import;
    begin
       null;
    end;

where there is a subprogram declaration with an Import aspect
specification, and the declaration is indented the same as a following
"begin", the compiler was giving incorrect syntax errors:

    main.adb:2:31: ";" should be "is"
    main.adb:5:01: "end Imported;" expected
    main.adb:5:01: missing "begin" for procedure "Main" at line 1

The problem was that the mechanisms described under "Handling Semicolon
Used in Place of IS" in par.adb were not updated to handle Import
aspect.

Tested on x86_64-pc-linux-gnu, committed on trunk

2019-12-16  Bob Duff  <d...@adacore.com>

gcc/ada/

        * par.adb: Add Scopes function to do range checking on the scope
        stack.  Call Scopes all over the parser.  Add
        SIS_Aspect_Import_Seen flag.
        * par-ch6.adb (P_Subprogram): Initialize SIS_Aspect_Import_Seen
        to False at the start, and check it at the end.
        * par-ch13.adb (Get_Aspect_Specifications): Set
        SIS_Aspect_Import_Seen to True when appropriate.
        * par-ch10.adb, par-ch12.adb, par-ch2.adb, par-ch3.adb,
        par-ch5.adb, par-ch7.adb, par-ch9.adb, par-endh.adb,
        par-util.adb: Call Scopes.

Attachment: patch.diff.gz
Description: application/gzip

Reply via email to