Bug 37423 - Fortran 2003: DEFERRED bindings not yet implemented
Summary: Fortran 2003: DEFERRED bindings not yet implemented
Status: RESOLVED FIXED
Alias: None
Product: gcc
Classification: Unclassified
Component: fortran (show other bugs)
Version: unknown
: P3 enhancement
Target Milestone: ---
Assignee: Daniel Kraft
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2008-09-08 14:05 UTC by Daniel Kraft
Modified: 2009-04-03 14:46 UTC (History)
1 user (show)

See Also:
Host:
Target:
Build:
Known to work:
Known to fail:
Last reconfirmed: 2008-09-08 14:06:03


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Daniel Kraft 2008-09-08 14:05:55 UTC
In the current implementation of Fortran 2003 type-bound procedures, DEFERRED bindings are not yet implemented.  The DEFERRED type attribute will be parsed but results in an immediate error.
Comment 1 Daniel Kraft 2008-12-07 17:12:16 UTC
A proposed patch for 4.5 can be found at: http://gcc.gnu.org/ml/fortran/2008-12/msg00109.html
Comment 2 Daniel Kraft 2009-03-29 17:47:13 UTC
Subject: Bug 37423

Author: domob
Date: Sun Mar 29 17:47:00 2009
New Revision: 145248

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=145248
Log:
2009-03-29  Daniel Kraft  <d@domob.eu>

	PR fortran/37423
	* gfortran.h (struct gfc_typebound_proc): Added new flag `deferred' and
	added a comment explaining DEFERRED binding handling.
	* decl.c (match_binding_attributes): Really match DEFERRED attribute.
	(match_procedure_in_type): Really match PROCEDURE(interface) syntax
	and do some validity checks for DEFERRED and this construct.
	* module.c (binding_overriding): New string constant for DEFERRED.
	(mio_typebound_proc): Module-IO DEFERRED flag.
	* resolve.c (check_typebound_override): Ensure that a non-DEFERRED
	binding is not overridden by a DEFERRED one.
	(resolve_typebound_procedure): Allow abstract interfaces as targets
	for DEFERRED bindings.
	(ensure_not_abstract_walker), (ensure_not_abstract): New methods.
	(resolve_fl_derived): Use new `ensure_not_abstract' method for
	non-ABSTRACT types extending ABSTRACT ones to ensure each DEFERRED
	binding is overridden.
	(check_typebound_baseobject): New method.
	(resolve_compcall), (resolve_typebound_call): Check base-object of
	the type-bound procedure call.
	* gfc-internals.texi (Type-bound procedures): Document a little bit
	about internal handling of DEFERRED bindings.

2009-03-29  Daniel Kraft  <d@domob.eu>

	PR fortran/37423
	* gfortran.dg/typebound_proc_4.f03: Remove not-implemented check for
	DEFERRED bindings.
	* gfortran.dg/typebound_proc_9.f03: New test.
	* gfortran.dg/typebound_proc_10.f03: New test.
	* gfortran.dg/typebound_proc_11.f03: New test.
	* gfortran.dg/abstract_type_5.f03: New test.

Added:
    trunk/gcc/testsuite/gfortran.dg/abstract_type_5.f03
    trunk/gcc/testsuite/gfortran.dg/typebound_proc_10.f03
    trunk/gcc/testsuite/gfortran.dg/typebound_proc_11.f03
    trunk/gcc/testsuite/gfortran.dg/typebound_proc_9.f03
Modified:
    trunk/gcc/fortran/ChangeLog
    trunk/gcc/fortran/decl.c
    trunk/gcc/fortran/gfc-internals.texi
    trunk/gcc/fortran/gfortran.h
    trunk/gcc/fortran/module.c
    trunk/gcc/fortran/resolve.c
    trunk/gcc/testsuite/ChangeLog
    trunk/gcc/testsuite/gfortran.dg/typebound_proc_4.f03

Comment 3 Daniel Kraft 2009-04-03 14:46:23 UTC
Fixed on trunk (4.5)