view gcc/testsuite/gfortran.dg/transfer_class_2.f90 @ 152:2b5abeee2509

update gcc11
author anatofuz
date Mon, 25 May 2020 07:50:57 +0900
parents 84e7813d76e9
children
line wrap: on
line source

! { dg-do run }
!
! PR 54917: [OOP] TRANSFER on polymorphic variable causes ICE
!
! Contributed by Janus Weil <janus@gcc.gnu.org>

module m
  implicit none
  type test_type
    integer :: i = 0
  contains
    procedure :: ass
    generic :: assignment(=) => ass
  end type
contains
  subroutine ass (a, b)
    class(test_type), intent(out) :: a
    class(test_type), intent(in)  :: b
    a%i = b%i
  end subroutine
end module


program p
  use m
  implicit none

  class(test_type), allocatable :: c
  type(test_type) :: t

  allocate(c)

  ! (1) check CLASS-to-TYPE transfer
  c%i=3
  t = transfer(c, t)
  if (t%i /= 3) STOP 1

  ! (2) check TYPE-to-CLASS transfer
  t%i=4
  c = transfer(t, c)
  if (c%i /= 4) STOP 2

end