It seems that one of the recent DTIO commits have fixed
the issues raised in PR Fortran/79383.  I have converted
the submitted code into two testcases.

2018-01-11  Steven G. Kargl <ka...@gcc.gnu.org>

        PR fortran/79383
        * gfortran.dg/dtio_31.f03: New test.
        * gfortran.dg/dtio_32.f03: New test.

OK to commit?

-- 
Steve
Index: gcc/testsuite/gfortran.dg/dtio_31.f03
===================================================================
--- gcc/testsuite/gfortran.dg/dtio_31.f03	(nonexistent)
+++ gcc/testsuite/gfortran.dg/dtio_31.f03	(working copy)
@@ -0,0 +1,47 @@
+! { dg-do run }
+! { dg-options="-w" }
+! PR fortran/79383
+! Contributed by Walt Brainerd <walt.brainerd at gmail dot com>
+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
Index: gcc/testsuite/gfortran.dg/dtio_32.f03
===================================================================
--- gcc/testsuite/gfortran.dg/dtio_32.f03	(nonexistent)
+++ gcc/testsuite/gfortran.dg/dtio_32.f03	(working copy)
@@ -0,0 +1,46 @@
+! { dg-do run }
+! { dg-options="-w" }
+! PR fortran/79383
+! Contributed by Walt Brainerd <walt.brainerd at gmail dot com>
+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

Reply via email to