summaryrefslogtreecommitdiffstats
path: root/gcc/fortran/resolve.c
diff options
context:
space:
mode:
authorburnus <burnus@138bc75d-0d04-0410-961f-82ee72b054a4>2007-11-15 15:12:03 +0000
committerburnus <burnus@138bc75d-0d04-0410-961f-82ee72b054a4>2007-11-15 15:12:03 +0000
commit741136441d1b8e0302021f66bf6c33957c7404b2 (patch)
tree87b38110bd972bf830aae9bed26b88a27b52c998 /gcc/fortran/resolve.c
parentf4d72632e92471fa96075ef83cdec3eb6d05df98 (diff)
downloadppe42-gcc-741136441d1b8e0302021f66bf6c33957c7404b2.tar.gz
ppe42-gcc-741136441d1b8e0302021f66bf6c33957c7404b2.zip
2007-11-15 Tobias Burnus <burnus@net-b.de>
PR fortran/33917 * decl.c (match_procedure_decl): Pre-resolve interface. * resolve.c (resolve_symbol): Reject interfaces later declared in procedure statements. 2007-11-15 Tobias Burnus <burnus@net-b.de> PR fortran/33917 * gfortran.dg/proc_decl_11.f90: New. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@130202 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/fortran/resolve.c')
-rw-r--r--gcc/fortran/resolve.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/gcc/fortran/resolve.c b/gcc/fortran/resolve.c
index 3f3ef03aba6..586d601985f 100644
--- a/gcc/fortran/resolve.c
+++ b/gcc/fortran/resolve.c
@@ -7615,8 +7615,10 @@ resolve_symbol (gfc_symbol *sym)
if (sym->attr.procedure && sym->interface
&& sym->attr.if_source != IFSRC_DECL)
{
- while (sym->interface->interface)
- sym->interface = sym->interface->interface;
+ if (sym->interface->attr.procedure)
+ gfc_error ("Interface '%s', used by procedure '%s' at %L, is declared "
+ "in a later PROCEDURE statement", sym->interface->name,
+ sym->name,&sym->declared_at);
/* Get the attributes from the interface (now resolved). */
if (sym->interface->attr.if_source || sym->interface->attr.intrinsic)
OpenPOWER on IntegriCloud