! RUN: %python %S/test_errors.py %s %flang_fc1
! C739 If END TYPE is followed by a type-name, the type-name shall be the
! same as that in the corresponding derived-type-stmt.
! C1401 The program-name shall not be included in the end-program-stmt unless
! the optional program-stmt is used. If included, it shall be identical to the
! program-name specified in the program-stmt.
! C1402 If the module-name is specified in the end-module-stmt, it shall be
! identical to the module-name specified in the module-stmt.
! C1413 If a submodule-name appears in the end-submodule-stmt, it shall be
! identical to the one in the submodule-stmt.
! C1414 If a function-name appears in the end-function-stmt, it shall be
! identical to the function-name specified in the function-stmt.
! C1502 If the end-interface-stmt includes a generic-spec, the interface-stmt
! shall specify the same generic-spec
! C1564 If a function-name appears in the end-function-stmt, it shall be
! identical to the function-name specified in the function-stmt.
! C1567 If a submodule-name appears in the end-submodule-stmt, it shall be
! identical to the one in the submodule-stmt.
! C1569 If the module-name is specified in the end-module-stmt, it shall be
! identical to the module-name specified in the module-stmt

block data t1
!ERROR: BLOCK DATA subprogram name mismatch
end block data t2

function t3
!ERROR: FUNCTION name mismatch
end function t4

subroutine t9
!ERROR: SUBROUTINE name mismatch
end subroutine t10

program t13
!ERROR: END PROGRAM name mismatch
end program t14

submodule (mod) t15
!ERROR: SUBMODULE name mismatch
end submodule t16

module t5
  interface t7
  !ERROR: END INTERFACE generic name (t8) does not match generic INTERFACE (t7)
  end interface t8
  abstract interface
  !ERROR: END INTERFACE generic name (t19) may not appear for ABSTRACT INTERFACE
  end interface t19
  interface
  !ERROR: END INTERFACE generic name (t20) may not appear for non-generic INTERFACE
  end interface t20
  interface
  !ERROR: END INTERFACE generic name (assignment(=)) may not appear for non-generic INTERFACE
  end interface assignment(=)
  interface operator(<)
  end interface operator(.LT.) ! not an error
  interface operator(.EQ.)
  end interface operator(==) ! not an error

  type t17
  !ERROR: derived type definition name mismatch
  end type t18

  abstract interface
    subroutine subrFront()
    !ERROR: SUBROUTINE name mismatch
    end subroutine subrBack
    function funcFront(x)
      real, intent(in) :: x
      real funcFront
    !ERROR: FUNCTION name mismatch
    end function funcBack
  end interface

contains
  module procedure t11
  !ERROR: MODULE PROCEDURE name mismatch
  end procedure t12
!ERROR: MODULE name mismatch
end module mox
