60 lines
1.4 KiB
Fortran
60 lines
1.4 KiB
Fortran
! RUN: %python %S/test_symbols.py %s %flang_fc1
|
|
! Exercise generic redefinitions in inner procedures with conflicting subprograms.
|
|
!DEF: /m Module
|
|
module m
|
|
!DEF: /m/generic PUBLIC (Subroutine) Generic
|
|
interface generic
|
|
!DEF: /m/specific1 PUBLIC (Subroutine) Subprogram
|
|
module procedure :: specific1
|
|
end interface
|
|
contains
|
|
!REF: /m/specific1
|
|
subroutine specific1
|
|
print *, 1
|
|
end subroutine
|
|
!DEF: /m/specific2 PUBLIC (Subroutine) Subprogram
|
|
subroutine specific2
|
|
print *, 2
|
|
end subroutine
|
|
!DEF: /m/test PUBLIC (Subroutine) Subprogram
|
|
subroutine test
|
|
!REF: /m/specific1
|
|
call generic
|
|
end subroutine
|
|
!DEF: /m/outer PUBLIC (Subroutine) Subprogram
|
|
subroutine outer
|
|
!DEF: /m/outer/inner1 (Subroutine) Subprogram
|
|
call inner1
|
|
contains
|
|
!REF: /m/outer/inner1
|
|
subroutine inner1
|
|
!DEF: /m/outer/inner1/generic (Subroutine) Generic
|
|
interface generic
|
|
!REF: /m/specific2
|
|
module procedure :: specific2
|
|
end interface
|
|
!REF: /m/specific2
|
|
call generic
|
|
end subroutine inner1
|
|
end subroutine outer
|
|
end module m
|
|
!DEF: /main MainProgram
|
|
program main
|
|
!REF: /m
|
|
use :: m
|
|
!REF: /m/specific1
|
|
call generic
|
|
!DEF: /main/inner2 (Subroutine) Subprogram
|
|
call inner2
|
|
contains
|
|
!REF: /main/inner2
|
|
subroutine inner2
|
|
!DEF: /main/inner2/generic (Subroutine) Generic
|
|
interface generic
|
|
!DEF: /main/specific2 (Subroutine) Use
|
|
module procedure :: specific2
|
|
end interface
|
|
!REF: /main/specific2
|
|
call generic
|
|
end subroutine inner2
|
|
end program
|