! 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)  ! { dg-bogus "Sorry" "pr92482" { xfail *-*-* } }
      use iso_c_binding
      character (kind=C_CHAR, len=:), allocatable :: x
      integer(C_INT), value :: n
    end subroutine
    subroutine good2 (x, n) bind (c)  ! { dg-bogus "Sorry" "pr92482" { xfail *-*-* } }
      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
