blob: 14f0c0a79352575e5fbbef5eda6a8877c5093845 [file] [log] [blame]
! { dg-do compile }
!
! Test the fix for PR86242, in which the procedure pointer in 'tester'
! was being copied as if it were an allocatable class component.
!
! Contributed by <cfd@mnet-mail.de>
!
module test
implicit none
private
public :: tester
type :: wrapper
integer(4) :: n
end type wrapper
type :: output
real(8) :: dummy
end type output
type :: tester
class(wrapper), allocatable :: wrap
procedure(proc1), pointer :: ptr => null()
end type tester
abstract interface
function proc1(self) result(uc)
import :: tester, output
class(tester), intent(in) :: self
class(output), allocatable :: uc
end function proc1
end interface
end module test
! Comment #2 from Janus Weil <janus@gcc.gnu.org>
module test1
implicit none
type :: output
end type
type :: tester
integer, allocatable :: wrap
procedure(proc1), pointer, nopass :: ptr
end type
interface ! Originally abstract
function proc1() result(uc)
import :: output
class(output), allocatable :: uc ! Works if a pointer
end function
end interface
! PR82969 from Gerhard Steinmetz <gscfq@t-online.de>
type t
real, allocatable :: x(:)
procedure(f), nopass, pointer :: g
end type
contains
function f() result(z)
class(t), allocatable :: z
end
end module test1