! { dg-do run }
!
! PR 51976: [F2003] Support deferred-length character components of derived types (allocatable string length)
!
! Contributed by Tobias Burnus  <burnus@gcc.gnu.org>

  type t
    character(len=:), allocatable :: str_comp
    character(len=:), allocatable :: str_comp1
  end type t
  type(t) :: x
  type(t), allocatable, dimension(:) :: array

  ! Check scalars
  allocate (x%str_comp, source = "abc")
  call check (x%str_comp, "abc")
  deallocate (x%str_comp)
  allocate (x%str_comp, source = "abcdefghijklmnop")
  call check (x%str_comp, "abcdefghijklmnop")
  x%str_comp = "xyz"
  call check (x%str_comp, "xyz")
  x%str_comp = "abcdefghijklmnop"
  x%str_comp1 = "lmnopqrst"
  call foo (x%str_comp1, "lmnopqrst")
  call bar (x, "abcdefghijklmnop", "lmnopqrst")

  ! Check arrays and structure constructors
  allocate (array(2), source = [t("abcedefg","hi"), t("jkl","mnop")])
  call check (array(1)%str_comp, "abcedefg")
  call check (array(1)%str_comp1, "hi")
  call check (array(2)%str_comp, "jkl")
  call check (array(2)%str_comp1, "mnop")
  deallocate (array)
  allocate (array(3), source = [x, x, x])
  array(2)%str_comp = "blooey"
  call bar (array(1), "abcdefghijklmnop", "lmnopqrst")
  call bar (array(2), "blooey", "lmnopqrst")
  call bar (array(3), "abcdefghijklmnop", "lmnopqrst")

contains

  subroutine foo (chr1, chr2)
    character (*) :: chr1, chr2
    call check (chr1, chr2)
  end subroutine

  subroutine bar (a, chr1, chr2)
    character (*) :: chr1, chr2
    type(t) :: a
    call check (a%str_comp, chr1)
    call check (a%str_comp1, chr2)
  end subroutine

  subroutine check (chr1, chr2)
    character (*) :: chr1, chr2
    if (len(chr1) .ne. len (chr2)) STOP 1
    if (chr1 .ne. chr2) STOP 2
  end subroutine

end
