view gcc/testsuite/gfortran.dg/spec_expr_7.f90 @ 158:494b0b89df80 default tip

...
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Mon, 25 May 2020 18:13:55 +0900
parents 84e7813d76e9
children
line wrap: on
line source

! { dg-do run }
!
! PR 60777: [F03] RECURSIVE function rejected in specification expression
!
! Contributed by Vladimir Fuka <vladimir.fuka@gmail.com>

module recur
  implicit none
contains

  pure recursive function f(n) result(answer)
    integer, intent(in) :: n
    integer             :: answer
    if (n<2) then
      answer = 1
    else
      answer = f(n-1)*n
    end if
  end function

  pure function usef(n)
    integer,intent(in) :: n
    character(f(n))    :: usef
    usef = repeat('*',f(n))
  end function
end module

program testspecexpr
  use recur
  implicit none
  if (usef(1) /= '*')      STOP 1
  if (usef(2) /= '**')     STOP 2
  if (usef(3) /= '******') STOP 3
end