-- pragma Abstract_State (ABSTRACT_STATE_LIST)
- -- ABSTRACT_STATE_LIST ::=
+ -- ABSTRACT_STATE_LIST ::=
-- null
- -- | STATE_NAME_WITH_PROPERTIES {, STATE_NAME_WITH_PROPERTIES}
+ -- | STATE_NAME_WITH_PROPERTIES {, STATE_NAME_WITH_PROPERTIES}
-- STATE_NAME_WITH_PROPERTIES ::=
-- STATE_NAME
- -- | (STATE_NAME with PROPERTY_LIST)
+ -- | (STATE_NAME with PROPERTY_LIST)
- -- PROPERTY_LIST ::= PROPERTY {, PROPERTY}
- -- PROPERTY ::= SIMPLE_PROPERTY
- -- | NAME_VALUE_PROPERTY
- -- SIMPLE_PROPERTY ::= IDENTIFIER
- -- NAME_VALUE_PROPERTY ::= IDENTIFIER => EXPRESSION
- -- STATE_NAME ::= DEFINING_IDENTIFIER
+ -- PROPERTY_LIST ::= PROPERTY {, PROPERTY}
+ -- PROPERTY ::= SIMPLE_PROPERTY | NAME_VALUE_PROPERTY
+
+ -- SIMPLE_PROPERTY ::= IDENTIFIER
+ -- NAME_VALUE_PROPERTY ::= IDENTIFIER => EXPRESSION
+
+ -- STATE_NAME ::= DEFINING_IDENTIFIER
when Pragma_Abstract_State => Abstract_State : declare
Pack_Id : Entity_Id;
-- pragma Depends (DEPENDENCY_RELATION);
- -- DEPENDENCY_RELATION ::= null
- -- | DEPENDENCY_CLAUSE {, DEPENDENCY_CLAUSE}
- -- DEPENDENCY_CLAUSE ::= OUTPUT_LIST =>[+] INPUT_LIST
- -- OUTPUT_LIST ::= null
- -- | OUTPUT
- -- | (OUTPUT {, OUTPUT})
- -- INPUT_LIST ::= null
- -- | INPUT
- -- | (INPUT {, INPUT})
- -- OUTPUT ::= NAME | FUNCTION_RESULT
- -- INPUT ::= NAME
+ -- DEPENDENCY_RELATION ::=
+ -- null
+ -- | DEPENDENCY_CLAUSE {, DEPENDENCY_CLAUSE}
+
+ -- DEPENDENCY_CLAUSE ::= OUTPUT_LIST =>[+] INPUT_LIST
+
+ -- OUTPUT_LIST ::= null | OUTPUT | (OUTPUT {, OUTPUT})
+
+ -- INPUT_LIST ::= null | INPUT | (INPUT {, INPUT})
+
+ -- OUTPUT ::= NAME | FUNCTION_RESULT
+ -- INPUT ::= NAME
-- where FUNCTION_RESULT is a function Result attribute_reference
function Entity_Of (N : Node_Id) return Entity_Id;
-- Return the entity of N or Empty. If N is a renaming, find the
-- entity of the root renamed object.
+ -- Surely this should not be buried here??? exp_util???
procedure Normalize_Clause (Clause : Node_Id);
-- Remove a self-dependency "+" from the input list of a clause.
---------------
function Entity_Of (N : Node_Id) return Entity_Id is
- Id : Entity_Id := Entity (N);
+ Id : Entity_Id;
begin
-- Follow a possible chain of renamings to reach the root
-- renamed object.
+ Id := Entity (N);
while Present (Renamed_Object (Id)) loop
if Is_Entity_Name (Renamed_Object (Id)) then
Id := Entity (Renamed_Object (Id));
(List : List_Id;
Id : Entity_Id) return Boolean;
-- Determine whether List contains element Id
+ -- Surely this should not be buried here??? exp_Util???
--------------
-- Contains --
-- pragma Global (GLOBAL_SPECIFICATION)
- -- GLOBAL_SPECIFICATION ::= null
- -- | GLOBAL_LIST
- -- | MODED_GLOBAL_LIST {, MODED_GLOBAL_LIST}
- -- MODED_GLOBAL_LIST ::= MODE_SELECTOR => GLOBAL_LIST
- -- MODE_SELECTOR ::= Input | Output | In_Out | Contract_In
- -- GLOBAL_LIST ::= GLOBAL_ITEM
- -- | (GLOBAL_ITEM {, GLOBAL_ITEM})
- -- GLOBAL_ITEM ::= NAME
+ -- GLOBAL_SPECIFICATION ::=
+ -- null
+ -- | GLOBAL_LIST
+ -- | MODED_GLOBAL_LIST {, MODED_GLOBAL_LIST}
+
+ -- MODED_GLOBAL_LIST ::= MODE_SELECTOR => GLOBAL_LIST
+
+ -- MODE_SELECTOR ::= Input | Output | In_Out | Contract_In
+ -- GLOBAL_LIST ::= GLOBAL_ITEM | (GLOBAL_ITEM {, GLOBAL_ITEM})
+ -- GLOBAL_ITEM ::= NAME
when Pragma_Global => Global : declare
Subp_Id : Entity_Id;
-- A list containing the entities of all the items processed so
-- far. It plays a role in detecting distinct entities.
- -- Flags used to verify the consistency of modes
-
Contract_Seen : Boolean := False;
In_Out_Seen : Boolean := False;
Input_Seen : Boolean := False;
Output_Seen : Boolean := False;
+ -- Flags used to verify the consistency of modes
procedure Analyze_Global_List
(List : Node_Id;