2 ! { dg-options "-fcheck=pointer" }
4 ! Test the fix for PR99602 in which the runtime error,
5 ! "Proc-pointer actual argument 'model' is not associated" was triggered
6 ! by the NULL result from model%get_par_data_ptr ("tea ")
8 ! Contributed by Juergen Reuter <juergen.reuter@desy.de>
12 type(modelpar_real_t
), dimension(:), pointer :: par_real
=> null ()
14 procedure
:: get_par_data_ptr
=> model_data_get_par_data_ptr_name
15 procedure
:: set
=> field_data_set
18 type :: modelpar_real_t
21 end type modelpar_real_t
23 type(modelpar_real_t
), target
:: names(2) = [modelpar_real_t("foo ", 1.0), &
24 modelpar_real_t("bar ", 2.0)]
25 integer :: return_value
= 0
29 function model_data_get_par_data_ptr_name (model
, name
) result (ptr
)
30 class(model_data_t
), intent(in
) :: model
31 character (*), intent(in
) :: name
32 class(modelpar_real_t
), pointer :: ptr
35 do i
= 1, size (model
%par_real
)
36 if (model
%par_real(i
)%name
== name
) ptr
=> model
%par_real(i
)
38 end function model_data_get_par_data_ptr_name
40 subroutine field_data_set (this
, ptr
)
41 class(model_data_t
), intent(inout
) :: this
42 class(modelpar_real_t
), intent(in
), pointer :: ptr
43 if (associated (ptr
)) then
44 return_value
= int (ptr
%value
)
53 class(model_data_t
), allocatable
:: model
54 class(modelpar_real_t
), pointer :: name_ptr
56 allocate (model_data_t
:: model
)
57 model
%par_real
=> names
59 call model
%set (model
%get_par_data_ptr ("bar "))
60 if (return_value
.ne
. 2) stop 1
61 call model
%set (model
%get_par_data_ptr ("tea ")) ! Triggered runtime error
62 if (return_value
.ne
. -1) stop 2