! RUN: %python %S/test_errors.py %s %flang_fc1
! Tests valid and invalid ENTRY statements

module m1
  !ERROR: ENTRY 'badentryinmodule' may appear only in a subroutine or function
  entry badentryinmodule
  interface
    module subroutine separate
    end subroutine
  end interface
 contains
  subroutine modproc
    entry entryinmodproc ! ok
    block
      !ERROR: ENTRY may not appear in an executable construct
      entry badentryinblock ! C1571
    end block
    if (.true.) then
      !ERROR: ENTRY may not appear in an executable construct
      entry ibadconstr() ! C1571
    end if
   contains
    subroutine internal
      !ERROR: ENTRY may not appear in an internal subprogram
      entry badentryininternal ! C1571
    end subroutine
  end subroutine
end module

submodule(m1) m1s1
 contains
  module procedure separate
    !ERROR: ENTRY 'badentryinsmp' may not appear in a separate module procedure
    entry badentryinsmp ! 1571
  end procedure
end submodule

program main
  !ERROR: ENTRY 'badentryinprogram' may appear only in a subroutine or function
  entry badentryinprogram ! C1571
end program

block data bd1
  !ERROR: ENTRY 'badentryinbd' may appear only in a subroutine or function
  entry badentryinbd ! C1571
end block data

subroutine subr(goodarg1)
  real, intent(in) :: goodarg1
  real :: goodarg2
  !ERROR: A dummy argument may not also be a named constant
  integer, parameter :: badarg1 = 1
  type :: badarg2
  end type
  common /badarg3/ x
  namelist /badarg4/ x
  !ERROR: A dummy argument must not be initialized
  integer :: badarg5 = 2
  entry okargs(goodarg1, goodarg2)
  !ERROR: RESULT(br1) may appear only in a function
  entry badresult() result(br1) ! C1572
  !ERROR: 'badarg2' is already declared in this scoping unit
  !ERROR: 'badarg4' is already declared in this scoping unit
  entry badargs(badarg1,badarg2,badarg3,badarg4,badarg5)
end subroutine

function ifunc()
  integer :: ifunc
  integer :: ibad1
  type :: ibad2
  end type
  save :: ibad3
  real :: weird1
  double precision :: weird2
  complex :: weird3
  logical :: weird4
  character :: weird5
  type(ibad2) :: weird6
  integer :: iarr(1)
  integer, allocatable :: alloc
  integer, pointer :: ptr
  entry iok1()
  !ERROR: 'ibad1' is already declared in this scoping unit
  entry ibad1() result(ibad1res) ! C1570
  !ERROR: 'ibad2' is already declared in this scoping unit
  !ERROR: Procedure 'ibad2' is referenced before being sufficiently defined in a context where it must be so
  entry ibad2()
  !ERROR: ENTRY in a function may not have an alternate return dummy argument
  entry ibadalt(*) ! C1573
  !ERROR: ENTRY cannot have RESULT(ifunc) that is not a variable
  entry isameres() result(ifunc) ! C1574
  entry iok()
  !ERROR: Explicit RESULT('iok') of function 'isameres2' cannot have the same name as a distinct ENTRY into the same scope
  entry isameres2() result(iok) ! C1574
  !ERROR: Procedure 'iok2' is referenced before being sufficiently defined in a context where it must be so
  !ERROR: Explicit RESULT('iok2') of function 'isameres3' cannot have the same name as a distinct ENTRY into the same scope
  entry isameres3() result(iok2) ! C1574
  !ERROR: 'iok2' is already declared in this scoping unit
  entry iok2()
  !These cases are all acceptably incompatible
  entry iok3() result(weird1)
  entry iok4() result(weird2)
  entry iok5() result(weird3)
  entry iok6() result(weird4)
  !ERROR: Result of ENTRY is not compatible with result of containing function
  entry ibadt1() result(weird5)
  !ERROR: Result of ENTRY is not compatible with result of containing function
  entry ibadt2() result(weird6)
  !ERROR: Result of ENTRY is not compatible with result of containing function
  entry ibadt3() result(iarr)
  !ERROR: Result of ENTRY is not compatible with result of containing function
  entry ibadt4() result(alloc)
  !ERROR: Result of ENTRY is not compatible with result of containing function
  entry ibadt5() result(ptr)
  !ERROR: Cannot call function 'isubr' like a subroutine
  call isubr
  entry isubr()
  continue ! force transition to execution part
  entry implicit()
  implicit = 666 ! ok, just ensure that it works
  !ERROR: Cannot call function 'implicit' like a subroutine
  call implicit
