blob: df4dad76c4884cd6b790c23e99d023bbab6ed35f [file] [log] [blame]
! { dg-do compile }
!
! This contains both testcases in the PR
!
! Contributed by Tomas Trnka <trnka@scm.com>
!
! First testcase
module BogusPointerArgError
implicit none
type :: AType
end type
contains
subroutine A ()
class(AType), allocatable :: x
allocate(x)
call B (x) ! Was an error here
end subroutine
subroutine B (y)
class(AType), intent(in) :: y
end subroutine
subroutine C (z)
class(AType), intent(in) :: z(:)
associate (xxx => z(1))
end associate
end subroutine
end module
! Second testcase
module AModule
implicit none
private
public AType
type, abstract :: AType
contains
generic, public :: assignment(=) => Assign
procedure, private :: Assign
end type AType
contains
subroutine Assign(lhs, rhs)
class(AType), intent(inout) :: lhs
class(AType), intent(in) :: rhs
end subroutine
end module AModule
module ICEGetDescriptorField
use AModule
implicit none
contains
subroutine Foo (x)
class(AType), intent(in) :: x(:)
class(AType), allocatable :: y
associate (xxx => x(1))
y = xxx ! Was an ICE here
end associate
end subroutine
end module ICEGetDescriptorField