blob: 39eeb7bcf4a3c56a71c3f18e7a7e260254904901 [file] [log] [blame]
! { dg-do run }
!
! Test the fix for PR79072. The original problem was that an ICE
! would occur in the select type construct. On fixing that, it was
! found that the string length was not being transferred in the
! pointer assignment in the main program.
!
! Contributed by Neil Carlson <neil.n.carlson@gmail.com>
!
function foo(string)
class(*), pointer :: foo
character(3), target :: string
foo => string
select type (foo)
type is (character(*))
if (foo .ne. 'foo') STOP 1
foo = 'bar'
end select
end function
interface
function foo(string)
class(*), pointer :: foo
character(3), target :: string
end function
end interface
class(*), pointer :: res
character(3), target :: string = 'foo'
res => foo (string)
select type (res)
type is (character(*))
if (res .ne. 'bar') STOP 2
end select
if (string .ne. 'bar') STOP 3
end