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 72