From 204dba400b42b75271071b05102a5b46fd2a34d0 Mon Sep 17 00:00:00 2001 From: Piotr Trojanek <trojanek@adacore.com> Date: Tue, 2 May 2023 12:49:43 +0200 Subject: [PATCH] ada: Skip elaboration checks for abstract subprograms on derived types Elaboration checks skip abstract subprogram declarations, which have no body that could be examined. Now these checks also skip abstract subprograms of a derived type, which have no body either. gcc/ada/ * sem_elab.adb (Check_Overriding_Primitive): Prevent Corresponding_Body to be called with entity of an abstract subprogram. --- gcc/ada/sem_elab.adb | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/gcc/ada/sem_elab.adb b/gcc/ada/sem_elab.adb index 1e18b9878639..dc81e47da9e6 100644 --- a/gcc/ada/sem_elab.adb +++ b/gcc/ada/sem_elab.adb @@ -15263,10 +15263,13 @@ package body Sem_Elab is -- Nothing to do for predefined primitives because they are -- artifacts of tagged type expansion and cannot override source -- primitives. Nothing to do as well for inherited primitives, as - -- the check concerns overriding ones. + -- the check concerns overriding ones. Finally, nothing to do for + -- abstract subprograms, because they have no body that could be + -- examined. if Is_Predefined_Dispatching_Operation (Prim) or else not Is_Overriding_Subprogram (Prim) + or else Is_Abstract_Subprogram (Prim) then return; end if; -- GitLab