! RUN: bbc -pft-test -o %t %s | FileCheck %s
module mm
!dir$ some directive 1
type t
logical :: tag
contains
final :: fin
end type
!dir$ some directive 2
contains
!dir$ some directive 3
subroutine fin(x)
type(t), intent(inout) :: x
x%tag =.true.
!dir$ some directive 4
call s1
call s2
print*, 'fin', x
contains
!dir$ some directive 5
subroutine s1
print*, 's1'
!dir$ some directive 6
end subroutine s1
!dir$ some directive 7
subroutine s2
!dir$ some directive 8
if (.true.) then
!dir$ some directive 9
print*, 's2'
!dir$ some directive 10
endif
!dir$ some directive 11
end subroutine s2
!dir$ some directive 12
end subroutine fin
!dir$ some directive 13
end module mm
!dir$ some directive 14
end
! CHECK: Module mm: module mm
! CHECK: CompilerDirective: !some directive 1
! CHECK: CompilerDirective: !some directive 2
! CHECK: Contains
! CHECK: CompilerDirective: !some directive 3
! CHECK: Subroutine fin: subroutine fin(x)
! CHECK: AssignmentStmt: x%tag =.true.
! CHECK: CompilerDirective: !some directive 4
! CHECK: CallStmt: call s1
! CHECK: CallStmt: call s2
! CHECK: PrintStmt: print*, 'fin', x
! CHECK: EndSubroutineStmt: end subroutine fin
! CHECK: Contains
! CHECK: CompilerDirective: !some directive 5
! CHECK: Subroutine s1: subroutine s1
! CHECK: PrintStmt: print*, 's1'
! CHECK: CompilerDirective: !some directive 6
! CHECK: EndSubroutineStmt: end subroutine s1
! CHECK: End Subroutine s1
! CHECK: CompilerDirective: !some directive 7
! CHECK: Subroutine s2: subroutine s2
! CHECK: CompilerDirective: !some directive 8
! CHECK: <<IfConstruct>> -> 7
! CHECK: IfThenStmt -> 7: if(.true.) then
! CHECK: ^CompilerDirective: !some directive 9
! CHECK: PrintStmt: print*, 's2'
! CHECK: CompilerDirective: !some directive 10
! CHECK: EndIfStmt: endif
! CHECK: <<End IfConstruct>>
! CHECK: CompilerDirective: !some directive 11
! CHECK: EndSubroutineStmt: end subroutine s2
! CHECK: End Subroutine s2
! CHECK: CompilerDirective: !some directive 12
! CHECK: End Contains
! CHECK: End Subroutine fin
! CHECK: CompilerDirective: !some directive 13
! CHECK: End Contains
! CHECK: End Module mm
! CHECK: CompilerDirective: !some directive 14
! CHECK: Program <anonymous>
! CHECK: EndProgramStmt: end
! CHECK: End Program <anonymous>