blob: 2bd143ff858a203fbfcaa0ac904eb71195a1fb60 [file] [log] [blame]
! { 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 "does not come from a module" }
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" } }