blob: 85e18156f906ac62b89251a37f0d846d8992c264 [file] [edit]
! RUN: %flang_fc1 -fsyntax-only %s
module associated_func_call
implicit none
private
public :: type_t
public :: test_function_i
abstract interface
function test_function_i() result(passes)
implicit none
logical passes
end function
end interface
type type_t
private
procedure(test_function_i), pointer, nopass :: test_function_ => null()
contains
generic :: operator(==) => equals
procedure, private :: equals
end type
interface type_t
module function construct(test_function) result(test_description)
implicit none
procedure(test_function_i), intent(in), pointer :: test_function
type(type_t) test_description
end function
end interface
interface
elemental module function equals(lhs, rhs) result(lhs_eq_rhs)
implicit none
class(type_t), intent(in) :: lhs, rhs
logical lhs_eq_rhs
end function
end interface
contains
module procedure construct
test_description%test_function_ => test_function
end procedure
module procedure equals
lhs_eq_rhs = associated(lhs%test_function_, rhs%test_function_)
end procedure
end module associated_func_call