Message ID | 20150515151915.GG82729@troutmask.apl.washington.edu |
---|---|
State | New |
Headers | show |
Le 15/05/2015 17:19, Steve Kargl a écrit : > Regression tested on trunk. OK to commit? > Hello, > Index: gcc/fortran/decl.c > =================================================================== > --- gcc/fortran/decl.c (revision 223094) > +++ gcc/fortran/decl.c (working copy) > @@ -6968,7 +6968,8 @@ gfc_match_protected (void) > gfc_symbol *sym; > match m; > > - if (gfc_current_ns->proc_name->attr.flavor != FL_MODULE) > + if (gfc_current_ns->proc_name > + && gfc_current_ns->proc_name->attr.flavor != FL_MODULE) > { > gfc_error ("PROTECTED at %C only allowed in specification " > "part of a module"); Wouldn't one get a slightly better error message if using !gfc_current_ns->proc_name || gfc_current_ns->proc_name->attr.flavor != FL_MODULE as condition ? OK with that change. Thanks. Mikael
On Sat, May 16, 2015 at 01:58:30PM +0200, Mikael Morin wrote: > > Index: gcc/fortran/decl.c > > =================================================================== > > --- gcc/fortran/decl.c (revision 223094) > > +++ gcc/fortran/decl.c (working copy) > > @@ -6968,7 +6968,8 @@ gfc_match_protected (void) > > gfc_symbol *sym; > > match m; > > > > - if (gfc_current_ns->proc_name->attr.flavor != FL_MODULE) > > + if (gfc_current_ns->proc_name > > + && gfc_current_ns->proc_name->attr.flavor != FL_MODULE) > > { > > gfc_error ("PROTECTED at %C only allowed in specification " > > "part of a module"); > > Wouldn't one get a slightly better error message if using > !gfc_current_ns->proc_name > || gfc_current_ns->proc_name->attr.flavor != FL_MODULE > as condition ? > > OK with that change. Thanks. > Committed ar r223324 with your suggested change. Indeed, a better error messaage emitted.
Index: gcc/fortran/decl.c =================================================================== --- gcc/fortran/decl.c (revision 223094) +++ gcc/fortran/decl.c (working copy) @@ -6968,7 +6968,8 @@ gfc_match_protected (void) gfc_symbol *sym; match m; - if (gfc_current_ns->proc_name->attr.flavor != FL_MODULE) + if (gfc_current_ns->proc_name + && gfc_current_ns->proc_name->attr.flavor != FL_MODULE) { gfc_error ("PROTECTED at %C only allowed in specification " "part of a module"); Index: gcc/testsuite/gfortran.dg/protected_9.f90 =================================================================== --- gcc/testsuite/gfortran.dg/protected_9.f90 (revision 0) +++ gcc/testsuite/gfortran.dg/protected_9.f90 (working copy) @@ -0,0 +1,16 @@ +! { dg-do compile } +! PR fortran/66052 +! +! +! Original code from Gerhard Steinmetz +! <gerhard dot steinmetz dot fortran at t-online dot de> +module a + contains + protected x ! { dg-error "Unexpected attribute declaration statement" } +end module a + +program p + contains + protected x ! { dg-error "Unexpected attribute declaration statement" } +end +