! { dg-do run } ! ! PR fortran/83865 ! ! Test ALLOCATE with SOURCE= of deferred length character, where ! the source-expression is an array of character with length 0. program p implicit none character(:), allocatable :: z(:) character(1) :: cc(4) = "" allocate (z, source=['']) if (len (z) /= 0 .or. size (z) /= 1) stop 1 deallocate (z) allocate (z, source=['','']) if (len (z) /= 0 .or. size (z) /= 2) stop 2 deallocate (z) allocate (z, source=[ character(0) :: 'a','b','c']) if (len (z) /= 0 .or. size (z) /= 3) stop 3 deallocate (z) allocate (z, source=[ character(0) :: cc ]) if (len (z) /= 0 .or. size (z) /= 4) stop 4 deallocate (z) associate (x => f()) if (len (x) /= 0 .or. size (x) /= 1) stop 5 if (x(1) /= '') stop 6 end associate contains function f() result(z) character(:), allocatable :: z(:) allocate (z, source=['']) end function f end