The following test module creates two derived type, with the second extending the first. Type-bound procedures for initialization are defined by both. However when the init routine for the extended derived type attempts to call the init routine in the parent type, via the parent component name, the compiler gets confused. It thinks the parent component name is a structure constructor and gives a fatal error:
module oo_mod implicit none type base_t character(16) :: name contains procedure :: init=>base_init end type type x_t integer :: value contains procedure :: init=>x_init end type contains subroutine base_init (this, text) type(base_t) :: this character(*) :: text this%name = text end subroutine subroutine x_init (this, text, value) type(x_t) :: this character(*) :: text integer :: value call base_t%init (text) ! or... call base_init (base_t, text) this%value = value end subroutine end module [EMAIL PROTECTED]:/home/wws/fortran/oop> gfortran --version GNU Fortran (GCC) 4.4.0 20081001 (experimental) [trunk revision 140806] Copyright (C) 2008 Free Software Foundation, Inc. GNU Fortran comes with NO WARRANTY, to the extent permitted by law. You may redistribute copies of GNU Fortran under the terms of the GNU General Public License. For more information about these matters, see the file named COPYING [EMAIL PROTECTED]:/home/wws/fortran/oop> gfortran -c parent.f90 parent.f90:31.15: call base_t%init (text) 1 Error: Syntax error in CALL statement at (1) parent.f90:33.26: call base_init (base_t, text) 1 Error: Syntax error in structure constructor at (1) parent.f90:7.13: procedure :: init=>base_init 1 Warning: Polymorphic entities are not yet implemented, non-polymorphic passed-ob ject dummy argument of 'base_init' at (1) accepted parent.f90:13.13: procedure :: init=>x_init 1 Warning: Polymorphic entities are not yet implemented, non-polymorphic passed-ob ject dummy argument of 'x_init' at (1) accepted [EMAIL PROTECTED]:/home/wws/fortran/oop> -- Summary: Parent component name getting confused with structure constructor Product: gcc Version: unknown Status: UNCONFIRMED Severity: normal Priority: P3 Component: fortran AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: w6ws at earthlink dot net http://gcc.gnu.org/bugzilla/show_bug.cgi?id=37712