! RUN: %python %S/test_errors.py %s %flang_fc1 ! Tests attempts at forward references to local names in a FUNCTION prefix ! This case is not an error, but will elicit bogus errors if the ! result type of the function is badly resolved. module m1 type t1 sequence integer not_m end type contains type(t1) function foo(n) integer, intent(in) :: n type t1 sequence integer m end type foo%m = n end function end module subroutine s1 use :: m1, only: foo type t1 sequence integer m end type type(t1) x x = foo(234) print *, x end subroutine module m2 integer, parameter :: k = kind(1.e0) contains real(kind=k) function foo(n) integer, parameter :: k = kind(1.d0) integer, intent(in) :: n foo = n end function end module subroutine s2 use :: m2, only: foo !If we got the type of foo right, this declaration will fail !due to an attempted division by zero. !WARNING: INTEGER(4) division by zero !ERROR: Must be a constant value integer, parameter :: test = 1 / (kind(foo(1)) - kind(1.d0)) end subroutine module m3 real(kind=kind(1.0e0)) :: x contains real(kind=kind(x)) function foo(x) real(kind=kind(1.0d0)) x !WARNING: INTEGER(4) division by zero !ERROR: Must be a constant value integer, parameter :: test = 1 / (kind(foo) - kind(1.d0)) foo = n end function end module module m4 contains real(n) function foo(x) !ERROR: 'foo' is not an object that can appear in an expression integer, parameter :: n = kind(foo) real(n), intent(in) :: x !ERROR: 'x' is not an object that can appear in an expression foo = x end function end module