Files
clang-p2996/flang/test/Semantics/bind-c09.f90
Peter Klausler ab7930bd9f [flang] Relax checking of dummy procedures under BIND(C) (#92474)
As was done recently to allow derived types that are not explicitly
BIND(C), but meet the requirements of BIND(C), to be acceptable for use
in contexts nominally requiring BIND(C), this patch allows procedures
that are not explicitly BIND(C) to be used in contexts that nominally
require BIND(C) so long as (1) they meet the requirements of BIND(C),
and (2) don't use dummy arguments whose implementations may vary under
BIND(C), such as VALUE.
2024-05-17 15:50:46 -07:00

50 lines
1.4 KiB
Fortran

! RUN: %python %S/test_errors.py %s %flang_fc1
! Check for C1553 and 18.3.4(1)
function func1() result(res) bind(c)
! ERROR: Interoperable function result may not have ALLOCATABLE or POINTER attribute
integer, pointer :: res
end
function func2() result(res) bind(c)
! ERROR: Interoperable function result may not have ALLOCATABLE or POINTER attribute
integer, allocatable :: res
end
function func3() result(res) bind(c)
!ERROR: Interoperable function result must be scalar
integer :: res(2)
end
function func4() result(res) bind(c)
! ERROR: Interoperable character function result must have length one
character(*) :: res
end
function func5(n) result(res) bind(c)
integer :: n
! ERROR: Interoperable character function result must have length one
character(n) :: res
end
function func6() result(res) bind(c)
! ERROR: Interoperable character function result must have length one
character(2) :: res
end
function func7() result(res) bind(c)
integer, parameter :: n = 1
character(n) :: res ! OK
end
function func8() result(res) bind(c)
! ERROR: Interoperable function result may not have ALLOCATABLE or POINTER attribute
! ERROR: Interoperable character function result must have length one
character(:), pointer :: res
end
function func9() result(res) bind(c)
! ERROR: Interoperable function result may not be a coarray
integer :: res[10, *]
end