[multiple changes]

2017-09-08  Gary Dismukes  <dismukes@adacore.com>

	* par-ch4.adb: Reformatting of an error message.

2017-09-08  Javier Miranda  <miranda@adacore.com>

	* sem_ch3.adb (Resolve_Name): Under ASIS mode analyze overloaded
	identifiers to ensure their correct decoration of names on
	aspect expressions.

2017-09-08  Yannick Moy  <moy@adacore.com>

	* exp_attr.adb (Expand_Loop_Entry_Attribute): Do
	not skip a loop coming from source which is rewritten into a loop.

2017-09-08  Ed Schonberg  <schonberg@adacore.com>

	* freeze.adb (Wrap_Imported_Subprogram): Indicate that the
	wrapper has convention Ada, to prevent spurious warnings on
	unconstrained array parameters.

2017-09-08  Eric Botcazou  <ebotcazou@adacore.com>

	* sem_prag.adb (Check_Variant): Use First_Non_Pragma/Next_Non_Pragma.
	(Analyze_Pragma) <Pragma_Unchecked_Union>: Likewise.

2017-09-08  Eric Botcazou  <ebotcazou@adacore.com>

	* sem_ch6.adb (Freeze_Expr_Types): Rename Spec_Id into Def_Id.

From-SVN: r251884
This commit is contained in:
Arnaud Charlet 2017-09-08 12:15:44 +02:00
parent 72a266372b
commit ae5115dd46
8 changed files with 66 additions and 24 deletions

View file

@ -1,3 +1,33 @@
2017-09-08 Gary Dismukes <dismukes@adacore.com>
* par-ch4.adb: Reformatting of an error message.
2017-09-08 Javier Miranda <miranda@adacore.com>
* sem_ch3.adb (Resolve_Name): Under ASIS mode analyze overloaded
identifiers to ensure their correct decoration of names on
aspect expressions.
2017-09-08 Yannick Moy <moy@adacore.com>
* exp_attr.adb (Expand_Loop_Entry_Attribute): Do
not skip a loop coming from source which is rewritten into a loop.
2017-09-08 Ed Schonberg <schonberg@adacore.com>
* freeze.adb (Wrap_Imported_Subprogram): Indicate that the
wrapper has convention Ada, to prevent spurious warnings on
unconstrained array parameters.
2017-09-08 Eric Botcazou <ebotcazou@adacore.com>
* sem_prag.adb (Check_Variant): Use First_Non_Pragma/Next_Non_Pragma.
(Analyze_Pragma) <Pragma_Unchecked_Union>: Likewise.
2017-09-08 Eric Botcazou <ebotcazou@adacore.com>
* sem_ch6.adb (Freeze_Expr_Types): Rename Spec_Id into Def_Id.
2017-09-08 Arnaud Charlet <charlet@adacore.com>
* exp_intr.adb (Append_Entity_Name): Move to ...

View file

@ -1086,7 +1086,8 @@ package body Exp_Attr is
Loop_Stmt := N;
while Present (Loop_Stmt) loop
if Nkind (Loop_Stmt) = N_Loop_Statement
and then Comes_From_Source (Loop_Stmt)
and then Nkind (Original_Node (Loop_Stmt)) = N_Loop_Statement
and then Comes_From_Source (Original_Node (Loop_Stmt))
then
exit;
end if;

View file

@ -5122,12 +5122,13 @@ package body Freeze is
Prag := Copy_Import_Pragma;
-- Fix up spec to be not imported any more
-- Fix up spec so it is no longer imported and has convention Ada
Set_Has_Completion (E, False);
Set_Import_Pragma (E, Empty);
Set_Interface_Name (E, Empty);
Set_Is_Imported (E, False);
Set_Convention (E, Convention_Ada);
-- Grab the subprogram declaration and specification

View file

@ -3319,7 +3319,7 @@ package body Ch4 is
Set_Expression (Assoc_Node, P_Expression);
if Ada_Version < Ada_2020 then
Error_Msg_SC ("Iterated component is an Ada 2020 extension");
Error_Msg_SC ("iterated component is an Ada 2020 extension");
Error_Msg_SC ("\compile with -gnatX");
end if;

View file

@ -12704,7 +12704,16 @@ package body Sem_Ch13 is
elsif Nkind (N) = N_Identifier and then Chars (N) /= Chars (E) then
Find_Direct_Name (N);
if not ASIS_Mode then
-- In ASIS mode we must analyze overloaded identifiers to ensure
-- their correct decoration because expansion is disabled (and
-- the expansion of freeze nodes takes care of resolving aspect
-- expressions).
if ASIS_Mode then
if Is_Overloaded (N) then
Analyze (Parent (N));
end if;
else
Set_Entity (N, Empty);
end if;

