| ! PR92482 |
| ! { dg-do compile } |
| ! |
| ! TS 29113 |
| ! C1255 (R1230) If proc-language-binding-spec is specified for a procedure, |
| ! each dummy argument shall be an interoperable procedure (15.3.7) |
| ! or a variable that is interoperable (15.3.5, 15.3.6), assumed shape, |
| ! assumed rank, assumed type, of assumed character length, or has the |
| ! ALLOCATABLE or POINTER attribute. If proc-language-binding-spec is |
| ! specified for a function, the function result shall be an interoperable |
| ! scalar variable. |
| |
| module m |
| |
| interface |
| |
| ! dummy is interoperable procedure |
| subroutine s1 (x) bind (c) |
| use ISO_C_BINDING |
| implicit none |
| interface |
| function x (a, b) bind (c) |
| use ISO_C_BINDING |
| integer(C_INT) :: a, b |
| integer(C_INT) :: x |
| end function |
| end interface |
| end subroutine |
| |
| ! dummy is interoperable variable |
| subroutine s2 (x) bind (c) |
| use ISO_C_BINDING |
| implicit none |
| integer(C_INT) :: x |
| end subroutine |
| |
| ! dummy is assumed-shape array variable |
| subroutine s3 (x) bind (c) |
| use ISO_C_BINDING |
| implicit none |
| integer(C_INT) :: x(:) |
| end subroutine |
| |
| ! dummy is an assumed-rank array variable |
| subroutine s4 (x) bind (c) |
| use ISO_C_BINDING |
| implicit none |
| integer(C_INT) :: x(..) |
| end subroutine |
| |
| ! dummy is assumed-type variable |
| subroutine s5 (x) bind (c) |
| use ISO_C_BINDING |
| implicit none |
| type(*) :: x |
| end subroutine |
| |
| ! dummy is assumed length character variable |
| subroutine s6 (x) bind (c) |
| use ISO_C_BINDING |
| implicit none |
| character(len=*) :: x |
| end subroutine |
| |
| ! dummy has allocatable or pointer attribute |
| subroutine s7 (x, y) bind (c) |
| use ISO_C_BINDING |
| implicit none |
| integer(C_INT), allocatable :: x |
| integer(C_INT), pointer :: y |
| end subroutine |
| |
| ! function result shall be an interoperable scalar variable |
| function f (x) bind (c) |
| use ISO_C_BINDING |
| implicit none |
| integer(C_INT) :: x |
| integer(C_INT) :: f |
| end function |
| |
| end interface |
| end module |
| |