| ! RUN: %python %S/test_errors.py %s %flang_fc1 -pedantic |
| module m |
| real, target :: x = 1. |
| contains |
| function rpf(x) |
| real, intent(in out), target :: x |
| real, pointer :: rpf |
| rpf => x |
| end |
| real function rf(x) |
| rf = x |
| end |
| subroutine test1 |
| ! This is a valid assignment, not a statement function. |
| ! Every other Fortran compiler misinterprets it! |
| rpf(x) = 2. ! statement function or indirect assignment? |
| print *, x |
| end |
| subroutine test2 |
| !PORTABILITY: Name 'rf' from host scope should have a type declaration before its local statement function definition |
| rf(x) = 3. |
| end |
| subroutine test3 |
| external sf |
| !ERROR: 'sf' has not been declared as an array or pointer-valued function |
| sf(x) = 4. |
| end |
| function f() |
| !ERROR: Recursive call to 'f' requires a distinct RESULT in its declaration |
| !ERROR: Left-hand side of assignment is not definable |
| !BECAUSE: 'f()' is not a variable or pointer |
| f() = 1. ! statement function of same name as function |
| end |
| function g() result(r) |
| !WARNING: Name 'g' from host scope should have a type declaration before its local statement function definition |
| !ERROR: 'g' is already declared in this scoping unit |
| g() = 1. ! statement function of same name as function |
| end |
| function h1() result(r) |
| !ERROR: 'r' is not a callable procedure |
| r() = 1. ! statement function of same name as function result |
| end |
| function h2() result(r) |
| procedure(real), pointer :: r |
| r() = 1. ! not a statement function |
| end |
| end |