View file

@ -267,8 +267,8 @@ package body Sem_Ch6 is
LocX : constant Source_Ptr := Sloc (Expr);
Spec : constant Node_Id := Specification (N);
procedure Freeze_Expr_Types (Spec_Id : Entity_Id);
-- N is an expression function that is a completion and Spec_Id its
procedure Freeze_Expr_Types (Def_Id : Entity_Id);
-- N is an expression function that is a completion and Def_Id its
-- defining entity. Freeze before N all the types referenced by the
-- expression of the function.
@ -276,7 +276,7 @@ package body Sem_Ch6 is
-- Freeze_Expr_Types --
-----------------------
procedure Freeze_Expr_Types (Spec_Id : Entity_Id) is
procedure Freeze_Expr_Types (Def_Id : Entity_Id) is
function Cloned_Expression return Node_Id;
-- Build a duplicate of the expression of the return statement that
-- has no defining entities shared with the original expression.
@ -355,7 +355,7 @@ package body Sem_Ch6 is
-- Skip Itypes created by the preanalysis
if Is_Itype (Typ)
and then Scope_Within_Or_Same (Scope (Typ), Spec_Id)
and then Scope_Within_Or_Same (Scope (Typ), Def_Id)
then
return;
end if;
@ -419,8 +419,8 @@ package body Sem_Ch6 is
-- Local variables
Saved_First_Entity : constant Entity_Id := First_Entity (Spec_Id);
Saved_Last_Entity : constant Entity_Id := Last_Entity (Spec_Id);
Saved_First_Entity : constant Entity_Id := First_Entity (Def_Id);
Saved_Last_Entity : constant Entity_Id := Last_Entity (Def_Id);
Dup_Expr : constant Node_Id := Cloned_Expression;
-- Start of processing for Freeze_Expr_Types
@ -433,24 +433,24 @@ package body Sem_Ch6 is
-- spurious errors on Ghost entities (since the expression is not
-- fully analyzed).
Push_Scope (Spec_Id);
Install_Formals (Spec_Id);
Push_Scope (Def_Id);
Install_Formals (Def_Id);
Ignore_Errors_Enable := Ignore_Errors_Enable + 1;
Preanalyze_Spec_Expression (Dup_Expr, Etype (Spec_Id));
Preanalyze_Spec_Expression (Dup_Expr, Etype (Def_Id));
Ignore_Errors_Enable := Ignore_Errors_Enable - 1;
End_Scope;
-- Restore certain attributes of Spec_Id since the preanalysis may
-- Restore certain attributes of Def_Id since the preanalysis may
-- have introduced itypes to this scope, thus modifying attributes
-- First_Entity and Last_Entity.
Set_First_Entity (Spec_Id, Saved_First_Entity);
Set_Last_Entity (Spec_Id, Saved_Last_Entity);
Set_First_Entity (Def_Id, Saved_First_Entity);
Set_Last_Entity (Def_Id, Saved_Last_Entity);
if Present (Last_Entity (Spec_Id)) then
Set_Next_Entity (Last_Entity (Spec_Id), Empty);
if Present (Last_Entity (Def_Id)) then
Set_Next_Entity (Last_Entity (Def_Id), Empty);
end if;
-- Freeze all types referenced in the expression

View file

@ -6350,10 +6350,10 @@ package body Sem_Prag is
Comp : Node_Id;
begin
Comp := First (Component_Items (Clist));
Comp := First_Non_Pragma (Component_Items (Clist));
while Present (Comp) loop
Check_Component (Comp, UU_Typ, In_Variant_Part => True);
Next (Comp);
Next_Non_Pragma (Comp);
end loop;
end Check_Variant;
@ -23316,20 +23316,20 @@ package body Sem_Prag is
-- Check components
Comp := First (Component_Items (Clist));
Comp := First_Non_Pragma (Component_Items (Clist));
while Present (Comp) loop
Check_Component (Comp, Typ);
Next (Comp);
Next_Non_Pragma (Comp);
end loop;
-- Check variant part
Vpart := Variant_Part (Clist);
Variant := First (Variants (Vpart));
Variant := First_Non_Pragma (Variants (Vpart));
while Present (Variant) loop
Check_Variant (Variant, Typ);
Next (Variant);
Next_Non_Pragma (Variant);
end loop;
end if;

View file

@ -9375,6 +9375,7 @@ package body Sem_Res is
return;
elsif Nkind (Parent (N)) in N_Op
and then Present (Etype (Parent (N)))
and then Is_Fixed_Point_Type (Etype (Parent (N)))
and then Etype (N) = Universal_Real
and then Comes_From_Source (N)