Re: [PR fortran/83057, patch] - OPEN without a filename and without STATUS='SCRATCH' could produce a warning

2019-02-22 Thread Harald Anlauf
Committed to trunk as rev. 269134.

Thanks for the review!

Harald

On 02/22/19 06:28, Jerry DeLisle wrote:
> On 2/20/19 2:34 PM, Harald Anlauf wrote:
>> There was a rather obvious bug in the logic for checking the arguments
>> to the OPEN statement when NEWUNIT= was specified, which prohibited
>> the generation of the appropriate error message.
>>
>> Regtested successfully.
>>
>> OK for trunk?
> 
> Yes and thanks for patch.
> 
> Jerry
> 



Re: [PR fortran/83057, patch] - OPEN without a filename and without STATUS='SCRATCH' could produce a warning

2019-02-21 Thread Jerry DeLisle

On 2/20/19 2:34 PM, Harald Anlauf wrote:

There was a rather obvious bug in the logic for checking the arguments
to the OPEN statement when NEWUNIT= was specified, which prohibited
the generation of the appropriate error message.

Regtested successfully.

OK for trunk?


Yes and thanks for patch.

Jerry


[PR fortran/83057, patch] - OPEN without a filename and without STATUS='SCRATCH' could produce a warning

2019-02-20 Thread Harald Anlauf
There was a rather obvious bug in the logic for checking the arguments
to the OPEN statement when NEWUNIT= was specified, which prohibited
the generation of the appropriate error message.

Regtested successfully.

OK for trunk?

Thanks,
Harald

2019-02-20  Harald Anlauf  

PR fortran/83057
* io.c (gfc_match_open): Fix logic in checks of OPEN statement
when NEWUNIT= is specified.

2019-02-20  Harald Anlauf  

PR fortran/83057
* gfortran.dg/newunit_6.f90: New test.

Index: gcc/fortran/io.c
===
--- gcc/fortran/io.c(revision 269028)
+++ gcc/fortran/io.c(working copy)
@@ -2504,16 +2504,15 @@
  goto cleanup;
}
 
-  if (!open->file && open->status)
-{
- if (open->status->expr_type == EXPR_CONSTANT
+  if (!open->file &&
+ (!open->status ||
+  (open->status->expr_type == EXPR_CONSTANT
 && gfc_wide_strncasecmp (open->status->value.character.string,
-  "scratch", 7) != 0)
-  {
+ "scratch", 7) != 0)))
+   {
 gfc_error ("NEWUNIT specifier must have FILE= "
"or STATUS='scratch' at %C");
 goto cleanup;
-  }
}
 }
   else if (!open->unit)
Index: gcc/testsuite/gfortran.dg/newunit_6.f90
===
--- gcc/testsuite/gfortran.dg/newunit_6.f90 (nonexistent)
+++ gcc/testsuite/gfortran.dg/newunit_6.f90 (working copy)
@@ -0,0 +1,9 @@
+! { dg-do compile }
+!
+! PR fortran/83057 - OPEN without a filename and without STATUS='SCRATCH'
+!could produce a warning
+
+  open(newunit=iun,file="file") ! this is ok
+  open(newunit=jun,status="scratch")! this too
+  open(newunit=lun) ! { dg-error "NEWUNIT specifier must have" }
+end