59 lines
2.2 KiB
Fortran
59 lines
2.2 KiB
Fortran
|
! 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
|