1! { dg-do run } 2! Tests the check for PR31292, in which the module procedure 3! statement would put the symbol for assign_t in the wrong 4! namespace and this caused the interface checking to fail. 5! 6! Contributed by Tobias Burnus <burnus@gcc.gnu.org> 7! 8module chk_gfortran 9 implicit none 10 type t 11 integer x 12 end type t 13 contains 14 function is_gfortran() 15 logical is_gfortran 16 interface assignment(=) 17 module procedure assign_t 18 end interface assignment(=) 19 type(t) y(3) 20 21 y%x = (/1,2,3/) 22 y = y((/2,3,1/)) 23 is_gfortran = y(3)%x == 1 24 end function is_gfortran 25 26 elemental subroutine assign_t(lhs,rhs) 27 type(t), intent(in) :: rhs 28 type(t), intent(out) :: lhs 29 30 lhs%x = rhs%x 31 end subroutine assign_t 32end module chk_gfortran 33 34program fire 35 use chk_gfortran 36 implicit none 37 if(.not. is_gfortran()) call abort() 38end program fire 39