public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
From: "cvs-commit at gcc dot gnu.org" <gcc-bugzilla@gcc.gnu.org>
To: gcc-bugs@gcc.gnu.org
Subject: [Bug fortran/86148] parameterized type compile time error
Date: Thu, 29 Feb 2024 02:15:52 +0000	[thread overview]
Message-ID: <bug-86148-4-wxJRLZyCBZ@http.gcc.gnu.org/bugzilla/> (raw)
In-Reply-To: <bug-86148-4@http.gcc.gnu.org/bugzilla/>

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=86148

--- Comment #7 from GCC Commits <cvs-commit at gcc dot gnu.org> ---
The master branch has been updated by Alexander Westbrooks alexanderw
<alexanderw@gcc.gnu.org>:

https://gcc.gnu.org/g:edfe198084338691d0facc86bf8dfa6ede3ca676

commit r14-9229-gedfe198084338691d0facc86bf8dfa6ede3ca676
Author: Alexander Westbrooks <alexanderw@gcc.gnu.org>
Date:   Wed Feb 28 20:03:46 2024 -0600

    Fortran - Error compiling PDT Type-bound Procedures [PR82943/86148/86268]

    This patch allows parameterized derived types to compile successfully
    when typebound procedures are specified in the type specification.
    Furthermore, it allows function calls for PDTs by setting the
    f2k_derived space of PDT instances to reference their original template,
    thereby giving it referential access to the typebound procedures of the
    template. Lastly, it adds a check for deferred length parameters of
    PDTs in CLASS declaration statements, and correctly throws an error if
    such declarations are missing POINTER or ALLOCATABLE attributes.

    2024-02-25  Alexander Westbrooks  <alexanderw@gcc.gnu.org>

    gcc/fortran/ChangeLog:
            PR fortran/82943
            PR fortran/86148
            PR fortran/86268
            * decl.cc (gfc_get_pdt_instance): Set the PDT instance field
            'f2k_derived', if not set already, to point to the given
            PDT template 'f2k_derived' namespace in order to give the
            PDT instance referential access to the typebound procedures
            of the template.
            * gfortran.h (gfc_pdt_is_instance_of): Add prototype.
            * resolve.cc (resolve_typebound_procedure): If the derived type
            does not have the attribute 'pdt_template' set, compare the
            dummy argument to the 'resolve_bindings_derived' type like usual.
            If the derived type is a 'pdt_template', then check if the
            dummy argument is an instance of the PDT template. If the derived
            type is a PDT template, and the dummy argument is an instance of
            that template, but the dummy argument 'param_list' is not
            SPEC_ASSUMED, check if there are any LEN parameters in the
            dummy argument. If there are no LEN parameters, then this implies
            that there are only KIND parameters in the dummy argument.
            If there are LEN parameters, this would be an error, for all
            LEN parameters for the dummy argument MUST be assumed for
            typebound procedures of PDTs.
            (resolve_pdt): Add a check for ALLOCATABLE and POINTER attributes
for
            SPEC_DEFERRED parameters of PDT class symbols.  ALLOCATABLE and
            POINTER attributes for a PDT class symbol are stored in the
            'class_pointer' and 'allocatable' attributes of the '_data'
            component respectively.
            * symbol.cc (gfc_pdt_is_instance_of): New function.

    gcc/testsuite/ChangeLog:
            PR fortran/82943
            PR fortran/86148
            PR fortran/86268
            * gfortran.dg/pdt_4.f03: Update modified error message.
            * gfortran.dg/pdt_34.f03: New test.
            * gfortran.dg/pdt_35.f03: New test.
            * gfortran.dg/pdt_36.f03: New test.
            * gfortran.dg/pdt_37.f03: New test.

    Signed-off-by: Alexander Westbrooks <alexanderw@gcc.gnu.org>

  parent reply	other threads:[~2024-02-29  2:15 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <bug-86148-4@http.gcc.gnu.org/bugzilla/>
2020-07-13 21:29 ` dominiq at lps dot ens.fr
2021-03-22 21:07 ` van.snyder at sbcglobal dot net
2021-03-22 21:53 ` van.snyder at sbcglobal dot net
2024-01-20 18:51 ` ctechnodev at gmail dot com
2024-02-29  2:15 ` cvs-commit at gcc dot gnu.org [this message]
2024-02-29 19:43 ` alexanderw 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-86148-4-wxJRLZyCBZ@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: link
Be 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).