| ! RUN: %f18 -funparse %s 2>&1 | FileCheck %s |
| |
| !CHECK-NOT: error: |
| module mm |
| interface |
| module subroutine m(n) |
| end |
| end interface |
| end module mm |
| |
| program p |
| use mm |
| 20 print*, 'p' |
| 21 call p1 |
| 22 call p2 |
| 23 f0 = f(0); print '(f5.1)', f0 |
| 24 f1 = f(1); print '(f5.1)', f1 |
| 25 call s(0); call s(1) |
| 26 call m(0); call m(1) |
| 27 if (.false.) goto 29 |
| 28 print*, 'px' |
| contains |
| subroutine p1 |
| print*, 'p1' |
| goto 29 |
| 29 end subroutine p1 |
| subroutine p2 |
| print*, 'p2' |
| goto 29 |
| 29 end subroutine p2 |
| 29 end |
| |
| function f(n) |
| print*, 'f' |
| 31 call f1 |
| 32 call f2 |
| f = 30. |
| if (n == 0) goto 39 |
| f = f + 3. |
| print*, 'fx' |
| contains |
| subroutine f1 |
| print*, 'f1' |
| goto 39 |
| 39 end subroutine f1 |
| subroutine f2 |
| print*, 'f2' |
| goto 39 |
| 39 end subroutine f2 |
| 39 end |
| |
| subroutine s(n) |
| print*, 's' |
| 41 call s1 |
| 42 call s2 |
| 43 call s3 |
| if (n == 0) goto 49 |
| print*, 'sx' |
| contains |
| subroutine s1 |
| print*, 's1' |
| goto 49 |
| 49 end subroutine s1 |
| subroutine s2 |
| print*, 's2' |
| goto 49 |
| 49 end subroutine s2 |
| subroutine s3 |
| print*, 's3' |
| goto 49 |
| 49 end subroutine s3 |
| 49 end |
| |
| submodule(mm) mm1 |
| contains |
| module procedure m |
| print*, 'm' |
| 50 call m1 |
| 51 call m2 |
| if (n == 0) goto 59 |
| print*, 'mx' |
| contains |
| subroutine m1 |
| print*, 'm1' |
| goto 59 |
| 59 end subroutine m1 |
| subroutine m2 |
| print*, 'm2' |
| goto 59 |
| 59 end subroutine m2 |
| 59 end procedure m |
| end submodule mm1 |