Files
clang-p2996/flang/test/Semantics/call20.f90
Peter Klausler c6b9df0fbd [flang] Refine procedure compatibility checking
The test for compatible function results needs to be nearly strict
equality of their types, not the usual actual/dummy type compatibility
test used in other situations.  The exceptional case is that assumed
length CHARACTER function results are compatible with explicit length
results of the same kind.  In particular, a function returning a
polymorphic pointer is not compatible with a function returning a
monomorphic pointer even of the same declared type.

Differential Revision: https://reviews.llvm.org/D145094
2023-03-02 09:22:06 -08:00

39 lines
1000 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