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 + -
显示快捷键?