[Ada] Report error in non-legal class-wide conditions

gcc/ada/

	* sem_prag.adb
	(Analyze_Pre_Post_Condition_In_Decl_Part): Improve check to report
	an error in non-legal class-wide conditions.
This commit is contained in:
Javier Miranda 2022-08-15 18:31:50 +00:00 committed by Marc Poulhiès
parent c889b2e8ac
commit 1c245f7273

View File

@ -26138,12 +26138,9 @@ package body Sem_Prag is
if Class_Present (N) then
-- Verify that a class-wide condition is legal, i.e. the operation is
-- a primitive of a tagged type. Note that a generic subprogram is
-- not a primitive operation.
-- a primitive of a tagged type.
Disp_Typ := Find_Dispatching_Type (Spec_Id);
if No (Disp_Typ) or else Is_Generic_Subprogram (Spec_Id) then
if not Is_Dispatching_Operation (Spec_Id) then
Error_Msg_Name_1 := Original_Aspect_Pragma_Name (N);
if From_Aspect_Specification (N) then
@ -26162,6 +26159,7 @@ package body Sem_Prag is
-- Remaining semantic checks require a full tree traversal
else
Disp_Typ := Find_Dispatching_Type (Spec_Id);
Check_Class_Wide_Condition (Expr);
end if;