In the following program, generic procedure "foo" can be distinguished
between two procedure "foo1" and "foo2" by keywords of arguments.
But gfortran cannot compile this source code and output the same message
twice.
I think it is wrong behavior.
$ cat test.f90
module m1
implicit none
interface foo
module procedure foo1
end interface
contains
subroutine foo1(j)
integer :: j
end subroutine
end module
module m2
implicit none
interface foo
module procedure foo2
end interface
contains
subroutine foo2(i)
integer :: i
end subroutine
end module
program test
use m1
use m2
implicit none
call foo(j=3)
end program
$ gfortran --version
GNU Fortran 95 (GCC) 4.2.0 20060129 (experimental)
Copyright (C) 2006 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
$ gfortran test.f90
In file test.f90:24
use m1
1
Error: Ambiguous interfaces 'foo1' and 'foo2' in generic interface 'foo' at (1)
In file test.f90:24
use m1
1
Error: Ambiguous interfaces 'foo1' and 'foo2' in generic interface 'foo' at (1)
--
Summary: Rejects to call a generic procedure by argument
keywords.
Product: gcc
Version: 4.2.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: fortran
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: iguchi at coral dot t dot u-tokyo dot ac dot jp
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=27112