diff options
Diffstat (limited to 'gcc/ada')
-rw-r--r-- | gcc/ada/sem_ch3.adb | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/gcc/ada/sem_ch3.adb b/gcc/ada/sem_ch3.adb index cfef7c7a..269818a 100644 --- a/gcc/ada/sem_ch3.adb +++ b/gcc/ada/sem_ch3.adb @@ -10876,6 +10876,13 @@ package body Sem_Ch3 is then null; + -- Subprogram renamings cannot be overridden + + elsif Comes_From_Source (Subp) + and then Present (Alias (Subp)) + then + null; + else Error_Msg_NE ("type must be declared abstract or & overridden", @@ -15726,7 +15733,9 @@ package body Sem_Ch3 is null; -- Ada 2005 (AI-228): Calculate the "require overriding" and "abstract" - -- properties of the subprogram, as defined in RM-3.9.3(4/2-6/2). + -- properties of the subprogram, as defined in RM-3.9.3(4/2-6/2). Note + -- that functions with controlling access results of record extensions + -- with a null extension part require overriding (AI95-00391/06). -- Ada 202x (AI12-0042): Similarly, set those properties for -- implementing the rule of RM 7.3.2(6.1/4). @@ -15744,8 +15753,7 @@ package body Sem_Ch3 is and then Ekind (Etype (New_Subp)) = E_Anonymous_Access_Type and then Designated_Type (Etype (New_Subp)) = - Derived_Type - and then not Is_Null_Extension (Derived_Type)) + Derived_Type) or else (Comes_From_Source (Alias (New_Subp)) and then Is_EVF_Procedure (Alias (New_Subp))) |