* sem_res.adb (Resolve_Entity_Name): Comment
reformatting. Allow volatile objects in various generated checks.
2014-01-31 Ed Schonberg <schonberg@adacore.com>
* sem_attr.adb (Analyze_Attribute, case 'Update): For a record
component association, set the etype of the identifier, for
SPARK use.
2014-01-31 Ed Schonberg <schonberg@adacore.com>
* exp_ch6.adb (Has_Visibility_Of_Subprogram): If type is not
declared in a package, not checks can apply to the subprogram.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@207353
138bc75d-0d04-0410-961f-
82ee72b054a4
+2014-01-31 Hristian Kirtchev <kirtchev@adacore.com>
+
+ * sem_res.adb (Resolve_Entity_Name): Comment
+ reformatting. Allow volatile objects in various generated checks.
+
+2014-01-31 Ed Schonberg <schonberg@adacore.com>
+
+ * sem_attr.adb (Analyze_Attribute, case 'Update): For a record
+ component association, set the etype of the identifier, for
+ SPARK use.
+
+2014-01-31 Ed Schonberg <schonberg@adacore.com>
+
+ * exp_ch6.adb (Has_Visibility_Of_Subprogram): If type is not
+ declared in a package, not checks can apply to the subprogram.
+
2014-01-31 Robert Dewar <dewar@adacore.com>
* erroutc.adb (Validate_Specific_Warnings): Warnings are
function Has_Public_Visibility_Of_Subprogram return Boolean is
Subp_Decl : constant Node_Id := Unit_Declaration_Node (Subp_Id);
- Vis_Decls : constant List_Id :=
- Visible_Declarations (Specification
- (Unit_Declaration_Node (Scope (Typ))));
+
begin
-- An Initialization procedure must be considered visible even
-- though it is internally generated.
if Is_Init_Proc (Defining_Entity (Subp_Decl)) then
return True;
+ elsif Ekind (Scope (Typ)) /= E_Package then
+ return False;
+
-- Internally generated code is never publicly visible except
-- for a subprogram that is the implementation of an expression
-- function. In that case the visibility is determined by the
-- declarations of the package containing the type.
else
- return List_Containing (Subp_Decl) = Vis_Decls;
+ return List_Containing (Subp_Decl) =
+ Visible_Declarations
+ (Specification (Unit_Declaration_Node (Scope (Typ))));
end if;
end Has_Public_Visibility_Of_Subprogram;
while Present (Comp_Or_Discr) loop
if Chars (Comp_Or_Discr) = Comp_Name then
- -- Record component entity in the given aggregate choice,
- -- for subsequent resolution.
+ -- Record component entity and type in the given aggregate
+ -- choice, for subsequent resolution.
Set_Entity (Comp, Comp_Or_Discr);
+ Set_Etype (Comp, Etype (Comp_Or_Discr));
exit;
end if;
Prev := N;
while Present (Par) loop
- -- The variable can appear on either side of an assignment
+ -- The volatile object can appear on either side of an assignment
if Nkind (Par) = N_Assignment_Statement then
Usage_OK := True;
exit;
- -- The variable is part of the initialization expression of an
- -- object. Ensure that the climb of the parent chain came from the
- -- expression side and not from the name side.
+ -- The volatile object is part of the initialization expression of
+ -- another object. Ensure that the climb of the parent chain came
+ -- from the expression side and not from the name side.
elsif Nkind (Par) = N_Object_Declaration
and then Present (Expression (Par))
Usage_OK := True;
exit;
- -- The variable appears as an actual parameter in a call to an
- -- instance of Unchecked_Conversion whose result is renamed.
+ -- The volatile object appears as an actual parameter in a call to
+ -- an instance of Unchecked_Conversion whose result is renamed.
elsif Nkind (Par) = N_Function_Call
and then Is_Unchecked_Conversion_Instance (Entity (Name (Par)))
Usage_OK := True;
exit;
+ -- Allow references to volatile objects in various checks
+
+ elsif Nkind (Par) in N_Raise_xxx_Error then
+ Usage_OK := True;
+ exit;
+
-- Prevent the search from going too far
elsif Is_Body_Or_Package_Declaration (Par) then