blob: aa7a6621bef4fc48c14aadb88c8208198f63b5d4 [file] [log] [blame]
! { dg-do run }
!
! Tests the fix for pr49954, in which concatenation to deferred length character
! arrays, at best, did not work correctly.
!
!
!
implicit none
character(len=:), allocatable :: a1(:)
character(len=:), allocatable :: a2(:), a3(:)
character(len=:), allocatable :: b1
character(len=:), allocatable :: b2
character(8) :: chr = "IJKLMNOP"
character(48) :: buffer
a1 = ["ABCDEFGH","abcdefgh"]
a2 = "_"//a1//chr//"_"
if (any (a2 .ne. ["_ABCDEFGHIJKLMNOP_","_abcdefghIJKLMNOP_"])) STOP 1
! Check that the descriptor dtype is OK - the array write needs it.
write (buffer, "(2a18)") a2
if (trim (buffer) .ne. "_ABCDEFGHIJKLMNOP__abcdefghIJKLMNOP_") STOP 2
! Make sure scalars survived the fix!
b1 = "ABCDEFGH"
b2 = "_"//b1//chr//"_"
if (b2 .ne. "_ABCDEFGHIJKLMNOP_") STOP 3
! Check the dependency is detected and dealt with by generation of a temporary.
a1 = "?"//a1//"?"
if (any (a1 .ne. ["?ABCDEFGH?","?abcdefgh?"])) STOP 4
! With an array reference...
a1 = "?"//a1(1:2)//"?"
if (any (a1 .ne. ["??ABCDEFGH??","??abcdefgh??"])) STOP 5
!... together with a substring.
a1 = "?"//a1(1:1)(2:4)//"?"
if (any (a1 .ne. ["??AB?"])) STOP 6
contains
end