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:
Steve Baird 2024-07-30 13:48:39 -07:00 committed by Marc Poulhiès
parent 85f2ffd80e
commit 480819c921

View file

@ -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