! Copyright 2019-2021 Free Software Foundation, Inc.
!
! This program is free software; you can redistribute it and/or modify
! it under the terms of the GNU General Public License as published by
! the Free Software Foundation; either version 2 of the License, or
! (at your option) any later version.
!
! This program is distributed in the hope that it will be useful,
! but WITHOUT ANY WARRANTY; without even the implied warranty of
! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
! GNU General Public License for more details.
!
! You should have received a copy of the GNU General Public License
! along with this program.  If not, see <http://www.gnu.org/licenses/>.

module mod1
  type :: m1t1
     integer :: b
  end type m1t1

  real :: mod1_var_1 = 1.0
  integer, parameter :: mod1_var_2 = 456

contains
  subroutine sub_m1_a(arg)
    integer :: arg
    print*, "sub_m1_a"
    print*, "arg = ", arg
  end subroutine sub_m1_a

  integer function sub_m1_b()
    print*, "sub_m1_b"
    sub_m1_b = 3
  end function sub_m1_b
end module mod1

program info_types_test
  use mod1
  use mod2

  type :: s1
     integer :: a
  end type s1

  logical :: l
  type (s1) :: var_a
  type (m1t1) :: var_b

  var_a%a = 1 + mod2_var_1
  var_b%b = 2
  l = .FALSE.
end program info_types_test
