aboutsummaryrefslogtreecommitdiff
path: root/gcc/ada/par-ch2.adb
diff options
context:
space:
mode:
authorArnaud Charlet <charlet@gcc.gnu.org>2009-04-08 16:49:44 +0200
committerArnaud Charlet <charlet@gcc.gnu.org>2009-04-08 16:49:44 +0200
commitef7c5692f12132cb8672a61c67070deef4fd600e (patch)
treeb8ec63645bea28745bba045ef8d3e362144b65d6 /gcc/ada/par-ch2.adb
parent4da17013c086241754907c0560c4c84427aec3ac (diff)
downloadgcc-ef7c5692f12132cb8672a61c67070deef4fd600e.zip
gcc-ef7c5692f12132cb8672a61c67070deef4fd600e.tar.gz
gcc-ef7c5692f12132cb8672a61c67070deef4fd600e.tar.bz2
[multiple changes]
2009-04-08 Thomas Quinot <quinot@adacore.com> * exp_util.adb: Minor comment fix 2009-04-08 Robert Dewar <dewar@adacore.com> * g-socket.ads: Fix bad syntax in pragma Obsolescent * par-ch2.adb (Scan_Pragma_Argument_Association): Check for error of argument with no identifier following one that has an identifier. Was missed in some cases. * sem_prag.adb (Analyze_Pragma, case Check_Policy): Allow Policy identifier. (Analyze_Pragma, case Obsolescent): Allow Message, Version identifiers * snames.adb: Add Name_Policy * snames.ads: Add Name_Policy From-SVN: r145744
Diffstat (limited to 'gcc/ada/par-ch2.adb')
-rw-r--r--gcc/ada/par-ch2.adb20
1 files changed, 15 insertions, 5 deletions
diff --git a/gcc/ada/par-ch2.adb b/gcc/ada/par-ch2.adb
index 5a382a1..5e174ee 100644
--- a/gcc/ada/par-ch2.adb
+++ b/gcc/ada/par-ch2.adb
@@ -469,11 +469,14 @@ package body Ch2 is
is
Scan_State : Saved_Scan_State;
Identifier_Node : Node_Id;
+ Id_Present : Boolean;
begin
Association := New_Node (N_Pragma_Argument_Association, Token_Ptr);
Set_Chars (Association, No_Name);
+ -- Argument starts with identifier
+
if Token = Tok_Identifier then
Identifier_Node := Token_Node;
Save_Scan_State (Scan_State); -- at Identifier
@@ -483,17 +486,24 @@ package body Ch2 is
Identifier_Seen := True;
Scan; -- past arrow
Set_Chars (Association, Chars (Identifier_Node));
+ Id_Present := True;
-- Case of argument with no identifier
else
Restore_Scan_State (Scan_State); -- to Identifier
-
- if Identifier_Seen then
- Error_Msg_SC
- ("|pragma argument identifier required here (RM 2.8(4))");
- end if;
+ Id_Present := False;
end if;
+
+ -- Argument does not start with identifier
+
+ else
+ Id_Present := False;
+ end if;
+
+ if Identifier_Seen and not Id_Present then
+ Error_Msg_SC
+ ("|pragma argument identifier required here (RM 2.8(4))");
end if;
Set_Expression (Association, P_Expression);