From 60fa39313ecb5f48392bf092c34b1a6a7a64f587 Mon Sep 17 00:00:00 2001 From: Tobias Burnus Date: Wed, 11 Apr 2012 15:08:32 +0200 Subject: re PR fortran/52729 (Symbol has no implicit type in SELECT TYPE block) 2012-04-11 Tobias Burnus PR fortran/52729 * resolve.c (resolve_symbol): Fix searching for parent NS decl. 2012-04-11 Tobias Burnus PR fortran/52729 * gfortran.dg/block_11.f90: New. From-SVN: r186318 --- gcc/fortran/resolve.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) (limited to 'gcc/fortran/resolve.c') diff --git a/gcc/fortran/resolve.c b/gcc/fortran/resolve.c index b63a0c6..34b3e9e 100644 --- a/gcc/fortran/resolve.c +++ b/gcc/fortran/resolve.c @@ -12246,7 +12246,10 @@ resolve_symbol (gfc_symbol *sym) symbol_attribute class_attr; gfc_array_spec *as; - if (sym->attr.flavor == FL_UNKNOWN) + if (sym->attr.flavor == FL_UNKNOWN + || (sym->attr.flavor == FL_PROCEDURE && !sym->attr.intrinsic + && !sym->attr.generic && !sym->attr.external + && sym->attr.if_source == IFSRC_UNKNOWN)) { /* If we find that a flavorless symbol is an interface in one of the @@ -12270,9 +12273,10 @@ resolve_symbol (gfc_symbol *sym) /* Otherwise give it a flavor according to such attributes as it has. */ - if (sym->attr.external == 0 && sym->attr.intrinsic == 0) + if (sym->attr.flavor == FL_UNKNOWN && sym->attr.external == 0 + && sym->attr.intrinsic == 0) sym->attr.flavor = FL_VARIABLE; - else + else if (sym->attr.flavor == FL_UNKNOWN) { sym->attr.flavor = FL_PROCEDURE; if (sym->attr.dimension) -- cgit v1.1