| ! RUN: %python %S/test_symbols.py %s %flang_fc1 |
| ! Ensure that SMPs work with dummy procedures declared as interfaces |
| !DEF: /m Module |
| module m |
| implicit none |
| interface |
| !DEF: /m/smp MODULE, PUBLIC, PURE (Function) Subprogram REAL(4) |
| !DEF: /m/smp/f EXTERNAL, PURE (Function) Subprogram REAL(4) |
| !DEF: /m/smp/x INTENT(IN) ObjectEntity REAL(4) |
| !DEF: /m/smp/res ObjectEntity REAL(4) |
| pure module function smp(f, x) result(res) |
| !REF: /m/smp/res |
| real res |
| interface |
| !REF: /m/smp/f |
| !DEF: /m/smp/f/x INTENT(IN) ObjectEntity REAL(4) |
| !DEF: /m/smp/f/r ObjectEntity REAL(4) |
| pure function f(x) result(r) |
| !REF: /m/smp/f/x |
| real, intent(in) :: x |
| !REF: /m/smp/f/r |
| real r |
| end function |
| end interface |
| !REF: /m/smp/x |
| real, intent(in) :: x |
| end function |
| end interface |
| end module |
| !REF: /m |
| !DEF: /m/sm Module |
| submodule (m)sm |
| implicit none |
| contains |
| !DEF: /m/sm/smp MODULE, PUBLIC, PURE (Function) Subprogram REAL(4) |
| module procedure smp |
| !DEF: /m/sm/smp/res ObjectEntity REAL(4) |
| !DEF: /m/sm/smp/f EXTERNAL, PURE (Function) Subprogram REAL(4) |
| !DEF: /m/sm/smp/x INTENT(IN) ObjectEntity REAL(4) |
| res = f(x) |
| end procedure |
| end submodule |