File: allocatable_dummy_descriptor_01.f90

package info (click to toggle)
lfortran 0.60.0-1
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 58,412 kB
  • sloc: cpp: 173,406; f90: 80,491; python: 17,586; ansic: 9,610; yacc: 2,356; sh: 1,401; fortran: 895; makefile: 37; javascript: 15
file content (37 lines) | stat: -rw-r--r-- 847 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
program allocatable_dummy_descriptor_01
  implicit none

  type :: item_t
    integer :: s
  end type item_t

  type :: container_t
    type(item_t), allocatable :: list(:)
  end type container_t

  type(item_t), allocatable :: src(:)
  type(container_t), allocatable :: containers(:)

  allocate(src(1))
  src(1)%s = 123

  allocate(containers(1))
  call get_list(src, containers(1)%list)

  if (.not. allocated(containers(1)%list)) error stop
  if (size(containers(1)%list) /= 1) error stop
  if (containers(1)%list(1)%s /= 123) error stop

contains

  subroutine get_list(src, list)
    type(item_t), allocatable, intent(in) :: src(:)
    type(item_t), allocatable, intent(out) :: list(:)

    if (.not. allocated(src)) return

    allocate(list(size(src)))
    list = src
  end subroutine get_list

end program allocatable_dummy_descriptor_01