1! { dg-do compile } 2! 3! Contributed by Hossein Talebi <talebi.hossein@gmail.com> 4! 5! 6Module part_base2_class 7 8 implicit none 9 10 type :: ty_moc1 11 integer l 12 end type ty_moc1 13 integer,parameter :: MAX_NUM_ELEMENT_TYPE=32 14 15 type :: ty_element_index2 16 17 class(ty_moc1),allocatable :: element 18 class(ty_moc1),allocatable :: element_th(:) 19 20 endtype ty_element_index2 21 22 type :: ty_part_base2 23 type(ty_element_index2)::element_index(MAX_NUM_ELEMENT_TYPE) 24 end type ty_part_base2 25 26 class(ty_part_base2),allocatable :: part_tmp_obj 27 28End Module part_base2_class 29 30 use part_base2_class 31 allocate (part_tmp_obj) 32 allocate (part_tmp_obj%element_index(1)%element, source = ty_moc1(1)) 33 allocate (part_tmp_obj%element_index(1)%element_th(1), source = ty_moc1(99)) 34 allocate (part_tmp_obj%element_index(32)%element_th(1), source = ty_moc1(999)) 35 36 do i = 1, MAX_NUM_ELEMENT_TYPE 37 if (allocated (part_tmp_obj%element_index(i)%element_th)) then 38 print *, i, part_tmp_obj%element_index(i)%element_th(1)%l 39 end if 40 end do 41 deallocate (part_tmp_obj) 42 43end 44