! RUN: not %flang -fsyntax-only -pedantic 2>&1 %s | FileCheck %s module m contains subroutine subr1(f) character(5) f print *, f('abcde') end subroutine subroutine subr2(f) character(*) f print *, f('abcde') end subroutine character(5) function explicitLength(x) character(5), intent(in) :: x explicitLength = x end function character(6) function badExplicitLength(x) character(5), intent(in) :: x badExplicitLength = x end function real function notChar(x) character(*), intent(in) :: x notChar = 0 end function end module character(*) function assumedLength(x) character(*), intent(in) :: x assumedLength = x end function subroutine subr3(f) character(5) f print *, f('abcde') end subroutine program main use m external assumedlength character(5) :: assumedlength call subr1(explicitLength) !CHECK: error: Actual argument function associated with procedure dummy argument 'f=' is not compatible: function results have distinct types: CHARACTER(KIND=1,LEN=5_8) vs CHARACTER(KIND=1,LEN=6_8) call subr1(badExplicitLength) call subr1(assumedLength) !CHECK: error: Actual argument function associated with procedure dummy argument 'f=' is not compatible: function results have distinct types: CHARACTER(KIND=1,LEN=5_8) vs REAL(4) call subr1(notChar) call subr2(explicitLength) call subr2(assumedLength) !CHECK: error: Actual argument function associated with procedure dummy argument 'f=' is not compatible: function results have distinct types: CHARACTER(KIND=1,LEN=*) vs REAL(4) call subr2(notChar) call subr3(explicitLength) !CHECK: warning: If the procedure's interface were explicit, this reference would be in error !CHECK: because: Actual argument function associated with procedure dummy argument 'f=' is not compatible: function results have distinct types: CHARACTER(KIND=1,LEN=5_8) vs CHARACTER(KIND=1,LEN=6_8) call subr3(badExplicitLength) call subr3(assumedLength) !CHECK: warning: If the procedure's interface were explicit, this reference would be in error !CHECK: because: Actual argument function associated with procedure dummy argument 'f=' is not compatible: function results have distinct types: CHARACTER(KIND=1,LEN=5_8) vs REAL(4) call subr3(notChar) end program