! RUN: %S/test_errors.sh %s %t %f18 ! Resolve generic based on number of arguments subroutine s1 interface f real function f1(x) optional :: x end real function f2(x, y) end end interface z = f(1.0) z = f(1.0, 2.0) !ERROR: No specific procedure of generic 'f' matches the actual arguments z = f(1.0, 2.0, 3.0) end ! Elemental and non-element function both match: non-elemental one should be used subroutine s2 interface f logical elemental function f1(x) intent(in) :: x end real function f2(x) real :: x(10) end end interface real :: x, y(10), z logical :: a a = f(1.0) !ERROR: No intrinsic or user-defined ASSIGNMENT(=) matches operand types LOGICAL(4) and REAL(4) a = f(y) end ! Resolve named operator subroutine s3 interface operator(.foo.) pure integer(8) function f_real(x, y) real, intent(in) :: x, y end pure integer(8) function f_integer(x, y) integer, intent(in) :: x, y end end interface logical :: a, b, c x = y .foo. z ! OK: f_real i = j .foo. k ! OK: f_integer !ERROR: No intrinsic or user-defined .FOO. matches operand types LOGICAL(4) and LOGICAL(4) a = b .foo. c end ! Generic resolves successfully but error analyzing call module m4 real, protected :: x real :: y interface s pure subroutine s1(x) real, intent(out) :: x end subroutine s2(x, y) real :: x, y end end interface end subroutine s4a use m4 real :: z !OK call s(z) end subroutine s4b use m4 !ERROR: Actual argument associated with INTENT(OUT) dummy argument 'x=' must be definable call s(x) end pure subroutine s4c use m4 !ERROR: Actual argument associated with INTENT(OUT) dummy argument 'x=' must be definable call s(y) end