end function

function chfunc() result(chr)
  character(len=1) :: chr
  character(len=2) :: chr1
  !ERROR: Result of ENTRY is not compatible with result of containing function
  entry chfunc1() result(chr1)
end function

subroutine externals
  !ERROR: 'subr' is already defined as a global identifier
  entry subr
  !ERROR: 'ifunc' is already defined as a global identifier
  entry ifunc
  !ERROR: 'm1' is already defined as a global identifier
  entry m1
  !ERROR: 'iok1' is already defined as a global identifier
  entry iok1
  integer :: ix
  !ERROR: Cannot call subroutine 'iproc' like a function
  !ERROR: Function result characteristics are not known
  ix = iproc()
  entry iproc
end subroutine

module m2
  !ERROR: EXTERNAL attribute not allowed on 'm2entry2'
  external m2entry2
 contains
  subroutine m2subr1
    entry m2entry1 ! ok
    entry m2entry2 ! NOT ok
    entry m2entry3 ! ok
  end subroutine
end module

subroutine usem2
  use m2
  interface
    subroutine simplesubr
    end subroutine
  end interface
  procedure(simplesubr), pointer :: p
  p => m2subr1 ! ok
  p => m2entry1 ! ok
  p => m2entry2 ! ok
  p => m2entry3 ! ok
end subroutine

module m3
  interface
    module subroutine m3entry1
    end subroutine
  end interface
 contains
  subroutine m3subr1
    !ERROR: 'm3entry1' is already declared in this scoping unit
    entry m3entry1
  end subroutine
end module

module m4
  interface generic1
    module procedure m4entry1
  end interface
  interface generic2
    module procedure m4entry2
  end interface
  interface generic3
    module procedure m4entry3
  end interface
 contains
  subroutine m4subr1
    entry m4entry1 ! in implicit part
    integer :: n = 0
    entry m4entry2 ! in specification part
    n = 123
    entry m4entry3 ! in executable part
    print *, n
  end subroutine
end module

function inone
  implicit none
  integer :: inone
  !ERROR: No explicit type declared for 'implicitbad1'
  entry implicitbad1
  inone = 0 ! force transition to execution part
  !ERROR: No explicit type declared for 'implicitbad2'
  entry implicitbad2
end

module m5
 contains
  real function setBefore
    ent = 1.0
    entry ent
  end function
end module

module m6
 contains
  recursive subroutine passSubr
    call foo(passSubr)
    call foo(ent1)
    entry ent1
    call foo(ent1)
  end subroutine
  recursive function passFunc1
    !ERROR: Actual argument associated with procedure dummy argument 'e=' is not a procedure
    call foo(passFunc1)
    !ERROR: Actual argument associated with procedure dummy argument 'e=' is not a procedure
    call foo(ent2)
    entry ent2
    !ERROR: Actual argument associated with procedure dummy argument 'e=' is not a procedure
    call foo(ent2)
  end function
  recursive function passFunc2() result(res)
    call foo(passFunc2)
    call foo(ent3)
    entry ent3() result(res)
    call foo(ent3)
  end function
  subroutine foo(e)
    external e
  end subroutine
end module

!ERROR: 'q' appears more than once as a dummy argument name in this subprogram
subroutine s7(q,q)
  !ERROR: Dummy argument 'x' may not be used before its ENTRY statement
  call x
  entry foo(x)
  !ERROR: 's7' may not appear as a dummy argument name in this ENTRY statement
  entry bar(s7)
  !ERROR: 'z' appears more than once as a dummy argument name in this ENTRY statement
  entry baz(z,z)
end

!ERROR: Explicit RESULT('f8e1') of function 'f8' cannot have the same name as a distinct ENTRY into the same scope
function f8() result(f8e1)
  entry f8e1()
  entry f8e2() result(f8e2) ! ok
  !ERROR: Explicit RESULT('f8e1') of function 'f8e3' cannot have the same name as a distinct ENTRY into the same scope
  entry f8e3() result(f8e1)
  !ERROR: ENTRY cannot have RESULT(f8) that is not a variable
  entry f8e4() result(f8)
end
