comparison gcc/testsuite/gfortran.dg/interface_14.f90 @ 111:04ced10e8804

gcc 7
author kono
date Fri, 27 Oct 2017 22:46:09 +0900
parents
children
comparison
equal deleted inserted replaced
68:561a7518be6b 111:04ced10e8804
1 ! { dg-do compile }
2 ! Checks the fix for a regression PR32526, which was caused by
3 ! the patch for PR31494. The problem here was that the symbol
4 ! 'new' was determined to be ambiguous.
5 !
6 ! Contributed by Michael Richmond <michael.a.richmond@nasa.gov>
7 !
8 module P_Class
9 implicit none
10 private :: init_Personnel
11 interface new
12 module procedure init_Personnel
13 end interface
14 contains
15 subroutine init_Personnel(this)
16 integer, intent (in) :: this
17 print *, "init personnel", this
18 end subroutine init_Personnel
19 end module P_Class
20
21 module S_Class
22 use P_Class
23 implicit none
24 private :: init_Student
25 type Student
26 private
27 integer :: personnel = 1
28 end type Student
29 interface new
30 module procedure init_Student
31 end interface
32 contains
33 subroutine init_Student(this)
34 type (Student), intent (in) :: this
35 call new(this%personnel)
36 end subroutine init_Student
37 end module S_Class
38
39 module T_Class
40 use P_Class
41 implicit none
42 private :: init_Teacher
43 type Teacher
44 private
45 integer :: personnel = 2
46 end type Teacher
47 interface new
48 module procedure init_Teacher
49 end interface
50 contains
51 subroutine init_Teacher(this)
52 type (Teacher), intent (in) :: this
53 call new(this%personnel)
54 end subroutine init_Teacher
55 end module T_Class
56
57 module poly_Class
58 use S_Class
59 use T_Class
60 end module poly_Class
61
62 module D_Class
63 use poly_Class
64 end module D_Class
65
66 use D_Class
67 type (Teacher) :: a
68 type (Student) :: b
69 call new (a)
70 call new (b)
71 end