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