re PR fortran/21432 (gfortran does not support printing of namelists)
authorPaul Thomas <pault@gcc.gnu.org>
Sun, 14 Aug 2005 16:15:40 +0000 (16:15 +0000)
committerPaul Thomas <pault@gcc.gnu.org>
Sun, 14 Aug 2005 16:15:40 +0000 (16:15 +0000)
2005-08-14 Paul Thomas  <pault@gcc.gnu.org>

PR fortran/21432.
* io.c (match_io): Add code to implement PRINT namelist.

2005-08-14 Paul Thomas  <pault@gcc.gnu.org>

PR fortran/21432.
* gfortran.dg/namelist_print_1.f: New test of functionality of
PRINT namelist.
* gfortran.dg/namelist_print_2.f: New test to check that PRINT
namelist generates error with -std=f95.

From-SVN: r103079

gcc/fortran/ChangeLog
gcc/fortran/io.c
gcc/testsuite/ChangeLog
gcc/testsuite/gfortran.dg/namelist_print_1.f [new file with mode: 0644]
gcc/testsuite/gfortran.dg/namelist_print_2.f [new file with mode: 0644]

index 158123a2143ec348b549d2c25f0a974fe471b82c..152ab005eefd26e286796473e222a5a5254046ca 100644 (file)
@@ -1,3 +1,8 @@
+2005-08-14 Paul Thomas  <pault@gcc.gnu.org>
+
+       PR fortran/21432.
+       * io.c (match_io): Add code to implement PRINT namelist.
+
 2005-08-14  Canqun Yang  <canqun@nudt.edu.cn>
 
        * trans-stmt.c (gfc_trans_arithmetic_if): Optimized in case of equal
index 78899aa8453f4a70c494b453e7d05d2a6de47a14..5b27eadc54435e4f55c2b84be8dc67d92e98f711 100644 (file)
@@ -2133,6 +2133,30 @@ match_io (io_kind k)
 
   if (gfc_match_char ('(') == MATCH_NO)
     {
+      /* Treat the non-standard case of PRINT namelist.  */
+      if (k == M_PRINT && (gfc_match_name (name) == MATCH_YES)
+           && !gfc_find_symbol (name, NULL, 1, &sym)
+           && (sym->attr.flavor == FL_NAMELIST))
+       {
+         if (gfc_notify_std (GFC_STD_GNU, "PRINT namelist at "
+                             "%C is an extension") == FAILURE)
+           {
+             m = MATCH_ERROR;
+             goto cleanup;
+           }
+         if (gfc_match_eos () == MATCH_NO)
+           {
+             gfc_error ("Namelist followed by I/O list at %C");
+             m = MATCH_ERROR;
+             goto cleanup;
+           }
+
+         dt->io_unit = default_unit (k);
+         dt->namelist = sym;
+         goto get_io_list;
+       }
+
+
       if (k == M_WRITE)
        goto syntax;
 
index 482d19649fbf19c92877b124f85d73d2d2c0b073..b11e726d68dc6f26d39fcab20bd64d77654de3a9 100644 (file)
@@ -1,3 +1,11 @@
+2005-08-14 Paul Thomas  <pault@gcc.gnu.org>
+
+       PR fortran/21432.
+       * gfortran.dg/namelist_print_1.f: New test of functionality of
+       PRINT namelist.
+       * gfortran.dg/namelist_print_2.f: New test to check that PRINT
+       namelist generates error with -std=f95.
+
 2005-08-14  Ira Rosen  <irar@il.ibm.com>   
 
        PR tree-optimization/23119
diff --git a/gcc/testsuite/gfortran.dg/namelist_print_1.f b/gcc/testsuite/gfortran.dg/namelist_print_1.f
new file mode 100644 (file)
index 0000000..dfd2841
--- /dev/null
@@ -0,0 +1,13 @@
+! Test Non standard PRINT namelist - PR21432
+!
+! Contributor Paul Thomas  <pault@gcc.gnu.org>
+!
+! { dg-do run }
+! { dg-options "-std=gnu" }
+
+      real  x
+      namelist /mynml/ x
+      x = 1
+! ( dg-output "^" }
+      print mynml ! { dg-output "&MYNML(\n|\r\n|\r) X=  1.000000    ,  /(\n|\r\n|\r)" }
+      end
diff --git a/gcc/testsuite/gfortran.dg/namelist_print_2.f b/gcc/testsuite/gfortran.dg/namelist_print_2.f
new file mode 100644 (file)
index 0000000..c37e359
--- /dev/null
@@ -0,0 +1,13 @@
+! Test Non standard PRINT namelist - PR21432 is
+! not accepted by -std=f95
+!
+! Contributor Paul Thomas  <pault@gcc.gnu.org>
+!
+! { dg-do compile }
+! { dg-options "-std=f95" }
+!
+      real  x
+      namelist /mynml/ x
+      x = 1
+      print mynml  ! { dg-error "PRINT namelist.*extension" "" }
+      end