https://gcc.gnu.org/bugzilla/show_bug.cgi?id=77903
--- Comment #8 from Paul Thomas <pault at gcc dot gnu.org> --- (In reply to Damian Rouson from comment #0) > Gfortran accepts invalid code in which an implicitly typed interface body > has the same name as a conflicting, explicitly typed module function > implemented in a submodule. See below. > > Damian > > > $ cat one.f90 > module one_module > implicit none > interface > module function one() > end function > end interface > end module > > submodule(one_module) one_submodule > implicit none > contains > integer module function one() > one = 1 > end function > end submodule > > use one_module > print *,one()," is not ",1 > end > > $ gfortran -std=f2008 -Wall -fcheck=all one.f90 > > $ ./a.out > 9.18340949E-41 is not 1 > > $ gfortran --version > GNU Fortran (MacPorts gcc6 6.1.0_0) 6.1.0 Interestingly, ifort accepts this and imposes the interface definition to the extent of making the type conversion. I will have to dwell some more on this. Paul