recursive_reference_1.f90

来自「用于进行gcc测试」· F90 代码 · 共 51 行

F90
51
字号
! { dg-do compile }! Tests the patch for PR27613, in which directly recursive, scalar! functions were generating an "unclassifiable statement" error! for the recursive statement(s).  This was subsequently determined! to be wrong code and the error on 'bad_stuff' was removed.! See 12.5.2.1 of the standard and PR30876.!! Based on PR testcase by Nicolas Bock  <nicolasbock@gmail.com>!program test  if (original_stuff(1) .ne. 5) call abort ()  if (scalar_stuff(-4) .ne. 10) call abort ()  if (any (array_stuff((/-19,-30/)) .ne. (/25,25/))) call abort ()contains  recursive function original_stuff(n)    integer :: original_stuff    integer :: n    original_stuff = 1    if(n < 5) then      original_stuff = original_stuff + original_stuff (n+1) ! { dg-error "name of a recursive function" }    endif  end function original_stuff  recursive function scalar_stuff(n) result (tmp)    integer :: tmp    integer :: n    tmp = 1    if(n < 5) then      tmp = tmp + scalar_stuff (n+1)    endif  end function scalar_stuff  recursive function array_stuff(n) result (tmp)    integer :: tmp (2)    integer :: n (2)    tmp = 1    if(maxval (n) < 5) then      tmp = tmp + array_stuff (n+1)    endif  end function array_stuff  recursive function bad_stuff(n)    integer :: bad_stuff (2)    integer :: n(2)    bad_stuff = 1    if(maxval (n) < 5) then      bad_stuff = bad_stuff + bad_stuff (n+1)    endif  end function bad_stuffend program test

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?