| ! RUN: %python %S/test_errors.py %s %flang_fc1 |
| ! Tests actual/dummy pointer argument shape mismatches |
| module m |
| contains |
| subroutine s0(p) |
| real, pointer, intent(in) :: p |
| end |
| subroutine s1(p) |
| real, pointer, intent(in) :: p(:) |
| end |
| subroutine sa(p) |
| real, pointer, intent(in) :: p(..) |
| end |
| subroutine sao(p) |
| real, intent(in), optional, pointer :: p(..) |
| end |
| subroutine so(x) |
| real, intent(in), optional :: x(..) |
| end |
| subroutine soa(a) |
| real, intent(in), optional, allocatable :: a(..) |
| end |
| subroutine test |
| real, pointer :: a0, a1(:) |
| call s0(null(a0)) ! ok |
| !ERROR: Rank of dummy argument is 0, but actual argument has rank 1 |
| !ERROR: Rank of pointer is 0, but function result has rank 1 |
| call s0(null(a1)) |
| !ERROR: Rank of dummy argument is 1, but actual argument has rank 0 |
| !ERROR: Rank of pointer is 1, but function result has rank 0 |
| call s1(null(a0)) |
| call s1(null(a1)) ! ok |
| call sa(null(a0)) ! ok |
| call sa(null(a1)) ! ok |
| !ERROR: NULL() without MOLD= must not be associated with an assumed-rank dummy argument that is ALLOCATABLE, POINTER, or non-OPTIONAL |
| call sa(null()) |
| call sao ! ok |
| !ERROR: NULL() without MOLD= must not be associated with an assumed-rank dummy argument that is ALLOCATABLE, POINTER, or non-OPTIONAL |
| call sao(null()) |
| call so ! ok |
| call so(null()) ! ok |
| call soa ! ok |
| !ERROR: NULL() without MOLD= must not be associated with an assumed-rank dummy argument that is ALLOCATABLE, POINTER, or non-OPTIONAL |
| call soa(null()) |
| end |
| end |