[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
This commit is contained in:
parent
3217f71e44
commit
d7f41b2d87
|
@ -1,3 +1,15 @@
|
|||
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>
|
||||
|
||||
* exp_util.adb, switch-c.adb, inline.ads, sem_ch10.adb, types.ads,
|
||||
|
|
|
@ -4345,9 +4345,13 @@ package body Exp_Ch7 is
|
|||
------------------------------------
|
||||
|
||||
procedure Insert_Actions_In_Scope_Around (N : Node_Id) is
|
||||
SE : Scope_Stack_Entry renames Scope_Stack.Table (Scope_Stack.Last);
|
||||
After : List_Id renames SE.Actions_To_Be_Wrapped_After;
|
||||
Before : List_Id renames SE.Actions_To_Be_Wrapped_Before;
|
||||
After : constant List_Id :=
|
||||
Scope_Stack.Table (Scope_Stack.Last).Actions_To_Be_Wrapped_After;
|
||||
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
|
||||
(First_Object : Node_Id;
|
||||
|
@ -4694,11 +4698,13 @@ package body Exp_Ch7 is
|
|||
-- Reset the action lists
|
||||
|
||||
if Present (Before) then
|
||||
Before := No_List;
|
||||
Scope_Stack.Table (Scope_Stack.Last).
|
||||
Actions_To_Be_Wrapped_Before := No_List;
|
||||
end if;
|
||||
|
||||
if Present (After) then
|
||||
After := No_List;
|
||||
Scope_Stack.Table (Scope_Stack.Last).
|
||||
Actions_To_Be_Wrapped_After := No_List;
|
||||
end if;
|
||||
end;
|
||||
end Insert_Actions_In_Scope_Around;
|
||||
|
|
|
@ -4343,10 +4343,22 @@ package body Sem_Ch4 is
|
|||
-- Emit appropriate message. Gigi will replace the
|
||||
-- node subsequently with the appropriate Raise.
|
||||
|
||||
Apply_Compile_Time_Constraint_Error
|
||||
(N, "component not present in }?",
|
||||
CE_Discriminant_Check_Failed,
|
||||
Ent => Prefix_Type, Rep => False);
|
||||
-- In Alfa mode, this is an made into an error to
|
||||
-- simplify the treatment of the formal verification
|
||||
-- backend.
|
||||
|
||||
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);
|
||||
return;
|
||||
end if;
|
||||
|
|
Loading…
Reference in New Issue