blob: cfba259590ffb3caac9d6f6912a068f2c309668f [file] [log] [blame]
! RUN: %python %S/test_errors.py %s %flang_fc1
! Test semantic checking of F_C_STRING from ISO_C_BINDING
program test
use iso_c_binding
implicit none
character(len=20) :: str
character(len=:), allocatable :: result
logical :: flag
integer :: n
real :: x
character(len=20), dimension(2) :: str_array
! Valid usages
result = f_c_string('hello')
result = f_c_string(str)
result = f_c_string(str, .true.)
result = f_c_string(str, .false.)
result = f_c_string(str, flag)
result = f_c_string(string=str)
result = f_c_string(string=str, asis=.true.)
result = f_c_string(asis=.false., string=str)
! Invalid: missing required argument
!ERROR: missing mandatory 'string=' argument
result = f_c_string()
! Invalid: non-character first argument
!ERROR: Actual argument for 'string=' has bad type 'INTEGER(4)'
result = f_c_string(n)
! Invalid: non-character first argument (real)
!ERROR: Actual argument for 'string=' has bad type 'REAL(4)'
result = f_c_string(x)
! Invalid: non-logical second argument
!ERROR: Actual argument for 'asis=' has bad type 'INTEGER(4)'
result = f_c_string(str, n)
! Invalid: too many arguments
!ERROR: too many actual arguments for intrinsic '__builtin_f_c_string'
result = f_c_string(str, .true., .false.)
! Invalid: array argument (must be scalar)
!ERROR: 'string=' argument has unacceptable rank 1
result = f_c_string(str_array)
end program