! PR92482 ! { dg-do compile } ! ! TS 29113 ! 8.7 Interoperability of procedures and procedure interfaces ! ! If a dummy argument in an interoperable interface is of type ! CHARACTER and is allocatable or a pointer, its character length shall ! be deferred. ! ! This test checks that this error is diagnosed and is supposed to fail. module m use iso_c_binding interface ! These are supposed to be OK subroutine good1 (x, n) bind (c) use iso_c_binding character (kind=C_CHAR, len=:), allocatable :: x integer(C_INT), value :: n end subroutine subroutine good2 (x, n) bind (c) use iso_c_binding character (kind=C_CHAR, len=:), pointer :: x integer(C_INT), value :: n end subroutine ! These are supposed to fail. subroutine bad1 (x, n) bind (c) ! { dg-error "must have deferred length" } use iso_c_binding character (kind=C_CHAR, len=*), allocatable :: x integer(C_INT), value :: n end subroutine subroutine bad2 (x, n) bind (c) ! { dg-error "must have deferred length" } use iso_c_binding character (kind=C_CHAR, len=*), pointer :: x integer(C_INT), value :: n end subroutine subroutine bad3 (x, n) bind (c) ! { dg-error "must have deferred length" } use iso_c_binding character (kind=C_CHAR, len=80), allocatable :: x integer(C_INT), value :: n end subroutine subroutine bad4 (x, n) bind (c) ! { dg-error "must have deferred length" } use iso_c_binding character (kind=C_CHAR, len=80), pointer :: x integer(C_INT), value :: n end subroutine subroutine bad5 (x, n) bind (c) ! { dg-error "must have deferred length" } use iso_c_binding character (kind=C_CHAR, len=1), allocatable :: x integer(C_INT), value :: n end subroutine subroutine bad6 (x, n) bind (c) ! { dg-error "must have deferred length" } use iso_c_binding character (kind=C_CHAR, len=1), pointer :: x integer(C_INT), value :: n end subroutine subroutine bad7 (x, n) bind (c) ! { dg-error "must have deferred length" } use iso_c_binding character (kind=C_CHAR), allocatable :: x integer(C_INT), value :: n end subroutine subroutine bad8 (x, n) bind (c) ! { dg-error "must have deferred length" } use iso_c_binding character (kind=C_CHAR), pointer :: x integer(C_INT), value :: n end subroutine end interface end module