re PR fortran/79383 (USE statement error)
authorSteven G. Kargl <kargl@gcc.gnu.org>
Thu, 11 Jan 2018 20:24:36 +0000 (20:24 +0000)
committerSteven G. Kargl <kargl@gcc.gnu.org>
Thu, 11 Jan 2018 20:24:36 +0000 (20:24 +0000)
2018-01-11  Steven G. Kargl <kargl@gcc.gnu.org>

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

From-SVN: r256554

gcc/testsuite/ChangeLog
gcc/testsuite/gfortran.dg/dtio_31.f03 [new file with mode: 0644]
gcc/testsuite/gfortran.dg/dtio_32.f03 [new file with mode: 0644]

index 1ba529d00cdda1c40c9ea0391c11651f5d06effa..b44ad56c27c5a35d6aceb2f46fd7f2ccb3caece1 100644 (file)
@@ -1,3 +1,9 @@
+2018-01-11  Steven G. Kargl <kargl@gcc.gnu.org>
+
+       PR fortran/79383
+       * gfortran.dg/dtio_31.f03: New test.
+       * gfortran.dg/dtio_32.f03: New test.
+
 2018-01-11  David Malcolm  <dmalcolm@redhat.com>
 
        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 (file)
index 0000000..1886ef4
--- /dev/null
@@ -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
diff --git a/gcc/testsuite/gfortran.dg/dtio_32.f03 b/gcc/testsuite/gfortran.dg/dtio_32.f03
new file mode 100644 (file)
index 0000000..1e55359
--- /dev/null
@@ -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