mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-04-23 00:51:00 +08:00
[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:
parent
c889b2e8ac
commit
1c245f7273
@ -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;
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user