| module m |
| use iso_c_binding |
| implicit none (type, external) |
| contains |
| |
| ! All of the following use an array descriptor |
| ! F2018, 18.3.7 (5) applies: |
| |
| subroutine f1 (x) bind(c) ! { dg-error "Dummy argument 'x' at .1. may not be a pointer with CONTIGUOUS attribute as procedure 'f1' is BIND\\(C\\)" } |
| character(len=:, kind=c_char), pointer, contiguous :: x(:) |
| end |
| |
| subroutine f2 (x) bind(c) ! { dg-error "Dummy argument 'x' at .1. may not be a pointer with CONTIGUOUS attribute as procedure 'f2' is BIND\\(C\\)" } |
| integer(c_int), pointer, contiguous :: x(:) |
| end |
| |
| subroutine f3 (x) bind(c) |
| character(len=:, kind=c_char), pointer :: x(:) ! OK - pointer but not contiguous |
| end |
| |
| subroutine f4 (x) bind(c) |
| character(len=*, kind=c_char), contiguous :: x(:) ! OK - contiguous but not a pointer |
| end |
| |
| subroutine f5 (x) bind(c) |
| integer(c_int), pointer :: x(:) ! OK - pointer but not contigous |
| end |
| |
| subroutine f6 (x) bind(c) |
| integer(c_int), contiguous :: x(:) ! OK - contiguous but not a pointer |
| end |
| |
| end |