https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66408

            Bug ID: 66408
           Summary: deferred-length character & overloaded assignment
           Product: gcc
           Version: 5.1.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: fortran
          Assignee: unassigned at gcc dot gnu.org
          Reporter: werner.blokbuster at gmail dot com
  Target Milestone: ---

The following code:

module mytest

    implicit none

    type vary
        character(:), allocatable :: string
    end type vary

    interface assignment(=)
        module procedure char_eq_vary
    end interface assignment(=)

contains

    subroutine char_eq_vary(my_char,my_vary)
        character(:), allocatable, intent(out) :: my_char
        type(vary), intent(in) :: my_vary
        my_char = my_vary%string
    end subroutine char_eq_vary

end module mytest


program thistest

    use mytest, only: vary, assignment(=)
    implicit none

    character(:), allocatable :: test_char
    type(vary) :: test_vary
    type(vary) :: my_stuff


    test_vary%string = 'example string'
    write(*,*) test_vary%string

    my_stuff%string = test_vary
    write(*,*) my_stuff%string

    test_char = test_vary
    write(*,*) test_char

    my_stuff = test_vary
    write(*,*) my_stuff%string

end program thistest


outputs

 example string

 example string
 example string

- I was expecting the third write to also give " example string".

I also get the same output with version 4.9.2.

Reply via email to