File: procedure_23.f90

package info (click to toggle)
lfortran 0.60.0-2
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 58,416 kB
  • sloc: cpp: 173,406; f90: 80,491; python: 17,586; ansic: 9,610; yacc: 2,356; sh: 1,401; fortran: 895; makefile: 38; javascript: 15
file content (55 lines) | stat: -rw-r--r-- 1,485 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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
module procedure_23_mod
    implicit none

    type :: dependency_config_t
        integer :: id = -1
    end type dependency_config_t

    type, extends(dependency_config_t) :: dependency_node_t
        character(:), allocatable :: name
    end type dependency_node_t

    type :: dependency_tree_t
        integer :: key
    contains
        procedure :: add_dependency
        procedure :: add_dependency_node
        generic   :: add => add_dependency, add_dependency_node
    end type dependency_tree_t

contains

    subroutine add_dependency(this, cfg)
        class(dependency_tree_t), intent(inout) :: this
        type(dependency_config_t), intent(inout)  :: cfg
        cfg%id = 101
        this%key = 2
    end subroutine add_dependency

    subroutine add_dependency_node(this, node)
        class(dependency_tree_t), intent(inout) :: this
        type(dependency_node_t), intent(inout)    :: node
        node%id = 202
        this%key = 3
        node%name = "LFortran"
    end subroutine add_dependency_node

end module procedure_23_mod


program procedure_23
    use procedure_23_mod
    implicit none

    type(dependency_tree_t) :: tree
    type(dependency_config_t) :: cfg
    type(dependency_node_t)   :: node

    call tree%add(cfg)
    if (cfg%id /= 101) error stop
    if (tree%key /= 2) error stop
    call tree%add(node)
    if (node%id /= 202) error stop
    if (node%name /= "LFortran") error stop
    if (tree%key /= 3) error stop
end program procedure_23