xref: /llvm-project/flang/test/Semantics/modfile01.f90 (revision dc453dcf760e6d558da3a4d7fff301baa5f37aba)
1*dc453dcfSIvan Zhechev! RUN: %python %S/test_modfile.py %s %flang_fc1
264ab3302SCarolineConcatto! Check correct modfile generation for type with private component.
364ab3302SCarolineConcattomodule m
464ab3302SCarolineConcatto  integer :: i
564ab3302SCarolineConcatto  integer, private :: j
664ab3302SCarolineConcatto  type :: t
764ab3302SCarolineConcatto    integer :: i
864ab3302SCarolineConcatto    integer, private :: j
964ab3302SCarolineConcatto  end type
1064ab3302SCarolineConcatto  type, private :: u
1164ab3302SCarolineConcatto  end type
1264ab3302SCarolineConcatto  type(t) :: x
1364ab3302SCarolineConcattoend
1464ab3302SCarolineConcatto
1564ab3302SCarolineConcatto!Expect: m.mod
1664ab3302SCarolineConcatto!module m
1764ab3302SCarolineConcatto!integer(4)::i
1864ab3302SCarolineConcatto!integer(4),private::j
1964ab3302SCarolineConcatto!type::t
2064ab3302SCarolineConcatto!integer(4)::i
2164ab3302SCarolineConcatto!integer(4),private::j
2264ab3302SCarolineConcatto!end type
2364ab3302SCarolineConcatto!type,private::u
2464ab3302SCarolineConcatto!end type
2564ab3302SCarolineConcatto!type(t)::x
2664ab3302SCarolineConcatto!end
2764ab3302SCarolineConcatto
2864ab3302SCarolineConcatto! Check correct modfile generation for type with private module procedure.
2964ab3302SCarolineConcatto
3064ab3302SCarolineConcattomodule m2
3164ab3302SCarolineConcatto  private :: s1
3264ab3302SCarolineConcattocontains
3364ab3302SCarolineConcatto  subroutine s1()
3464ab3302SCarolineConcatto  end
3564ab3302SCarolineConcatto  subroutine s2()
3664ab3302SCarolineConcatto  end
3764ab3302SCarolineConcattoend
3864ab3302SCarolineConcatto
3964ab3302SCarolineConcatto!Expect: m2.mod
4064ab3302SCarolineConcatto!module m2
4164ab3302SCarolineConcatto! private::s1
4264ab3302SCarolineConcatto!contains
4364ab3302SCarolineConcatto! subroutine s1()
4464ab3302SCarolineConcatto! end
4564ab3302SCarolineConcatto! subroutine s2()
4664ab3302SCarolineConcatto! end
4764ab3302SCarolineConcatto!end
4864ab3302SCarolineConcatto
4964ab3302SCarolineConcattomodule m3
5064ab3302SCarolineConcatto  private
5164ab3302SCarolineConcatto  public :: f1
5264ab3302SCarolineConcattocontains
5364ab3302SCarolineConcatto  real function f1()
5464ab3302SCarolineConcatto  end
5564ab3302SCarolineConcatto  real function f2()
5664ab3302SCarolineConcatto  end
5764ab3302SCarolineConcattoend
5864ab3302SCarolineConcatto
5964ab3302SCarolineConcatto!Expect: m3.mod
6064ab3302SCarolineConcatto!module m3
6164ab3302SCarolineConcatto! private::f2
6264ab3302SCarolineConcatto!contains
6364ab3302SCarolineConcatto! function f1()
6464ab3302SCarolineConcatto!  real(4)::f1
6564ab3302SCarolineConcatto! end
6664ab3302SCarolineConcatto! function f2()
6764ab3302SCarolineConcatto!  real(4)::f2
6864ab3302SCarolineConcatto! end
6964ab3302SCarolineConcatto!end
7064ab3302SCarolineConcatto
7164ab3302SCarolineConcatto! Test optional dummy procedure
7264ab3302SCarolineConcattomodule m4
7364ab3302SCarolineConcattocontains
7464ab3302SCarolineConcatto  subroutine s(f)
7564ab3302SCarolineConcatto    interface
7664ab3302SCarolineConcatto      logical recursive function f()
7764ab3302SCarolineConcatto        implicit none
7864ab3302SCarolineConcatto      end function
7964ab3302SCarolineConcatto    end interface
8064ab3302SCarolineConcatto    optional f
8164ab3302SCarolineConcatto  end
8264ab3302SCarolineConcattoend
8364ab3302SCarolineConcatto
8464ab3302SCarolineConcatto!Expect: m4.mod
8564ab3302SCarolineConcatto!module m4
8664ab3302SCarolineConcatto!contains
8764ab3302SCarolineConcatto! subroutine s(f)
8864ab3302SCarolineConcatto!  optional::f
8964ab3302SCarolineConcatto!  interface
9064ab3302SCarolineConcatto!   recursive function f()
9164ab3302SCarolineConcatto!    logical(4)::f
9264ab3302SCarolineConcatto!   end
9364ab3302SCarolineConcatto!  end interface
9464ab3302SCarolineConcatto! end
9564ab3302SCarolineConcatto!end
96