e9f63ace23
2007-08-30 Tobias Burnus <burnus@net-b.de> PR fortran/33228 * interface.c (check_interface0): Improve error for external procs. (check_sym_interfaces): Fix checking of module procedures. 2007-08-30 Tobias Burnus <burnus@net-b.de> PR fortran/33228 * gfortran.dg/generic_9.f90: Update error message. * gfortran.dg/generic_14.f90: New. From-SVN: r127925
46 lines
1.1 KiB
Fortran
46 lines
1.1 KiB
Fortran
! { dg-do compile }
|
|
! Test the patch for PR29992. The standard requires that a
|
|
! module procedure be contained in the same scope as the
|
|
! interface or is use associated to it(12.3.2.1).
|
|
!
|
|
! Contributed by Daniel Franke <franke.daniel@gmail.com>
|
|
!
|
|
MODULE class_foo_type
|
|
TYPE :: foo
|
|
INTEGER :: dummy
|
|
END TYPE
|
|
contains
|
|
SUBROUTINE bar_init_set_int(this, value)
|
|
TYPE(foo), INTENT(out) :: this
|
|
integer, intent(in) :: value
|
|
this%dummy = value
|
|
END SUBROUTINE
|
|
END MODULE
|
|
|
|
MODULE class_foo
|
|
USE class_foo_type, ONLY: foo, bar_init_set_int
|
|
|
|
INTERFACE foo_init
|
|
MODULE PROCEDURE foo_init_default ! { dg-error "is not a module procedure" }
|
|
END INTERFACE
|
|
|
|
INTERFACE bar_init
|
|
MODULE PROCEDURE bar_init_default, bar_init_set_int ! These are OK
|
|
END INTERFACE
|
|
|
|
INTERFACE
|
|
SUBROUTINE foo_init_default(this)
|
|
USE class_foo_type, ONLY: foo
|
|
TYPE(foo), INTENT(out) :: this
|
|
END SUBROUTINE
|
|
END INTERFACE
|
|
|
|
contains
|
|
SUBROUTINE bar_init_default(this)
|
|
TYPE(foo), INTENT(out) :: this
|
|
this%dummy = 42
|
|
END SUBROUTINE
|
|
|
|
END MODULE
|
|
! { dg-final { cleanup-modules "class_foo_type class_foo" } }
|