diff options
author | Piotr Trojanek <trojanek@adacore.com> | 2023-05-02 12:49:43 +0200 |
---|---|---|
committer | Marc Poulhiès <poulhies@adacore.com> | 2023-06-13 09:31:45 +0200 |
commit | 204dba400b42b75271071b05102a5b46fd2a34d0 (patch) | |
tree | 521cc2b9ed146b3aa6dada1e7aa9483b27c8ba63 /gcc | |
parent | d0ffa8d5155db105ce7b6e5b76c489c0fff1d090 (diff) | |
download | gcc-204dba400b42b75271071b05102a5b46fd2a34d0.zip gcc-204dba400b42b75271071b05102a5b46fd2a34d0.tar.gz gcc-204dba400b42b75271071b05102a5b46fd2a34d0.tar.bz2 |
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.
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ada/sem_elab.adb | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/gcc/ada/sem_elab.adb b/gcc/ada/sem_elab.adb index 1e18b98..dc81e47 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; |