File: implicit_interface_33.f90

package info (click to toggle)
lfortran 0.61.0-1
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 61,892 kB
  • sloc: cpp: 181,767; f90: 92,175; python: 17,616; ansic: 10,170; yacc: 2,377; sh: 1,444; fortran: 892; makefile: 38; javascript: 15
file content (36 lines) | stat: -rw-r--r-- 821 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
! Test: external subroutine call inside select type block
! with implicit interface compiles without verify error.
module implicit_interface_33_mod
    implicit none
contains
    subroutine process(value, res)
        class(*), intent(in) :: value
        integer, intent(out) :: res
        res = 0
        select type (value)
        type is (integer)
            res = value
        class default
            call set_default(res)
        end select
    end subroutine

    subroutine set_default(x)
        integer, intent(out) :: x
        x = 42
    end subroutine
end module

program implicit_interface_33
    use implicit_interface_33_mod
    implicit none
    integer :: r

    call process(10, r)
    if (r /= 10) error stop

    call process(3.14, r)
    if (r /= 42) error stop

    print *, "ok"
end program