public inbox for gcc-bugs@sourceware.org help / color / mirror / Atom feed
From: "pault at gcc dot gnu.org" <gcc-bugzilla@gcc.gnu.org> To: gcc-bugs@gcc.gnu.org Subject: [Bug fortran/96325] Unclassifiable statement with syntax similar to a type-bound procedure call is accepted Date: Wed, 29 Jul 2020 14:54:59 +0000 [thread overview] Message-ID: <bug-96325-4-d8nX7VDD71@http.gcc.gnu.org/bugzilla/> (raw) In-Reply-To: <bug-96325-4@http.gcc.gnu.org/bugzilla/> https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96325 Paul Thomas <pault at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |pault at gcc dot gnu.org --- Comment #12 from Paul Thomas <pault at gcc dot gnu.org> --- (In reply to kargl from comment #10) > (In reply to jvdelisle from comment #9) > > I regression tested the patch in comment 8 and see these failures. > > > > FAIL: gfortran.dg/pr93423.f90 -O (test for excess errors) > > FAIL: gfortran.dg/typebound_call_31.f90 -O (test for errors, line 14) > > FAIL: gfortran.dg/typebound_call_31.f90 -O (test for excess errors) > > Thanks for testing. Does the patch that follows fix the regressions? > gfortran treats components and type bound procedures separately. I've > (hopefully) adapted the patch to whether foo is either. > > Index: gcc/fortran/primary.c > =================================================================== > --- gcc/fortran/primary.c (revision 280157) > +++ gcc/fortran/primary.c (working copy) > @@ -2240,6 +2240,18 @@ gfc_match_varspec (gfc_expr *primary, int equiv_flag, > inquiry = is_inquiry_ref (name, &tmp); > if (inquiry) > sym = NULL; > + else > + { > + component = gfc_find_component (sym, name, false, false, &tmp); > + tbp = gfc_find_typebound_proc (sym, &t, name, false, > &gfc_current_locus); > + if (!component && !tbp) > + { > + gfc_error ("%qs at %C is neither a component nor a type " > + "bound procedure of the derived " > + "type %qs", name, sym->name); > + return MATCH_ERROR; > + } > + } > > if (sep == '%' && primary->ts.type != BT_UNKNOWN) > intrinsic = true; Hi Steve, Given your comment 6, I set too first thing this morning and located the bug by searching the ChangeLogs for candidates. That I was the culprit is galling to say the least of it. My version of the fix is: index d73898473df..6f032fbabfd 100644 --- a/gcc/fortran/primary.c +++ b/gcc/fortran/primary.c @@ -2327,10 +2327,12 @@ gfc_match_varspec (gfc_expr *primary, int equiv_flag, bool sub_flag, else component = NULL; - /* In some cases, returning MATCH_NO gives a better error message. Most - cases return "Unclassifiable statement at..." */ if (intrinsic && !inquiry) - return MATCH_NO; + { + gfc_error ("%qs at %C is not an inquiry reference to an " + "intrinsic type", name); + return MATCH_ERROR; + } else if (component == NULL && !inquiry) return MATCH_ERROR; Just a couple of nits concerning your patch: The false typebound call appears after the 'r1' components ref, which is not a derived type or class type. That is why the test for an inquiry reference is appropriate and is tested for in this block. Your error message comes up with t2 as being the type. I suggest: > + gfc_error ("%qs at %C is not an inquiry reference to an " > + "intrinsic type", name); or some such. Also, you have to get rid of the comment and the dead code that was modified in my patch. Thanks for the patch. OK for trunk when the error message is corrected and the comment plus dead code removed. Cheers Paul
next prev parent reply other threads:[~2020-07-29 14:54 UTC|newest] Thread overview: 28+ messages / expand[flat|nested] mbox.gz Atom feed top 2020-07-26 20:05 [Bug fortran/96325] New: Invalid call of a type-bound procedure " chilikin.k at gmail dot com 2020-07-26 20:29 ` [Bug fortran/96325] " kargl at gcc dot gnu.org 2020-07-26 20:43 ` chilikin.k at gmail dot com 2020-07-26 20:47 ` chilikin.k at gmail dot com 2020-07-26 20:57 ` chilikin.k at gmail dot com 2020-07-27 0:11 ` [Bug fortran/96325] Unclassifiable statement with syntax similar to a type-bound procedure call " kargl at gcc dot gnu.org 2020-07-28 15:47 ` kargl at gcc dot gnu.org 2020-07-28 21:48 ` chilikin.k at gmail dot com 2020-07-28 22:53 ` kargl at gcc dot gnu.org 2020-07-29 1:46 ` jvdelisle at charter dot net 2020-07-29 2:25 ` kargl at gcc dot gnu.org 2020-07-29 2:46 ` jvdelisle at charter dot net 2020-07-29 14:54 ` pault at gcc dot gnu.org [this message] 2020-07-29 16:18 ` sgk at troutmask dot apl.washington.edu 2020-07-29 16:53 ` paul.richard.thomas at gmail dot com 2020-07-29 17:59 ` sgk at troutmask dot apl.washington.edu 2020-08-02 9:35 ` cvs-commit at gcc dot gnu.org 2020-08-02 21:56 ` jvdelisle at charter dot net 2020-08-02 22:46 ` ro at gcc dot gnu.org 2020-08-03 8:26 ` paul.richard.thomas at gmail dot com 2020-08-03 8:29 ` paul.richard.thomas at gmail dot com 2020-08-03 13:11 ` dominiq at lps dot ens.fr 2020-08-04 6:54 ` cvs-commit at gcc dot gnu.org 2021-01-07 14:59 ` cvs-commit at gcc dot gnu.org 2021-01-07 15:00 ` cvs-commit at gcc dot gnu.org 2021-01-07 16:33 ` cvs-commit at gcc dot gnu.org 2021-01-07 16:34 ` cvs-commit at gcc dot gnu.org 2021-01-07 17:25 ` pault at gcc dot gnu.org
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=bug-96325-4-d8nX7VDD71@http.gcc.gnu.org/bugzilla/ \ --to=gcc-bugzilla@gcc.gnu.org \ --cc=gcc-bugs@gcc.gnu.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).