------- Comment #5 from burnus at gcc dot gnu dot org 2009-10-25 14:33 ------- print *, associated(a,f(a)) ! Valid, but error
If one steps in the debugger, one see that the TARGET= argument of associate but "f", i.e. target->expr_type == EXPR_FUNCTION, target->symtree->n.sym->name "f" and target->value.function->esym->name == "f". Patch - not regtested, but seems to work. --- resolve.c (Revision 153537) +++ resolve.c @@ -1867,6 +1867,11 @@ resolve_generic_f0 (gfc_expr *expr, gfc_ { expr->value.function.name = s->name; expr->value.function.esym = s; + /* Copy attributes such that checking attr.pointer works, but keep + attr.generic as we do not (want to) copy all the other properties + of the specific. */ + expr->symtree->n.sym->attr = s->attr; + expr->symtree->n.sym->attr.generic = 1; if (s->ts.type != BT_UNKNOWN) expr->ts = s->ts; -- burnus at gcc dot gnu dot org changed: What |Removed |Added ---------------------------------------------------------------------------- AssignedTo|unassigned at gcc dot gnu |burnus at gcc dot gnu dot |dot org |org Status|UNCONFIRMED |ASSIGNED Ever Confirmed|0 |1 Last reconfirmed|0000-00-00 00:00:00 |2009-10-25 14:33:13 date| | http://gcc.gnu.org/bugzilla/show_bug.cgi?id=41777