1! { dg-do run } 2! 3! PR 63733: [4.8/4.9/5 Regression] [OOP] wrong resolution for OPERATOR generics 4! 5! Original test case from Alberto F. Mart��n Huertas <amartin@cimne.upc.edu> 6! Slightly modified by Salvatore Filippone <sfilippone@uniroma2.it> 7! Further modified by Janus Weil <janus@gcc.gnu.org> 8 9module overwrite 10 type parent 11 contains 12 procedure :: sum => sum_parent 13 generic :: operator(+) => sum 14 end type 15 16 type, extends(parent) :: child 17 contains 18 procedure :: sum => sum_child 19 end type 20 21contains 22 23 integer function sum_parent(op1,op2) 24 implicit none 25 class(parent), intent(in) :: op1, op2 26 sum_parent = 0 27 end function 28 29 integer function sum_child(op1,op2) 30 implicit none 31 class(child) , intent(in) :: op1 32 class(parent), intent(in) :: op2 33 sum_child = 1 34 end function 35 36end module 37 38program drive 39 use overwrite 40 implicit none 41 42 type(parent) :: m1, m2 43 class(parent), pointer :: mres 44 type(child) :: h1, h2 45 class(parent), pointer :: hres 46 47 if (m1 + m2 /= 0) call abort() 48 if (h1 + m2 /= 1) call abort() 49 if (h1%sum(h2) /= 1) call abort() 50 51end 52 53! { dg-final { cleanup-modules "overwrite" } } 54