! { dg-do compile }
|
! { dg-do compile }
|
! { dg-options "-std=f95" }
|
! { dg-options "-std=f95" }
|
!
|
!
|
! PR fortran/30940
|
! PR fortran/30940
|
program main
|
program main
|
implicit none
|
implicit none
|
character(len=10) :: digit_string = '123456789', str
|
character(len=10) :: digit_string = '123456789', str
|
character :: digit_arr(10)
|
character :: digit_arr(10)
|
call copy(digit_string, digit_arr) ! { dg-error "Scalar CHARACTER actual argument with array dummy argument 'in'" }
|
call copy(digit_string, digit_arr) ! { dg-error "Scalar CHARACTER actual argument with array dummy argument 'in'" }
|
call copy(digit_arr,str) ! { dg-error "Scalar CHARACTER actual argument with array dummy argument 'out'" }
|
call copy(digit_arr,str) ! { dg-error "Scalar CHARACTER actual argument with array dummy argument 'out'" }
|
if(str /= '123456789') call abort()
|
if(str /= '123456789') call abort()
|
digit_string = 'qwertasdf'
|
digit_string = 'qwertasdf'
|
call copy2(digit_string, digit_arr) ! { dg-error "Scalar CHARACTER actual argument with array dummy argument 'in'" }
|
call copy2(digit_string, digit_arr) ! { dg-error "Scalar CHARACTER actual argument with array dummy argument 'in'" }
|
call copy2(digit_arr,str) ! { dg-error "Scalar CHARACTER actual argument with array dummy argument 'out'" }
|
call copy2(digit_arr,str) ! { dg-error "Scalar CHARACTER actual argument with array dummy argument 'out'" }
|
if(str /= 'qwertasdf') call abort()
|
if(str /= 'qwertasdf') call abort()
|
digit_string = '1qayxsw23e'
|
digit_string = '1qayxsw23e'
|
call copy('1qayxsw23e', digit_arr) ! { dg-error "Scalar CHARACTER actual argument with array dummy argument 'in'" }
|
call copy('1qayxsw23e', digit_arr) ! { dg-error "Scalar CHARACTER actual argument with array dummy argument 'in'" }
|
call copy(digit_arr,str) ! { dg-error "Scalar CHARACTER actual argument with array dummy argument 'out'" }
|
call copy(digit_arr,str) ! { dg-error "Scalar CHARACTER actual argument with array dummy argument 'out'" }
|
if(str /= '1qayxsw23e') call abort()
|
if(str /= '1qayxsw23e') call abort()
|
contains
|
contains
|
subroutine copy(in, out)
|
subroutine copy(in, out)
|
character, dimension(*) :: in
|
character, dimension(*) :: in
|
character, dimension(10) :: out
|
character, dimension(10) :: out
|
out = in(:10)
|
out = in(:10)
|
end subroutine copy
|
end subroutine copy
|
subroutine copy2(in, out)
|
subroutine copy2(in, out)
|
character, dimension(2,*) :: in
|
character, dimension(2,*) :: in
|
character, dimension(2,5) :: out
|
character, dimension(2,5) :: out
|
out(1:2,1:5) = in(1:2,1:5)
|
out(1:2,1:5) = in(1:2,1:5)
|
end subroutine copy2
|
end subroutine copy2
|
end program main
|
end program main
|
|
|