5 ! Contributed by Fran Martinez Fadrique
11 generic :: operator(==) => t_equal_i, i_equal_t ! OK
12 procedure, private :: t_equal_i
13 procedure, private, pass(t) :: i_equal_t
16 function t_equal_i (t, i) result(res)
17 class(t_test), intent(in) :: t
18 integer, intent(in) :: i
21 print *, 't_equal_i', t%i, i
23 end function t_equal_i
25 function i_equal_t (i, t) result(res)
26 integer, intent(in) :: i
27 class(t_test), intent(in) :: t
30 print *, 'i_equal_t', i, t%i
32 end function i_equal_t
39 generic :: gen => t2_equal_i, i_equal_t2 ! { dg-error "'t2_equal_i' and 'i_equal_t2' for GENERIC 'gen' at .1. are ambiguous" }
40 procedure, private :: t2_equal_i
41 procedure, private, pass(t) :: i_equal_t2
44 function t2_equal_i (t, i) result(res)
45 class(t2_test), intent(in) :: t
46 integer, intent(in) :: i
49 print *, 't2_equal_i', t%i, i
51 end function t2_equal_i
53 function i_equal_t2 (i, t) result(res)
54 integer, intent(in) :: i
55 class(t2_test), intent(in) :: t
58 print *, 'i_equal_t2', i, t%i
60 end function i_equal_t2
63 ! { dg-final { cleanup-modules "m_test m_test2" } }