result_in_spec_1.f90

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

F90
53
字号
! { dg-do run }! Tests the check for PR31215, in which actual/formal interface ! was not being correctly handled for the size of 'r' because! it is a result.!! Contributed by Joost VandeVondele <jv244@cam.ac.uk>!module test1  implicit nonecontains  character(f(x)) function test2(x) result(r)    implicit integer (x)    dimension r(len(r)+1)    integer, intent(in) :: x    interface      pure function f(x)        integer, intent(in) :: x        integer f      end function f    end interface    integer i    do i = 1, len(r)      r(:)(i:i) = achar(mod(i,32)+iachar('@'))    end do  end function test2end module test1program test  use test1  implicit none! Original problem  if (len(test2(10)) .ne. 21) call abort ()! Check non-intrinsic calls are OK and check that fix does! not confuse result variables.  if (any (myfunc (test2(1)) .ne. "ABC")) call abort ()contains  function myfunc (ch) result (chr)    character(len(ch)) :: chr(4)    character (*) :: ch(:)    if (len (ch) .ne. 3) call abort ()    if (any (ch .ne. "ABC")) call abort ()    chr = test2 (1)    if (len(test2(len(chr))) .ne. 7) call abort ()  end function myfuncend program testpure function f(x)  integer, intent(in) :: x  integer f  f = 2*x+1end function f! { dg-final { cleanup-modules "test1" } }

⌨️ 快捷键说明

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