xref: /llvm-project/flang/test/Semantics/bindings04.f90 (revision a3c6a7d53d21e09a45171c47456a33d89bc47738)
1*a3c6a7d5SPeter Klausler! RUN: %python %S/test_errors.py %s %flang_fc1
2*a3c6a7d5SPeter Klauslermodule m1
3*a3c6a7d5SPeter Klausler  type t1
4*a3c6a7d5SPeter Klausler   contains
5*a3c6a7d5SPeter Klausler    procedure :: tbp => s1
6*a3c6a7d5SPeter Klausler  end type
7*a3c6a7d5SPeter Klausler  type, extends(t1) :: t1e
8*a3c6a7d5SPeter Klausler   contains
9*a3c6a7d5SPeter Klausler    !ERROR: A type-bound procedure and its override must have compatible interfaces
10*a3c6a7d5SPeter Klausler    procedure :: tbp => s1e
11*a3c6a7d5SPeter Klausler  end type
12*a3c6a7d5SPeter Klausler contains
13*a3c6a7d5SPeter Klausler  subroutine s1(x)
14*a3c6a7d5SPeter Klausler    class(t1) :: x
15*a3c6a7d5SPeter Klausler  end
16*a3c6a7d5SPeter Klausler  subroutine s1e(x)
17*a3c6a7d5SPeter Klausler    class(t1e), intent(in out) :: x
18*a3c6a7d5SPeter Klausler  end
19*a3c6a7d5SPeter Klauslerend
20*a3c6a7d5SPeter Klausler
21*a3c6a7d5SPeter Klauslermodule m2
22*a3c6a7d5SPeter Klausler  type t1
23*a3c6a7d5SPeter Klausler   contains
24*a3c6a7d5SPeter Klausler    procedure :: tbp => s1
25*a3c6a7d5SPeter Klausler  end type
26*a3c6a7d5SPeter Klausler  type, extends(t1) :: t1e
27*a3c6a7d5SPeter Klausler   contains
28*a3c6a7d5SPeter Klausler    !ERROR: A type-bound procedure and its override must have compatible interfaces
29*a3c6a7d5SPeter Klausler    procedure :: tbp => s1e
30*a3c6a7d5SPeter Klausler  end type
31*a3c6a7d5SPeter Klausler contains
32*a3c6a7d5SPeter Klausler  subroutine s1(x)
33*a3c6a7d5SPeter Klausler    class(t1), intent(in out) :: x
34*a3c6a7d5SPeter Klausler  end
35*a3c6a7d5SPeter Klausler  subroutine s1e(x)
36*a3c6a7d5SPeter Klausler    class(t1e) :: x
37*a3c6a7d5SPeter Klausler  end
38*a3c6a7d5SPeter Klauslerend
39*a3c6a7d5SPeter Klausler
40*a3c6a7d5SPeter Klauslermodule m3
41*a3c6a7d5SPeter Klausler  type t1
42*a3c6a7d5SPeter Klausler   contains
43*a3c6a7d5SPeter Klausler    procedure, nopass :: tbp => s1
44*a3c6a7d5SPeter Klausler  end type
45*a3c6a7d5SPeter Klausler  type, extends(t1) :: t1e
46*a3c6a7d5SPeter Klausler   contains
47*a3c6a7d5SPeter Klausler   !ERROR: A NOPASS type-bound procedure and its override must have identical interfaces
48*a3c6a7d5SPeter Klausler    procedure, nopass :: tbp => s1e
49*a3c6a7d5SPeter Klausler  end type
50*a3c6a7d5SPeter Klausler contains
51*a3c6a7d5SPeter Klausler  subroutine s1(x)
52*a3c6a7d5SPeter Klausler    real, intent(in out) :: x
53*a3c6a7d5SPeter Klausler  end
54*a3c6a7d5SPeter Klausler  subroutine s1e(x)
55*a3c6a7d5SPeter Klausler    real :: x
56*a3c6a7d5SPeter Klausler  end
57*a3c6a7d5SPeter Klauslerend
58