Found by Damian - and ask at
http://groups.google.com/group/comp.lang.fortran/browse_thread/thread/f5ec99089ea72b79#

gfortran rejects
   call type%abstract_parent%tbp()
with
  Error: Base object for type-bound procedure call at (1) is of ABSTRACT
type 'abstract_parent'

As long as "abstract_parent%tbp" is not deferred, I believe the call is valid
and (if not overridden) identically to "type%tpb()", which is accepted.

The check has to be modified to only reject DEFERRED procedures. Regarding the
standard, deferred procedures are invalid as outlined in Note 4.50. I think it
is buried in

C427 (R429) If the type definition contains or inherits (4.5.6.1) a deferred
binding (4.5.4), ABSTRACT shall appear.

However, as any dynamic object is not abstract, one cannot invoke a deferred
procedure.


-- 
           Summary: [OOP] Calling type-bound procedure of abstract type
                    wrongly rejected
           Product: gcc
           Version: 4.5.0
            Status: UNCONFIRMED
          Keywords: rejects-valid
          Severity: normal
          Priority: P3
         Component: fortran
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: burnus at gcc dot gnu dot org


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43193

Reply via email to