[J3] Overriding type-bound procedure used in generic
Robert Corbett
rpcorbett at att.net
Mon May 5 23:29:15 UTC 2025
In the definition of G_T, you wrote
procedure, private, pass :: &
Init_T
Did you mean to write
procedure, private, pass :: &
Init => Init_T
?
Bob Corbett
> On May 5, 2025, at 9:46 AM, Reuben D. Budiardja via J3 <j3 at mailman.j3-fortran.org> wrote:
>
> Hi all,
>
> I'd like some help with this.
>
> Consider the code below.
>
> 1. What should the output be?
>
> Two compilers I tried give:
> Init G
> Init F
>
> while two other compilers give:
> Init F
> Init F
>
> 2. Should it matter if the access spec of the type-bound statement "Init_T" is changed to "public"? My understanding is that it should not (from 19.5.4 24-007), but in my test if I do that all four compilers then agree in the output:
> Init_G
> Init_F
>
>
> Thanks,
> Reuben
>
> -----------------------------------
>
> module F_M
> implicit none
> private
>
> type, public :: F_T
> contains
> procedure, private, pass :: &
> Init_T
> generic, public :: &
> Init => Init_T
> end type F_T
> contains
> subroutine Init_T ( FS )
> class ( F_T ), intent ( inout ) :: &
> FS
> print*, 'Init F'
> end subroutine Init_T
>
> end module F_M
>
>
> module G_M
> use F_M
> implicit none
> private
>
> type, public, extends ( F_T ) :: G_T
> contains
> procedure, private, pass :: &
> Init_T
> end type G_T
> contains
> subroutine Init_T ( FS )
> class ( G_T ), intent ( inout ) :: &
> FS
> print*, 'Init G'
> end subroutine Init_T
>
> end module G_M
>
>
> program Test
>
> use G_M
> implicit none
> type ( G_T ), allocatable :: &
> G
>
> allocate ( G )
> call G % Init ( )
> call G % F_T % Init ( )
>
> end program Test
>
>
More information about the J3
mailing list