begin
if Nkind (Expression (Arg)) /= N_Identifier
- or else (Chars (Argx) /= Name_On
- and then
- Chars (Argx) /= Name_Off)
+ or else not Nam_In (Chars (Argx), Name_On, Name_Off)
then
Error_Msg_Name_2 := Name_On;
Error_Msg_Name_3 := Name_Off;
Id := Chars (Arg);
Expr := Expression (Arg);
- if Id = No_Name
- and then Nkind (Expr) = N_Identifier
- then
- case Get_Restriction_Id (Chars (Expr)) is
- when No_Obsolescent_Features =>
+ if Id = No_Name and then Nkind (Expr) = N_Identifier then
+ case Chars (Expr) is
+ when Name_No_Obsolescent_Features =>
Set_Restriction (No_Obsolescent_Features, Pragma_Node);
Restriction_Warnings (No_Obsolescent_Features) :=
Prag_Id = Pragma_Restriction_Warnings;
- when SPARK =>
- Set_Restriction (SPARK, Pragma_Node);
- Restriction_Warnings (SPARK) :=
+ when Name_SPARK | Name_SPARK_05 =>
+ Set_Restriction (SPARK_05, Pragma_Node);
+ Restriction_Warnings (SPARK_05) :=
Prag_Id = Pragma_Restriction_Warnings;
when others =>
when Pragma_Ada_83 =>
Ada_Version := Ada_83;
Ada_Version_Explicit := Ada_83;
+ Ada_Version_Pragma := Pragma_Node;
------------
-- Ada_95 --
when Pragma_Ada_95 =>
Ada_Version := Ada_95;
Ada_Version_Explicit := Ada_95;
+ Ada_Version_Pragma := Pragma_Node;
---------------------
-- Ada_05/Ada_2005 --
if Arg_Count = 0 then
Ada_Version := Ada_2005;
Ada_Version_Explicit := Ada_2005;
+ Ada_Version_Pragma := Pragma_Node;
end if;
---------------------
if Arg_Count = 0 then
Ada_Version := Ada_2012;
Ada_Version_Explicit := Ada_2012;
+ Ada_Version_Pragma := Pragma_Node;
end if;
-----------
-- set well before any semantic analysis is performed. Note that we
-- ignore this pragma if debug flag -gnatd.i is set.
+ -- Also note that the "one argument" case may have two arguments if the
+ -- second one is a reason argument.
+
when Pragma_Warnings =>
- if Arg_Count = 1 and then not Debug_Flag_Dot_I then
+ if not Debug_Flag_Dot_I
+ and then (Arg_Count = 1
+ or else (Arg_Count = 2
+ and then Chars (Arg2) = Name_Reason))
+ then
Check_No_Identifier (Arg1);
declare
Pragma_Compile_Time_Error |
Pragma_Compile_Time_Warning |
Pragma_Compiler_Unit |
- Pragma_Contract_Case |
Pragma_Contract_Cases |
Pragma_Convention_Identifier |
Pragma_CPP_Class |
Pragma_Import_Valued_Procedure |
Pragma_Independent |
Pragma_Independent_Components |
+ Pragma_Initial_Condition |
Pragma_Initialize_Scalars |
+ Pragma_Initializes |
Pragma_Inline |
Pragma_Inline_Always |
Pragma_Inline_Generic |
Pragma_Preelaborable_Initialization |
Pragma_Polling |
Pragma_Persistent_BSS |
+ Pragma_Post |
Pragma_Postcondition |
+ Pragma_Post_Class |
+ Pragma_Pre |
Pragma_Precondition |
Pragma_Predicate |
Pragma_Preelaborate |
Pragma_Preelaborate_05 |
+ Pragma_Pre_Class |
Pragma_Priority |
Pragma_Priority_Specific_Dispatching |
Pragma_Profile |
Pragma_Pure_12 |
Pragma_Pure_Function |
Pragma_Queuing_Policy |
+ Pragma_Refined_Depends |
+ Pragma_Refined_Global |
+ Pragma_Refined_Post |
+ Pragma_Refined_State |
Pragma_Relative_Deadline |
Pragma_Remote_Access_Type |
Pragma_Remote_Call_Interface |
Pragma_Short_Circuit_And_Or |
Pragma_Short_Descriptors |
Pragma_Simple_Storage_Pool_Type |
+ Pragma_SPARK_Mode |
Pragma_Storage_Size |
Pragma_Storage_Unit |
Pragma_Static_Elaboration_Desired |
Pragma_Thread_Local_Storage |
Pragma_Time_Slice |
Pragma_Title |
+ Pragma_Type_Invariant |
+ Pragma_Type_Invariant_Class |
Pragma_Unchecked_Union |
Pragma_Unimplemented_Unit |
Pragma_Universal_Aliasing |