! RUN: %python %S/test_errors.py %s %flang_fc1 ! C1568 The procedure-name shall have been declared to be a separate module ! procedure in the containing program unit or an ancestor of that program unit. ! C1547 MODULE shall appear only in the function-stmt or subroutine-stmt of a ! module subprogram or of a nonabstract interface body that is declared in the ! scoping unit of a module or submodule. module m1 interface module subroutine sub1(arg1) integer, intent(inout) :: arg1 end subroutine module integer function fun1() end function end interface type t end type integer i end module submodule(m1) s1 contains !ERROR: 'missing1' was not declared a separate module procedure module procedure missing1 end !ERROR: 'missing2' was not declared a separate module procedure module subroutine missing2 end !ERROR: 't' was not declared a separate module procedure module procedure t end !ERROR: 'i' was not declared a separate module procedure module subroutine i end end submodule module m2 interface module subroutine sub1(arg1) integer, intent(inout) :: arg1 end subroutine module integer function fun1() end function end interface type t end type !ERROR: Declaration of 'i' conflicts with its use as module procedure integer i contains !ERROR: 'missing1' was not declared a separate module procedure module procedure missing1 end !ERROR: 'missing2' was not declared a separate module procedure module subroutine missing2 end !ERROR: 't' is already declared in this scoping unit !ERROR: 't' was not declared a separate module procedure module procedure t end !ERROR: 'i' was not declared a separate module procedure module subroutine i end end module ! Separate module procedure defined in same module as declared module m3 interface module subroutine sub end subroutine end interface contains module procedure sub end procedure end module ! Separate module procedure defined in a submodule module m4 interface module subroutine a end subroutine module subroutine b end subroutine end interface end module submodule(m4) s4a contains module procedure a end procedure end submodule submodule(m4:s4a) s4b contains module procedure b end procedure end !ERROR: 'c1547' is a MODULE procedure which must be declared within a MODULE or SUBMODULE real module function c1547() func = 0.0 end function