aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorjvdelisle <jvdelisle@138bc75d-0d04-0410-961f-82ee72b054a4>2018-02-18 19:19:47 +0000
committerjvdelisle <jvdelisle@138bc75d-0d04-0410-961f-82ee72b054a4>2018-02-18 19:19:47 +0000
commit225a37f9cc599fc8fdf8410905229a670a3eb35f (patch)
treed539dfb724bd984a8e80d550c38a4ece2babc926
parentb789022133f2eef8ec271d2a5a57e7595e1c340e (diff)
2018-02-18 Jerry DeLisle <jvdelisle@gcc.gnu.org>
PR fortran/84389 * io.c (check_format): Allow FMT_COLON. * gfortran.dg/dtio_33.f90: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@257795 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r--gcc/fortran/ChangeLog5
-rw-r--r--gcc/fortran/io.c3
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gfortran.dg/dtio_33.f9028
4 files changed, 41 insertions, 0 deletions
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog
index 8ecc90af879..01f9c5e6065 100644
--- a/gcc/fortran/ChangeLog
+++ b/gcc/fortran/ChangeLog
@@ -1,3 +1,8 @@
+2018-02-18 Jerry DeLisle <jvdelisle@gcc.gnu.org>
+
+ PR fortran/84389
+ * io.c (check_format): Allow FMT_COLON.
+
2018-02-18 Paul Thomas <pault@gcc.gnu.org>
PR fortran/80945
diff --git a/gcc/fortran/io.c b/gcc/fortran/io.c
index 9b7c2de16f4..d9f0fb1d4ac 100644
--- a/gcc/fortran/io.c
+++ b/gcc/fortran/io.c
@@ -985,6 +985,9 @@ data_desc:
case FMT_COMMA:
goto format_item;
+ case FMT_COLON:
+ goto format_item_1;
+
case FMT_LPAREN:
dtio_vlist:
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 274bd74b1a4..50643570f3d 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,5 +1,10 @@
2018-02-18 Jerry DeLisle <jvdelisle@gcc.gnu.org>
+ PR libgfortran/84389
+ * gfortran.dg/dtio_33.f90: New test.
+
+2018-02-18 Jerry DeLisle <jvdelisle@gcc.gnu.org>
+
PR libgfortran/84412
* gfortran.dg/inquire_18.f90: New test.
diff --git a/gcc/testsuite/gfortran.dg/dtio_33.f90 b/gcc/testsuite/gfortran.dg/dtio_33.f90
new file mode 100644
index 00000000000..2deca43db90
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/dtio_33.f90
@@ -0,0 +1,28 @@
+! { dg-do run }
+! PR84389 rejected valid use of ':' in format
+module m
+ type :: t
+ integer :: i
+ contains
+ procedure, pass(this) :: write_t
+ generic, public :: write(formatted) => write_t
+ end type
+contains
+ subroutine write_t(this, lun, iotype, vlist, istat, imsg)
+ ! argument definitions
+ class(t), intent(in) :: this
+ integer, intent(in) :: lun
+ character(len=*), intent(in) :: iotype
+ integer, intent(in) :: vlist(:)
+ integer, intent(out) :: istat
+ character(len=*), intent(inout) :: imsg
+ write(lun, fmt=*, iostat=istat, iomsg=imsg) "Hello World!"
+ end subroutine write_t
+end module
+program p
+ use m, only : t
+ character(50) :: str
+ type(t) :: foo(2)
+ write(str, "(*(dt:,','))") foo
+ if (str.ne." Hello World!, Hello World!") stop 1
+end program