1dc453dcfSIvan Zhechev! RUN: %python %S/test_modfile.py %s %flang_fc1 264ab3302SCarolineConcatto! modfile with subprograms 364ab3302SCarolineConcatto 464ab3302SCarolineConcattomodule m1 564ab3302SCarolineConcatto type :: t 664ab3302SCarolineConcatto end type 764ab3302SCarolineConcattocontains 864ab3302SCarolineConcatto 95d3249e9STim Keith pure subroutine Ss(x, y) bind(c) 10*199402c3SPeter Klausler logical(1) x 1164ab3302SCarolineConcatto intent(inout) y 1264ab3302SCarolineConcatto intent(in) x 1364ab3302SCarolineConcatto end subroutine 1464ab3302SCarolineConcatto 1564ab3302SCarolineConcatto real function f1() result(x) 1664ab3302SCarolineConcatto x = 1.0 1764ab3302SCarolineConcatto end function 1864ab3302SCarolineConcatto 1964ab3302SCarolineConcatto function f2(y) 2064ab3302SCarolineConcatto complex y 2164ab3302SCarolineConcatto f2 = 2.0 2264ab3302SCarolineConcatto end function 2364ab3302SCarolineConcatto 2464ab3302SCarolineConcattoend 2564ab3302SCarolineConcatto 2664ab3302SCarolineConcattomodule m2 2764ab3302SCarolineConcattocontains 2864ab3302SCarolineConcatto type(t) function f3(x) 2964ab3302SCarolineConcatto use m1 3064ab3302SCarolineConcatto integer, parameter :: a = 2 3164ab3302SCarolineConcatto type t2(b) 3264ab3302SCarolineConcatto integer, kind :: b = a 3364ab3302SCarolineConcatto integer :: y 3464ab3302SCarolineConcatto end type 3564ab3302SCarolineConcatto type(t2) :: x 3664ab3302SCarolineConcatto end 3764ab3302SCarolineConcatto function f4() result(x) 3864ab3302SCarolineConcatto implicit complex(x) 3964ab3302SCarolineConcatto end 4064ab3302SCarolineConcattoend 4164ab3302SCarolineConcatto 423ed2909fSPete Steinfeld! Module with a subroutine with alternate returns 433ed2909fSPete Steinfeldmodule m3 443ed2909fSPete Steinfeldcontains 453ed2909fSPete Steinfeld subroutine altReturn(arg1, arg2, *, *) 463ed2909fSPete Steinfeld real :: arg1 473ed2909fSPete Steinfeld real :: arg2 483ed2909fSPete Steinfeld end subroutine 493ed2909fSPete Steinfeldend module m3 503ed2909fSPete Steinfeld 5164ab3302SCarolineConcatto!Expect: m1.mod 5264ab3302SCarolineConcatto!module m1 5364ab3302SCarolineConcatto!type::t 5464ab3302SCarolineConcatto!end type 5564ab3302SCarolineConcatto!contains 5669e2665cSPeter Klausler!pure subroutine ss(x,y) bind(c) 57*199402c3SPeter Klausler!logical(1),intent(in)::x 5864ab3302SCarolineConcatto!real(4),intent(inout)::y 5964ab3302SCarolineConcatto!end 6064ab3302SCarolineConcatto!function f1() result(x) 6164ab3302SCarolineConcatto!real(4)::x 6264ab3302SCarolineConcatto!end 6364ab3302SCarolineConcatto!function f2(y) 6464ab3302SCarolineConcatto!complex(4)::y 6564ab3302SCarolineConcatto!real(4)::f2 6664ab3302SCarolineConcatto!end 6764ab3302SCarolineConcatto!end 6864ab3302SCarolineConcatto 6964ab3302SCarolineConcatto!Expect: m2.mod 7064ab3302SCarolineConcatto!module m2 7164ab3302SCarolineConcatto!contains 7264ab3302SCarolineConcatto!function f3(x) 7364ab3302SCarolineConcatto! use m1,only:t 7464ab3302SCarolineConcatto! type::t2(b) 7564ab3302SCarolineConcatto! integer(4),kind::b=2_4 7664ab3302SCarolineConcatto! integer(4)::y 7764ab3302SCarolineConcatto! end type 7864ab3302SCarolineConcatto! type(t2(b=2_4))::x 7964ab3302SCarolineConcatto! type(t)::f3 8064ab3302SCarolineConcatto!end 8164ab3302SCarolineConcatto!function f4() result(x) 8264ab3302SCarolineConcatto!complex(4)::x 8364ab3302SCarolineConcatto!end 8464ab3302SCarolineConcatto!end 853ed2909fSPete Steinfeld 863ed2909fSPete Steinfeld!Expect: m3.mod 873ed2909fSPete Steinfeld!module m3 883ed2909fSPete Steinfeld!contains 893ed2909fSPete Steinfeld!subroutine altreturn(arg1,arg2,*,*) 903ed2909fSPete Steinfeld!real(4)::arg1 913ed2909fSPete Steinfeld!real(4)::arg2 923ed2909fSPete Steinfeld!end 933ed2909fSPete Steinfeld!end 94