This is the mail archive of the fortran@gcc.gnu.org mailing list for the GNU Fortran project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Allocatable components to the right of a nonzero-rank part reference


According to the standard, "A part-name to the right of a part-ref with
nonzero rank shall not have the ALLOCATABLE or POINTER attribute." (F2003 draft
standard, page 105, lines 12-13).

Currently we accept it for ALLOCATABLEs for some cases (e.g. as procedure
arguments, and in WHEREs), but get ICEs for other cases (e.g. plain
array assignments).

The question now is what we should do about this. We could

        (a) Allways reject (attached patch does that).

        (b) Accept it as an extension.  Those cases that don't work can be
        implemented eventually (I can open a PR).  This would be a nice
        extension, but it has the downside that it could get quite
        complicated.  I haven't thought a lot about it, but I guess that
        e.g.

                p => x(:)%y(1)

        where y is an allocatable component, is somewhere between
        difficult and impossible to implement.

        (c) Like (b), but reject the most difficult cases.

Perhaps we could do (a) for 4.2, and (c) for 4.3?  Opinions?



        Erik

Attachment: obv.diff
Description: Text document


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]