1! { dg-do run } 2! 3! Tests that PR66408 stays fixed. 4! 5! Contributed by <werner.blokbuster@gmail.com> 6! 7module mytest 8 9 implicit none 10 11 type vary 12 character(:), allocatable :: string 13 end type vary 14 15 interface assignment(=) 16 module procedure char_eq_vary 17 end interface assignment(=) 18 19contains 20 21 subroutine char_eq_vary(my_char,my_vary) 22 character(:), allocatable, intent(out) :: my_char 23 type(vary), intent(in) :: my_vary 24 my_char = my_vary%string 25 end subroutine char_eq_vary 26 27end module mytest 28 29 30program thistest 31 32 use mytest, only: vary, assignment(=) 33 implicit none 34 35 character(:), allocatable :: test_char 36 character(14), parameter :: str = 'example string' 37 type(vary) :: test_vary 38 type(vary) :: my_stuff 39 40 41 test_vary%string = str 42 if (test_vary%string .ne. str) call abort 43 44! This previously gave a blank string. 45 my_stuff%string = test_vary 46 if (my_stuff%string .ne. str) call abort 47 48 test_char = test_vary 49 if (test_char .ne. str) call abort 50 51 my_stuff = test_vary 52 if (my_stuff%string .ne. str) call abort 53 54end program thistest 55