From 0bba838d7f4e9b851416d463d077b28aff0b561f Mon Sep 17 00:00:00 2001 From: Bob Duff Date: Mon, 16 Dec 2019 10:34:22 +0000 Subject: [Ada] Syntax error on improperly indented imported subprogram 2019-12-16 Bob Duff 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. From-SVN: r279428 --- gcc/ada/par-ch9.adb | 54 ++++++++++++++++++++++++++--------------------------- 1 file changed, 27 insertions(+), 27 deletions(-) (limited to 'gcc/ada/par-ch9.adb') diff --git a/gcc/ada/par-ch9.adb b/gcc/ada/par-ch9.adb index 825dac112ce..d6c6dfc45e5 100644 --- a/gcc/ada/par-ch9.adb +++ b/gcc/ada/par-ch9.adb @@ -91,16 +91,16 @@ package body Ch9 is begin Push_Scope_Stack; - Scope.Table (Scope.Last).Etyp := E_Name; - Scope.Table (Scope.Last).Ecol := Start_Column; - Scope.Table (Scope.Last).Sloc := Token_Ptr; - Scope.Table (Scope.Last).Lreq := False; + Scopes (Scope.Last).Etyp := E_Name; + Scopes (Scope.Last).Ecol := Start_Column; + Scopes (Scope.Last).Sloc := Token_Ptr; + Scopes (Scope.Last).Lreq := False; Task_Sloc := Prev_Token_Ptr; if Token = Tok_Body then Scan; -- past BODY Name_Node := P_Defining_Identifier (C_Is); - Scope.Table (Scope.Last).Labl := Name_Node; + Scopes (Scope.Last).Labl := Name_Node; Current_Node := Name_Node; if Token = Tok_Left_Paren then @@ -168,7 +168,7 @@ package body Ch9 is Task_Node := New_Node (N_Task_Type_Declaration, Task_Sloc); Name_Node := P_Defining_Identifier; Set_Defining_Identifier (Task_Node, Name_Node); - Scope.Table (Scope.Last).Labl := Name_Node; + Scopes (Scope.Last).Labl := Name_Node; Current_Node := Name_Node; Set_Discriminant_Specifications (Task_Node, P_Known_Discriminant_Part_Opt); @@ -177,7 +177,7 @@ package body Ch9 is Task_Node := New_Node (N_Single_Task_Declaration, Task_Sloc); Name_Node := P_Defining_Identifier (C_Is); Set_Defining_Identifier (Task_Node, Name_Node); - Scope.Table (Scope.Last).Labl := Name_Node; + Scopes (Scope.Last).Labl := Name_Node; Current_Node := Name_Node; if Token = Tok_Left_Paren then @@ -441,15 +441,15 @@ package body Ch9 is begin Push_Scope_Stack; - Scope.Table (Scope.Last).Etyp := E_Name; - Scope.Table (Scope.Last).Ecol := Start_Column; - Scope.Table (Scope.Last).Lreq := False; + Scopes (Scope.Last).Etyp := E_Name; + Scopes (Scope.Last).Ecol := Start_Column; + Scopes (Scope.Last).Lreq := False; Protected_Sloc := Prev_Token_Ptr; if Token = Tok_Body then Scan; -- past BODY Name_Node := P_Defining_Identifier (C_Is); - Scope.Table (Scope.Last).Labl := Name_Node; + Scopes (Scope.Last).Labl := Name_Node; Current_Node := Name_Node; if Token = Tok_Left_Paren then @@ -504,7 +504,7 @@ package body Ch9 is New_Node (N_Protected_Type_Declaration, Protected_Sloc); Name_Node := P_Defining_Identifier (C_Is); Set_Defining_Identifier (Protected_Node, Name_Node); - Scope.Table (Scope.Last).Labl := Name_Node; + Scopes (Scope.Last).Labl := Name_Node; Current_Node := Name_Node; Set_Discriminant_Specifications (Protected_Node, P_Known_Discriminant_Part_Opt); @@ -521,7 +521,7 @@ package body Ch9 is Discard_Junk_List (P_Known_Discriminant_Part_Opt); end if; - Scope.Table (Scope.Last).Labl := Name_Node; + Scopes (Scope.Last).Labl := Name_Node; Current_Node := Name_Node; end if; @@ -1074,12 +1074,12 @@ package body Ch9 is begin Push_Scope_Stack; - Scope.Table (Scope.Last).Sloc := Token_Ptr; - Scope.Table (Scope.Last).Ecol := Start_Column; + Scopes (Scope.Last).Sloc := Token_Ptr; + Scopes (Scope.Last).Ecol := Start_Column; Accept_Node := New_Node (N_Accept_Statement, Token_Ptr); Scan; -- past ACCEPT - Scope.Table (Scope.Last).Labl := Token_Node; + Scopes (Scope.Last).Labl := Token_Node; Current_Node := Token_Node; Set_Entry_Direct_Name (Accept_Node, P_Identifier (C_Do)); @@ -1123,8 +1123,8 @@ package body Ch9 is -- Scan out DO if present if Token = Tok_Do then - Scope.Table (Scope.Last).Etyp := E_Name; - Scope.Table (Scope.Last).Lreq := False; + Scopes (Scope.Last).Etyp := E_Name; + Scopes (Scope.Last).Lreq := False; Scan; -- past DO Hand_Seq := P_Handled_Sequence_Of_Statements; Set_Handled_Statement_Sequence (Accept_Node, Hand_Seq); @@ -1221,14 +1221,14 @@ package body Ch9 is Entry_Node := New_Node (N_Entry_Body, Token_Ptr); Scan; -- past ENTRY - Scope.Table (Scope.Last).Ecol := Start_Column; - Scope.Table (Scope.Last).Lreq := False; - Scope.Table (Scope.Last).Etyp := E_Name; - Scope.Table (Scope.Last).Sloc := Token_Ptr; + Scopes (Scope.Last).Ecol := Start_Column; + Scopes (Scope.Last).Lreq := False; + Scopes (Scope.Last).Etyp := E_Name; + Scopes (Scope.Last).Sloc := Token_Ptr; Name_Node := P_Defining_Identifier; Set_Defining_Identifier (Entry_Node, Name_Node); - Scope.Table (Scope.Last).Labl := Name_Node; + Scopes (Scope.Last).Labl := Name_Node; Current_Node := Name_Node; Formal_Part_Node := P_Entry_Body_Formal_Part; @@ -1521,10 +1521,10 @@ package body Ch9 is begin Push_Scope_Stack; - Scope.Table (Scope.Last).Etyp := E_Select; - Scope.Table (Scope.Last).Ecol := Start_Column; - Scope.Table (Scope.Last).Sloc := Token_Ptr; - Scope.Table (Scope.Last).Labl := Error; + Scopes (Scope.Last).Etyp := E_Select; + Scopes (Scope.Last).Ecol := Start_Column; + Scopes (Scope.Last).Sloc := Token_Ptr; + Scopes (Scope.Last).Labl := Error; Select_Sloc := Token_Ptr; Scan; -- past SELECT -- cgit v1.2.1