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

Reply via email to