1! { dg-do run } 2! 3! Test contributed by Valery Weber <valeryweber@hotmail.com> 4 5module mod 6 7 TYPE, PUBLIC :: base_type 8 END TYPE base_type 9 10 TYPE, PUBLIC :: dict_entry_type 11 CLASS( * ), ALLOCATABLE :: key 12 CLASS( * ), ALLOCATABLE :: val 13 END TYPE dict_entry_type 14 15 16contains 17 18 SUBROUTINE dict_put ( this, key, val ) 19 CLASS(dict_entry_type), INTENT(INOUT) :: this 20 CLASS(base_type), INTENT(IN) :: key, val 21 INTEGER :: istat 22 ALLOCATE( this%key, SOURCE=key, STAT=istat ) 23 end SUBROUTINE dict_put 24end module mod 25 26program test 27 use mod 28 type(dict_entry_type) :: t 29 type(base_type) :: a, b 30 call dict_put(t, a, b) 31 32 if (.NOT. allocated(t%key)) call abort() 33 select type (x => t%key) 34 type is (base_type) 35 class default 36 call abort() 37 end select 38 deallocate(t%key) 39end 40 41