File: functions_48.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 (28 lines) | stat: -rw-r--r-- 611 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
! Testing a function is never called twice as a side effect of creating temporary strings (return slot)
program functions_48
    character(:), allocatable :: ss1

    ss1 = ff(f2(), 10)

    print *, len(ss1)
    if(len(ss1) /= 20) error stop 
  
    contains 
    function ff(x, y) result(str)
      integer :: x
      integer :: y
      character(x + y) :: str
    end function
  
    function f2() result(num)
      integer :: num
      integer, save :: called = 0
      num =  10

      print *, "called"
      
      if(called /= 0) error stop
      
      called = called + 1
    end function
end program