Mercurial > hg > CbC > CbC_gcc
view gcc/testsuite/gfortran.dg/associated_target_6.f03 @ 158:494b0b89df80 default tip
...
author | Shinji KONO <kono@ie.u-ryukyu.ac.jp> |
---|---|
date | Mon, 25 May 2020 18:13:55 +0900 |
parents | 84e7813d76e9 |
children |
line wrap: on
line source
! { dg-do run } ! Tests the fix for PR67091 in which the first call to associated ! gave a bad result because the 'target' argument was not being ! correctly handled. ! ! Contributed by 'FortranFan' on clf. ! https://groups.google.com/forum/#!topic/comp.lang.fortran/dN_tQA1Mu-I ! module m implicit none private type, public :: t private integer, pointer :: m_i contains private procedure, pass(this), public :: iptr => getptr procedure, pass(this), public :: setptr end type t contains subroutine setptr( this, iptr ) !.. Argument list class(t), intent(inout) :: this integer, pointer, intent(inout) :: iptr this%m_i => iptr return end subroutine setptr function getptr( this ) result( iptr ) !.. Argument list class(t), intent(in) :: this !.. Function result integer, pointer :: iptr iptr => this%m_i end function getptr end module m program p use m, only : t integer, pointer :: i integer, pointer :: j type(t) :: foo !.. create i with some value allocate (i, source=42) call foo%setptr (i) if (.not.associated (i, foo%iptr())) STOP 1 ! Gave bad result. if (.not.associated (foo%iptr(), i)) STOP 2 ! Was OK. j => foo%iptr() if (.not.associated (i, j)) STOP 1! Was OK. end program p