1! { dg-do compile }
2! { dg-options "-c" }
3
4MODULE mod_t
5  type :: t
6    integer :: x
7  end type
8
9  ! user defined operator
10  INTERFACE OPERATOR(.FOO.)
11    MODULE PROCEDURE t_foo
12  END INTERFACE
13
14  INTERFACE OPERATOR(.FOO.)
15    MODULE PROCEDURE t_foo                  ! { dg-error "already present" }
16  END INTERFACE
17
18  INTERFACE OPERATOR(.FOO.)
19    MODULE PROCEDURE t_bar
20  END INTERFACE
21
22  ! intrinsic operator
23  INTERFACE OPERATOR(==)
24    MODULE PROCEDURE t_foo
25  END INTERFACE
26
27  INTERFACE OPERATOR(.eq.)
28    MODULE PROCEDURE t_foo                  ! { dg-error "already present" }
29  END INTERFACE
30
31  INTERFACE OPERATOR(==)
32    MODULE PROCEDURE t_bar
33  END INTERFACE
34
35  INTERFACE OPERATOR(.eq.)
36    MODULE PROCEDURE t_bar                  ! { dg-error "already present" }
37  END INTERFACE
38
39CONTAINS
40  LOGICAL FUNCTION t_foo(this, other)  ! { dg-error "Ambiguous interfaces" }
41    TYPE(t), INTENT(in) :: this, other
42    t_foo = .FALSE.
43  END FUNCTION
44
45  LOGICAL FUNCTION t_bar(this, other)  ! { dg-error "Ambiguous interfaces" }
46    TYPE(t), INTENT(in) :: this, other
47    t_bar = .FALSE.
48  END FUNCTION
49END MODULE
50