blob: c176fd99f3e5c810e9ce5a1bdd1476803a859a50 [file] [log] [blame]
! { dg-do run }
!
! Test the fix for PR65677, in which the dependency was missed and
! the string length of 'text' was decremented twice. The rhs string
! length is now fixed after the function call so that the dependency
! on the length of 'text' is removed for later evaluations.
!
!Contributed by John <jwmwalrus@gmail.com>
!
module mod1
implicit none
contains
subroutine getKeyword(string, keyword, rest, use_adjustl)
character(:), allocatable, intent(IN) :: string
character(:), allocatable, intent(OUT) :: keyword, rest
integer :: idx
character(:), allocatable :: text
logical :: use_adjustl
keyword = ''
rest = ''
text = string
if (use_adjustl) then
text = ADJUSTL(text(2:)) ! Note dependency.
else
text = text(2:) ! Check the old workaround.
endif
idx = INDEX(text, ' ')
if (idx == 0) then
keyword = TRIM(text)
else
keyword = text(:idx-1)
rest = TRIM(ADJUSTL(text(idx+1:)))
endif
end subroutine
end module mod1
use mod1
implicit none
character(:), allocatable :: line, keyword, rest
line = '@HERE IT IS'
call getKeyword(line, keyword, rest, use_adjustl = .true.)
if (keyword .ne. 'HERE') stop 1
if (rest .ne. 'IT IS') stop 2
deallocate (line, keyword, rest)
line = '@HERE IT IS'
call getKeyword(line, keyword, rest, use_adjustl = .false.)
if (keyword .ne. 'HERE') stop 3
if (rest .ne. 'IT IS') stop 4
deallocate (line, keyword, rest)
end