ada: Etype missing for raise expression
If the primitive equality operator of the component type of an array type is abstract, then a call to that abstract function raises Program_Error (when such a call is legal). The FE generates a raise expression to implement this. That raise expression is an expression so it should have a valid Etype. gcc/ada/ * exp_ch4.adb (Build_Eq_Call): In the abstract callee case, copy the Etype of the callee onto the Make_Raise_Program_Error result.
This commit is contained in:
parent
85f2ffd80e
commit
480819c921
1 changed files with 5 additions and 2 deletions
|
@ -443,8 +443,11 @@ package body Exp_Ch4 is
|
|||
begin
|
||||
if Present (Eq) then
|
||||
if Is_Abstract_Subprogram (Eq) then
|
||||
return Make_Raise_Program_Error (Loc,
|
||||
Reason => PE_Explicit_Raise);
|
||||
return Result : constant Node_Id :=
|
||||
Make_Raise_Program_Error (Loc, Reason => PE_Explicit_Raise)
|
||||
do
|
||||
Set_Etype (Result, Etype (Eq));
|
||||
end return;
|
||||
|
||||
else
|
||||
return
|
||||
|
|
Loading…
Add table
Reference in a new issue