! { dg-do run } ! { dg-options "-fcheck=all" } ! { dg-shouldfail "above upper bound" } ! ! PR fortran/92050 ! ! module buggy implicit none (type, external) type :: par contains procedure, public :: fun => fun_par end type par type comp class(par), allocatable :: p end type comp type foo type(comp), allocatable :: m(:) end type foo contains function fun_par(this) class(par) :: this integer :: fun_par(1) fun_par = 42 end function fun_par subroutine update_foo(this) class(foo) :: this write(*,*) this%m(1)%p%fun() end subroutine update_foo subroutine bad_update_foo(this) class(foo) :: this write(*,*) this%m(2)%p%fun() end subroutine bad_update_foo end module buggy program main use buggy implicit none (type, external) type(foo) :: x allocate(x%m(1)) allocate(x%m(1)%p) call update_foo(x) call bad_update_foo(x) end program main ! { dg-output "At line 39 of file .*pr92050.f90.*Fortran runtime error: Index '2' of dimension 1 of array 'this%m' above upper bound of 1" }