string_length_1.f90

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

F90
75
字号
! { dg-do run }! Testcase for PR 31203! We used to create strings with negative lengthsubroutine foo(i)  integer :: i  character(len=i) :: s(2)  if (len(s) < 0) call abort  if (len(s) /= max(i,0)) call abortendfunction gee(i)  integer, intent(in) :: i  character(len=i) :: gee  gee = ""end function geesubroutine s1(i,j)  character(len=i-j) :: a  if (len(a) < 0) call abort()end subroutineprogram test  interface    function gee(i)      integer, intent(in) :: i      character(len=i) :: gee    end function gee  end interface  call foo(2)  call foo(-1)  call s1(1,2)  call s1(-1,-8)  call s1(-8,-1)  if (len(gee(2)) /= 2) call abort  if (len(gee(-5)) /= 0) call abort  if (len(gee(intfunc(3))) /= max(intfunc(3),0)) call abort  if (len(gee(intfunc(2))) /= max(intfunc(2),0)) call abort  if (len(bar(2)) /= 2) call abort  if (len(bar(-5)) /= 0) call abort  if (len(bar(intfunc(3))) /= max(intfunc(3),0)) call abort  if (len(bar(intfunc(2))) /= max(intfunc(2),0)) call abort  if (cow(bar(2)) /= 2) call abort  if (cow(bar(-5)) /= 0) call abort  if (cow(bar(intfunc(3))) /= max(intfunc(3),0)) call abort  if (cow(bar(intfunc(2))) /= max(intfunc(2),0)) call abortcontains  function bar(i)    integer, intent(in) :: i    character(len=i) :: bar      bar = ""  end function bar  function cow(c)    character(len=*), intent(in) :: c    integer :: cow    cow = len(c)  end function cow  pure function intfunc(i)    integer, intent(in) :: i    integer :: intfunc    intfunc = 2*i-5  end function intfuncend program test

⌨️ 快捷键说明

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