From 60de1c7df5486e81b52c9db5003abba08af7b3f9 Mon Sep 17 00:00:00 2001 From: Tobias Burnus Date: Tue, 30 Jul 2013 09:20:43 +0200 Subject: re PR fortran/57530 ([OOP] Wrongly rejects type_pointer => class_target (which have identical declared type)) 2013-07-30 Tobias Burnus PR fortran/57530 * symbol.c (gfc_type_compatible): A type is type compatible with a class if both have the same declared type. * interface.c (compare_type): Reject CLASS/TYPE even if they are type compatible. From-SVN: r201329 --- gcc/fortran/symbol.c | 3 +++ 1 file changed, 3 insertions(+) (limited to 'gcc/fortran/symbol.c') diff --git a/gcc/fortran/symbol.c b/gcc/fortran/symbol.c index c72974d..9d23e8b 100644 --- a/gcc/fortran/symbol.c +++ b/gcc/fortran/symbol.c @@ -4489,6 +4489,9 @@ gfc_type_compatible (gfc_typespec *ts1, gfc_typespec *ts2) if (is_derived1 && is_derived2) return gfc_compare_derived_types (ts1->u.derived, ts2->u.derived); + if (is_derived1 && is_class2) + return gfc_compare_derived_types (ts1->u.derived, + ts2->u.derived->components->ts.u.derived); if (is_class1 && is_derived2) return gfc_type_is_extension_of (ts1->u.derived->components->ts.u.derived, ts2->u.derived); -- cgit v1.1