PR fortran/44917
PR fortran/44926
PR fortran/46196
* interface.c (count_types_test): Symmetrize type check.
(generic_correspondence): Ditto.
2010-10-30 Janus Weil <janus@gcc.gnu.org>
PR fortran/44917
PR fortran/44926
PR fortran/46196
* gfortran.dg/typebound_generic_10.f03: New.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@166089
138bc75d-0d04-0410-961f-
82ee72b054a4
+2010-10-30 Janus Weil <janus@gcc.gnu.org>
+
+ PR fortran/44917
+ PR fortran/44926
+ PR fortran/46196
+ * interface.c (count_types_test): Symmetrize type check.
+ (generic_correspondence): Ditto.
+
2010-10-27 Janus Weil <janus@gcc.gnu.org>
PR fortran/46161
/* Find other nonoptional arguments of the same type/rank. */
for (j = i + 1; j < n1; j++)
if ((arg[j].sym == NULL || !arg[j].sym->attr.optional)
- && compare_type_rank_if (arg[i].sym, arg[j].sym))
+ && (compare_type_rank_if (arg[i].sym, arg[j].sym)
+ || compare_type_rank_if (arg[j].sym, arg[i].sym)))
arg[j].flag = k;
k++;
ac2 = 0;
for (f = f2; f; f = f->next)
- if (compare_type_rank_if (arg[i].sym, f->sym))
+ if (compare_type_rank_if (arg[i].sym, f->sym)
+ || compare_type_rank_if (f->sym, arg[i].sym))
ac2++;
if (ac1 > ac2)
if (f1->sym->attr.optional)
goto next;
- if (f2 != NULL && compare_type_rank (f1->sym, f2->sym))
+ if (f2 != NULL && (compare_type_rank (f1->sym, f2->sym)
+ || compare_type_rank (f2->sym, f1->sym)))
goto next;
/* Now search for a disambiguating keyword argument starting at
+2010-10-30 Janus Weil <janus@gcc.gnu.org>
+
+ PR fortran/44917
+ PR fortran/44926
+ PR fortran/46196
+ * gfortran.dg/typebound_generic_10.f03: New.
+
2010-10-30 Nicola Pero <nicola.pero@meta-innovation.com>
Implemented Objective-C 2.0 @property, @synthesize and @dynamic.
--- /dev/null
+! { dg-do compile }
+!
+! PR 49196: [OOP] gfortran compiles invalid generic TBP: dummy arguments are type compatible
+!
+! Contributed by Hans-Werner Boschmann <boschmann@tp1.physik.uni-siegen.de>
+
+module generic
+
+ type :: a_type
+ contains
+ procedure :: a_subroutine
+ end type a_type
+
+ type,extends(a_type) :: b_type
+ contains
+ procedure :: b_subroutine
+ generic :: g_sub => a_subroutine,b_subroutine ! { dg-error "are ambiguous" }
+ end type b_type
+
+contains
+
+ subroutine a_subroutine(this)
+ class(a_type)::this
+ end subroutine a_subroutine
+
+ subroutine b_subroutine(this)
+ class(b_type)::this
+ end subroutine b_subroutine
+
+end module generic
+
+! { dg-final { cleanup-modules "generic" } }