1! { dg-do compile }
2
3! Type-bound procedures
4! Test for name collision between type-bound procedures and components.
5
6MODULE testmod
7  IMPLICIT NONE
8
9  TYPE t
10    REAL :: comp
11  CONTAINS
12    PROCEDURE, NOPASS :: comp => proc ! { dg-error "same name as a component" }
13  END TYPE t
14
15  TYPE supert
16    INTEGER :: comp1
17  CONTAINS
18    PROCEDURE, NOPASS :: comp2 => proc
19  END TYPE supert
20
21  TYPE, EXTENDS(supert) :: subt1
22    INTEGER :: comp2 ! { dg-error "same name" }
23  END TYPE subt1
24
25  TYPE, EXTENDS(supert) :: subt2
26  CONTAINS
27    PROCEDURE, NOPASS :: comp1 => proc ! { dg-error "same name as an inherited component" }
28  END TYPE subt2
29
30CONTAINS
31
32  SUBROUTINE proc ()
33  END SUBROUTINE proc
34
35END MODULE testmod
36