aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorArnaud Charlet <charlet@adacore.com>2020-06-22 02:59:37 -0400
committerPierre-Marie de Rodat <derodat@adacore.com>2020-10-15 05:39:07 -0400
commitacc1708cf088b47919785e6a50fa7a636b3fb82b (patch)
treecc9e63ebe789d3cb1661f377693d0c80c5c98698
parentc2c8f0d0428e178120f78ae62107dd608cf8ccfd (diff)
downloadgcc-acc1708cf088b47919785e6a50fa7a636b3fb82b.zip
gcc-acc1708cf088b47919785e6a50fa7a636b3fb82b.tar.gz
gcc-acc1708cf088b47919785e6a50fa7a636b3fb82b.tar.bz2
[Ada] Warn on unknown aspect
gcc/ada/ * par-ch13.adb (Get_Aspect_Specifications): Generate a warning rather than an error on unknown aspects unless -gnatd2 is used. (Aspect_Specifications_Present): Improve detection of unknown aspects. * debug.adb (Debug_Flag_2): Update document.
-rw-r--r--gcc/ada/debug.adb3
-rw-r--r--gcc/ada/par-ch13.adb11
2 files changed, 8 insertions, 6 deletions
diff --git a/gcc/ada/debug.adb b/gcc/ada/debug.adb
index 0e4a530..bbdaf3b 100644
--- a/gcc/ada/debug.adb
+++ b/gcc/ada/debug.adb
@@ -1032,6 +1032,9 @@ package body Debug is
-- flag also suppresses the additional messages explaining why a
-- non-static expression is non-static (see Sem_Eval.Why_Not_Static).
-- This avoids having to worry about these messages in ACATS testing.
+ -- Finally, this flag is also used for strict legality check, in
+ -- particular it will generate an error instead a warning when
+ -- encountering an unknown pragma.
-- d3 Causes Comperr to dump the contents of the node for which an abort
-- was detected (normally only the Node_Id of the node is output).
diff --git a/gcc/ada/par-ch13.adb b/gcc/ada/par-ch13.adb
index 0b0319d..459d7fe 100644
--- a/gcc/ada/par-ch13.adb
+++ b/gcc/ada/par-ch13.adb
@@ -153,9 +153,7 @@ package body Ch13 is
Result := True;
else
Scan; -- past identifier
- Result := Token = Tok_Arrow or else
- Token = Tok_Comma or else
- Token = Tok_Semicolon;
+ Result := Token in Tok_Arrow | Tok_Comma | Tok_Is | Tok_Semicolon;
end if;
-- If earlier than Ada 2012, check for valid aspect identifier (possibly
@@ -178,7 +176,7 @@ package body Ch13 is
-- defaulted True value. Further checks when analyzing aspect
-- specification, which may include further aspects.
- elsif Token = Tok_Comma or else Token = Tok_Semicolon then
+ elsif Token in Tok_Comma | Tok_Semicolon then
Result := True;
elsif Token = Tok_Apostrophe then
@@ -265,7 +263,8 @@ package body Ch13 is
-- The aspect mark is not recognized
if A_Id = No_Aspect then
- Error_Msg_N ("& is not a valid aspect identifier", Token_Node);
+ Error_Msg_Warn := not Debug_Flag_2;
+ Error_Msg_N ("<<& is not a valid aspect identifier", Token_Node);
OK := False;
-- Check bad spelling
@@ -274,7 +273,7 @@ package body Ch13 is
if Is_Bad_Spelling_Of (Token_Name, Aspect_Names (J)) then
Error_Msg_Name_1 := Aspect_Names (J);
Error_Msg_N -- CODEFIX
- ("\possible misspelling of%", Token_Node);
+ ("\<<possible misspelling of%", Token_Node);
exit;
end if;
end loop;