! RUN: %python %S/test_errors.py %s %flang_fc1 -pedantic
! Testing 15.6.2.2 point 4 (What function-name refers to depending on the
! presence of RESULT).


module m_no_result
! Without RESULT, it refers to the result object (no recursive
! calls possible)
contains
  ! testing with data object results
  function f1()
    real :: x, f1
    !ERROR: Recursive call to 'f1' requires a distinct RESULT in its declaration
    x = acos(f1())
    f1 = x
    x = acos(f1) !OK
  end function
  function f2(i)
    integer i
    real :: x, f2
    !ERROR: Recursive call to 'f2' requires a distinct RESULT in its declaration
    x = acos(f2(i+1))
    f2 = x
    x = acos(f2) !OK
  end function
  function f3(i)
    integer i
    real :: x, f3(1)
    ! OK reference to array result f1
    x = acos(f3(i+1))
    f3 = x
    x = sum(acos(f3)) !OK
  end function

  ! testing with function pointer results
  function rf()
    real :: rf
  end function
  function f4()
    procedure(rf), pointer :: f4
    f4 => rf
    ! OK call to f4 pointer (rf)
    x = acos(f4())
    !ERROR: Actual argument for 'x=' may not be a procedure
    x = acos(f4)
  end function
  function f5(x)
    real :: x
    interface
      real function rfunc(x)
        real, intent(in) :: x
      end function
    end interface
    procedure(rfunc), pointer :: f5
    f5 => rfunc
    ! OK call to f5 pointer
    x = acos(f5(x+1))
    !ERROR: Actual argument for 'x=' may not be a procedure
    x = acos(f5)
  end function
  ! Sanity test: f18 handles C1560 violation by ignoring RESULT
  !WARNING: The function name should not appear in RESULT; references to 'f6' inside the function will be considered as references to the result only
  function f6() result(f6)
  end function
  !WARNING: The function name should not appear in RESULT; references to 'f7' inside the function will be considered as references to the result only
  function f7() result(f7)
    real :: x, f7
    !ERROR: Recursive call to 'f7' requires a distinct RESULT in its declaration
    x = acos(f7())
    f7 = x
    x = acos(f7) !OK
  end function
end module

module m_with_result
! With RESULT, it refers to the function (recursive calls possible)
contains

  ! testing with data object results
  function f1() result(r)
    real :: r
    r = acos(f1()) !OK, recursive call
    !ERROR: Actual argument for 'x=' may not be a procedure
    x = acos(f1)
  end function
  function f2(i) result(r)
    integer i
    real :: r
    r = acos(f2(i+1)) ! OK, recursive call
    !ERROR: Actual argument for 'x=' may not be a procedure
    r = acos(f2)
  end function
  function f3(i) result(r)
    integer i
    real :: r(1)
    r = acos(f3(i+1)) !OK recursive call
    !ERROR: Actual argument for 'x=' may not be a procedure
    r = sum(acos(f3))
  end function

  ! testing with function pointer results
  function rf()
    real :: rf
  end function
  function f4() result(r)
    real :: x
    procedure(rf), pointer :: r
    r => rf
    !ERROR: Actual argument for 'x=' may not be a procedure
    x = acos(f4()) ! recursive call
    !ERROR: Actual argument for 'x=' may not be a procedure
    x = acos(f4)
    x = acos(r()) ! OK
  end function
  function f5(x) result(r)
    real :: x
    !PORTABILITY: Procedure pointer 'r' should not have an ELEMENTAL intrinsic as its interface
    procedure(acos), pointer :: r
    r => acos
    !ERROR: Actual argument for 'x=' may not be a procedure
    x = acos(f5(x+1)) ! recursive call
    !ERROR: Actual argument for 'x=' may not be a procedure
    x = acos(f5)
    x = acos(r(x+1)) ! OK
  end function

  ! testing that calling the result is also caught
  function f6() result(r)
    real :: x, r
    !ERROR: 'r' is not a callable procedure
    x = r()
  end function
end module

subroutine array_rank_test()
  real :: x(10, 10), y
  !ERROR: Reference to rank-2 object 'x' has 1 subscripts
  y = x(1)
  !ERROR: Reference to rank-2 object 'x' has 3 subscripts
  y = x(1, 2, 3)
end
