39 lines
1,000 B
Fortran
39 lines
1,000 B
Fortran
|
! RUN: %python %S/test_errors.py %s %flang_fc1
|
||
|
|
||
|
! Test that the interface of specific intrinsics passed as dummy arguments
|
||
|
! are correctly validated against actual arguments explicit interface.
|
||
|
|
||
|
intrinsic :: abs, dabs
|
||
|
interface
|
||
|
subroutine foo(f)
|
||
|
interface
|
||
|
function f(x)
|
||
|
real :: f
|
||
|
real, intent(in) :: x
|
||
|
end function
|
||
|
end interface
|
||
|
end subroutine
|
||
|
|
||
|
subroutine foo2(f)
|
||
|
interface
|
||
|
function f(x)
|
||
|
double precision :: f
|
||
|
double precision, intent(in) :: x
|
||
|
end function
|
||
|
end interface
|
||
|
end subroutine
|
||
|
end interface
|
||
|
|
||
|
! OK
|
||
|
call foo(abs)
|
||
|
|
||
|
! OK
|
||
|
call foo2(dabs)
|
||
|
|
||
|
!ERROR: Actual procedure argument has interface incompatible with dummy argument 'f=': function results have distinct types: REAL(4) vs REAL(8)
|
||
|
call foo(dabs)
|
||
|
|
||
|
!ERROR: Actual procedure argument has interface incompatible with dummy argument 'f=': function results have distinct types: REAL(8) vs REAL(4)
|
||
|
call foo2(abs)
|
||
|
end
|