1! { dg-do compile }
2
3! PR fortran/41177
4! Test for additional errors with type-bound procedure bindings.
5! Namely that non-scalar base objects are rejected for TBP calls which are
6! NOPASS, and that passed-object dummy arguments must be scalar, non-POINTER
7! and non-ALLOCATABLE.
8
9MODULE m
10  IMPLICIT NONE
11
12  TYPE t
13  CONTAINS
14    PROCEDURE, NOPASS :: myproc
15  END TYPE t
16
17  TYPE t2
18  CONTAINS
19    PROCEDURE, PASS :: nonscalar ! { dg-error "must be scalar" }
20    PROCEDURE, PASS :: is_pointer ! { dg-error "must not be POINTER" }
21    PROCEDURE, PASS :: is_allocatable ! { dg-error "must not be ALLOCATABLE" }
22  END TYPE t2
23
24CONTAINS
25
26  SUBROUTINE myproc ()
27  END SUBROUTINE myproc
28
29  SUBROUTINE nonscalar (me)
30    CLASS(t2), INTENT(IN) :: me(:)
31  END SUBROUTINE nonscalar
32
33  SUBROUTINE is_pointer (me)
34    CLASS(t2), POINTER, INTENT(IN) :: me
35  END SUBROUTINE is_pointer
36
37  SUBROUTINE is_allocatable (me)
38    CLASS(t2), ALLOCATABLE, INTENT(IN) :: me
39  END SUBROUTINE is_allocatable
40
41  SUBROUTINE test ()
42    TYPE(t) :: arr(2)
43    CALL arr%myproc () ! { dg-error "must be scalar" }
44  END SUBROUTINE test
45
46END MODULE m
47