This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
Other format: | [Raw text] |
If an inherited subprogram is implemented by a protected function, then the first parameter of the inherited subprogram shall be of mode in, but not an access-to-variable parameter (RM 9.4(11/9) After this patch the error is reported in the following example: procedure by30015_01p is package pack is type Iface is protected interface; function Prim1_1 (M : in out Iface; Value : Integer) return Natural is abstract; protected type PO_T1 is new Iface with function Prim1_1 (Value : Integer) return Natural; -- ERROR end PO_T1; end pack; package body Pack is protected body PO_T1 is function Prim1_1 (Value : Integer) return Natural is begin return 0; end; end PO_T1; end Pack; begin null; end; Command: gcc -c -gnat12 by30015_01p.adb Output: by30015_01p.adb:9:19: illegal overriding of subprogram inherited from interface by30015_01p.adb:9:19: first formal of "Prim1_1" declared at line 5 must be of mode "in" or access-to-constant Tested on x86_64-pc-linux-gnu, committed on trunk 2015-02-05 Javier Miranda <miranda@adacore.com> * errout.adb (Error_Msg_PT): Add missing error. * sem_ch6.adb (Check_Synchronized_Overriding): Check the missing RM rule. Code cleanup. * exp_ch9.adb (Build_Wrapper_Spec): Propagate "constant" in anonymous access types. Found working on the tests. Code cleanup.
Attachment:
difs
Description: Text document
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |