[Bug fortran/43256] [OOP] TBP with missing optional arg
janus at gcc dot gnu dot org
gcc-bugzilla@gcc.gnu.org
Fri Mar 5 09:56:00 GMT 2010
------- Comment #7 from janus at gcc dot gnu dot org 2010-03-05 09:56 -------
(In reply to comment #6)
> > ABSTRACT INTERFACE '...' must not be referenced at (1)
>
> This was PR41873 and was fixed by querying "expr->value.function.name", which
> fails now. We should find a better way to silence this error message for
> polymorphic calls.
To solve this I propose the following:
Index: gcc/fortran/resolve.c
===================================================================
--- gcc/fortran/resolve.c (revision 157233)
+++ gcc/fortran/resolve.c (working copy)
@@ -2556,8 +2556,8 @@ resolve_function (gfc_expr *expr)
}
/* If this ia a deferred TBP with an abstract interface (which may
- of course be referenced), expr->value.function.name will be set. */
- if (sym && sym->attr.abstract && !expr->value.function.name)
+ of course be referenced), expr->value.function.esym will be set. */
+ if (sym && sym->attr.abstract && !expr->value.function.esym)
{
gfc_error ("ABSTRACT INTERFACE '%s' must not be referenced at %L",
sym->name, &expr->where);
This leaves us with the following regressions:
FAIL: gfortran.dg/dynamic_dispatch_1.f03 -O0 (test for excess errors)
FAIL: gfortran.dg/dynamic_dispatch_3.f03 -O0 (test for excess errors)
FAIL: gfortran.dg/dynamic_dispatch_4.f03 -O0 (test for excess errors)
FAIL: gfortran.dg/dynamic_dispatch_6.f03 -O0 (test for excess errors)
due to the error
Error: Type mismatch in argument '...' at (1); passed CLASS(...) to CLASS(...)
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43256
More information about the Gcc-bugs
mailing list