Commit d7f41b2d by Arnaud Charlet

[multiple changes]

2012-08-06  Yannick Moy  <moy@adacore.com>

	* sem_ch4.adb (Analyze_Selected_Component): Issue an error in
	Alfa mode for component not present.

2012-08-06  Thomas Quinot  <quinot@adacore.com>

	* exp_ch7.adb (Insert_Actions_In_Scope_Around): Do not
	use a renaming of Scope_Stack.Table (Scope_Stack.Last), as
	Process_Transient_Object may introduce new scopes and cause
	Scope_Stack.Table to be reallocated.

From-SVN: r190167
parent 3217f71e
2012-08-06 Yannick Moy <moy@adacore.com>
* sem_ch4.adb (Analyze_Selected_Component): Issue an error in
Alfa mode for component not present.
2012-08-06 Thomas Quinot <quinot@adacore.com>
* exp_ch7.adb (Insert_Actions_In_Scope_Around): Do not
use a renaming of Scope_Stack.Table (Scope_Stack.Last), as
Process_Transient_Object may introduce new scopes and cause
Scope_Stack.Table to be reallocated.
2012-08-06 Robert Dewar <dewar@adacore.com> 2012-08-06 Robert Dewar <dewar@adacore.com>
* exp_util.adb, switch-c.adb, inline.ads, sem_ch10.adb, types.ads, * exp_util.adb, switch-c.adb, inline.ads, sem_ch10.adb, types.ads,
......
...@@ -4345,9 +4345,13 @@ package body Exp_Ch7 is ...@@ -4345,9 +4345,13 @@ package body Exp_Ch7 is
------------------------------------ ------------------------------------
procedure Insert_Actions_In_Scope_Around (N : Node_Id) is procedure Insert_Actions_In_Scope_Around (N : Node_Id) is
SE : Scope_Stack_Entry renames Scope_Stack.Table (Scope_Stack.Last); After : constant List_Id :=
After : List_Id renames SE.Actions_To_Be_Wrapped_After; Scope_Stack.Table (Scope_Stack.Last).Actions_To_Be_Wrapped_After;
Before : List_Id renames SE.Actions_To_Be_Wrapped_Before; Before : constant List_Id :=
Scope_Stack.Table (Scope_Stack.Last).Actions_To_Be_Wrapped_Before;
-- Note: We used to use renamings of Scope_Stack.Table (Scope_Stack.
-- Last), but this was incorrect as Process_Transient_Object may
-- introduce new scopes and cause a reallocation of Scope_Stack.Table.
procedure Process_Transient_Objects procedure Process_Transient_Objects
(First_Object : Node_Id; (First_Object : Node_Id;
...@@ -4694,11 +4698,13 @@ package body Exp_Ch7 is ...@@ -4694,11 +4698,13 @@ package body Exp_Ch7 is
-- Reset the action lists -- Reset the action lists
if Present (Before) then if Present (Before) then
Before := No_List; Scope_Stack.Table (Scope_Stack.Last).
Actions_To_Be_Wrapped_Before := No_List;
end if; end if;
if Present (After) then if Present (After) then
After := No_List; Scope_Stack.Table (Scope_Stack.Last).
Actions_To_Be_Wrapped_After := No_List;
end if; end if;
end; end;
end Insert_Actions_In_Scope_Around; end Insert_Actions_In_Scope_Around;
......
...@@ -4343,10 +4343,22 @@ package body Sem_Ch4 is ...@@ -4343,10 +4343,22 @@ package body Sem_Ch4 is
-- Emit appropriate message. Gigi will replace the -- Emit appropriate message. Gigi will replace the
-- node subsequently with the appropriate Raise. -- node subsequently with the appropriate Raise.
Apply_Compile_Time_Constraint_Error -- In Alfa mode, this is an made into an error to
(N, "component not present in }?", -- simplify the treatment of the formal verification
CE_Discriminant_Check_Failed, -- backend.
Ent => Prefix_Type, Rep => False);
if Alfa_Mode then
Apply_Compile_Time_Constraint_Error
(N, "component not present in }",
CE_Discriminant_Check_Failed,
Ent => Prefix_Type, Rep => False);
else
Apply_Compile_Time_Constraint_Error
(N, "component not present in }?",
CE_Discriminant_Check_Failed,
Ent => Prefix_Type, Rep => False);
end if;
Set_Raises_Constraint_Error (N); Set_Raises_Constraint_Error (N);
return; return;
end if; end if;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment