From: Steven G. Kargl Date: Thu, 11 Jan 2018 20:24:36 +0000 (+0000) Subject: re PR fortran/79383 (USE statement error) X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=278e902c24fd2ccbfe7c1ac2b0c4ef62a55696fc;p=gcc.git re PR fortran/79383 (USE statement error) 2018-01-11 Steven G. Kargl PR fortran/79383 * gfortran.dg/dtio_31.f03: New test. * gfortran.dg/dtio_32.f03: New test. From-SVN: r256554 --- diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 1ba529d00cd..b44ad56c27c 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,9 @@ +2018-01-11 Steven G. Kargl + + PR fortran/79383 + * gfortran.dg/dtio_31.f03: New test. + * gfortran.dg/dtio_32.f03: New test. + 2018-01-11 David Malcolm PR c++/43486 diff --git a/gcc/testsuite/gfortran.dg/dtio_31.f03 b/gcc/testsuite/gfortran.dg/dtio_31.f03 new file mode 100644 index 00000000000..1886ef424c4 --- /dev/null +++ b/gcc/testsuite/gfortran.dg/dtio_31.f03 @@ -0,0 +1,47 @@ +! { dg-do run } +! { dg-options="-w" } +! PR fortran/79383 +! Contributed by Walt Brainerd +module dollar_mod + + implicit none + + private + + type, public :: dollar_type + real :: amount + end type dollar_type + + interface write(formatted) + procedure :: Write_dollar + end interface + + public :: write(formatted) + + contains + + subroutine Write_dollar(dollar_value, unit, b_edit_descriptor, & + & v_list, iostat, iomsg) + + class(dollar_type), intent(in) :: dollar_value + integer, intent(in) :: unit + character(len=*), intent(in) :: b_edit_descriptor + integer, dimension(:), intent(in) :: v_list + integer, intent(out) :: iostat + character(len=*), intent(inout) :: iomsg + write(unit=unit, fmt="(f9.2)", iostat=iostat) dollar_value%amount + end subroutine Write_dollar + +end module dollar_mod + +program test_dollar + + use, non_intrinsic :: dollar_mod, only: dollar_type, write (formatted) + implicit none + + type(dollar_type), parameter :: wage = dollar_type(15.10) + character(len=10) str + write (str, fmt="(DT)") wage + if(trim(adjustl(str)) /= '15.10') call abort + +end program test_dollar diff --git a/gcc/testsuite/gfortran.dg/dtio_32.f03 b/gcc/testsuite/gfortran.dg/dtio_32.f03 new file mode 100644 index 00000000000..1e55359e237 --- /dev/null +++ b/gcc/testsuite/gfortran.dg/dtio_32.f03 @@ -0,0 +1,46 @@ +! { dg-do run } +! { dg-options="-w" } +! PR fortran/79383 +! Contributed by Walt Brainerd +module dollar_mod + + implicit none + + private + + type, public :: dollar_type + real :: amount + end type dollar_type + + interface write(formatted) + procedure :: Write_dollar + end interface + + public :: write(formatted) + + contains + + subroutine Write_dollar(dollar_value, unit, b_edit_descriptor, & + & v_list, iostat, iomsg) + class(dollar_type), intent(in) :: dollar_value + integer, intent(in) :: unit + character(len=*), intent(in) :: b_edit_descriptor + integer, dimension(:), intent(in) :: v_list + integer, intent(out) :: iostat + character(len=*), intent(inout) :: iomsg + write(unit=unit, fmt="(f9.2)", iostat=iostat) dollar_value%amount + end subroutine Write_dollar + +end module dollar_mod + +program test_dollar + + use :: dollar_mod ! with this USE, same result + implicit none + + type(dollar_type), parameter :: wage = dollar_type(15.10) + character(len=10) str + write(str, fmt="(DT)") wage + if (trim(adjustl(str)) /= '15.10') call abort + +end program test_dollar