mirror of
https://github.com/autc04/Retro68.git
synced 2024-06-28 11:30:19 +00:00
39 lines
977 B
Fortran
39 lines
977 B
Fortran
! { dg-do run }
|
|
!
|
|
! Test the fix for PR58618 by checking that substring associate targets
|
|
! work correctly.
|
|
!
|
|
! Contributed by Vladimir Fuka <vladimir.fuka@gmail.com>
|
|
!
|
|
character(5) :: s(2) = ['abcde','fghij']
|
|
character (6), pointer :: ptr => NULL()
|
|
character (6), target :: tgt = 'lmnopq'
|
|
|
|
associate (x=>s(2)(3:4))
|
|
if (x .ne. 'hi') stop 1
|
|
x = 'uv'
|
|
end associate
|
|
if (any (s .ne. ['abcde','fguvj'])) stop 2
|
|
|
|
! Unity based substrings are cast differently. */
|
|
associate (x=>s(1)(1:4))
|
|
if (x .ne. 'abcd') stop 3
|
|
x(2:3) = 'wx'
|
|
end associate
|
|
if (any (s .ne. ['awxde','fguvj'])) stop 4
|
|
|
|
! Make sure that possible misidentifications do not occur.
|
|
ptr => tgt
|
|
associate (x=>ptr)
|
|
if (x .ne. 'lmnopq') stop 5
|
|
x(2:3) = 'wx'
|
|
end associate
|
|
if (tgt .ne. 'lwxopq') stop 6
|
|
|
|
associate (x=>ptr(5:6))
|
|
if (x .ne. 'pq') stop 7
|
|
x = 'wx'
|
|
end associate
|
|
if (tgt .ne. 'lwxowx') stop 8
|
|
end
|