diff options
author | Tobias Burnus <burnus@net-b.de> | 2007-11-15 16:12:03 +0100 |
---|---|---|
committer | Tobias Burnus <burnus@gcc.gnu.org> | 2007-11-15 16:12:03 +0100 |
commit | bb343a6c9b448d036a02a3eaeb475f76f1871577 (patch) | |
tree | 87b38110bd972bf830aae9bed26b88a27b52c998 /gcc/fortran/resolve.c | |
parent | ea6684648c9c2bf8d3e2e656a3dd1726768a87e8 (diff) | |
download | gcc-bb343a6c9b448d036a02a3eaeb475f76f1871577.zip gcc-bb343a6c9b448d036a02a3eaeb475f76f1871577.tar.gz gcc-bb343a6c9b448d036a02a3eaeb475f76f1871577.tar.bz2 |
re PR fortran/33917 (Rejects valid PROCEDURE declarations)
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.
From-SVN: r130202
Diffstat (limited to 'gcc/fortran/resolve.c')
-rw-r--r-- | gcc/fortran/resolve.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/gcc/fortran/resolve.c b/gcc/fortran/resolve.c index 3f3ef03..586d601 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) |