re PR fortran/56575 (An invalid OO code causes ICE)
2013-03-13 Paul Thomas <pault@gcc.gnu.org> PR fortran/56575 * expr.c (gfc_default_initializer): Check that a class declared type has any components. * resolve.c (resolve_fl_derived0): On failing the test for C437 set the type to BT_UNKNOWN to prevent repeat error messages. 2013-03-13 Paul Thomas <pault@gcc.gnu.org> PR fortran/56575 * gfortran.dg/class_56.f90: New test. From-SVN: r196627
This commit is contained in:
parent
0716306310
commit
4c597d6afc
|
@ -1,3 +1,11 @@
|
|||
2013-03-13 Paul Thomas <pault@gcc.gnu.org>
|
||||
|
||||
PR fortran/56575
|
||||
* expr.c (gfc_default_initializer): Check that a class declared
|
||||
type has any components.
|
||||
* resolve.c (resolve_fl_derived0): On failing the test for C437
|
||||
set the type to BT_UNKNOWN to prevent repeat error messages.
|
||||
|
||||
2013-03-10 Paul Thomas <pault@gcc.gnu.org>
|
||||
|
||||
PR fortran/55362
|
||||
|
|
|
@ -3759,7 +3759,8 @@ gfc_default_initializer (gfc_typespec *ts)
|
|||
types (otherwise we could use gfc_has_default_initializer()). */
|
||||
for (comp = ts->u.derived->components; comp; comp = comp->next)
|
||||
if (comp->initializer || comp->attr.allocatable
|
||||
|| (comp->ts.type == BT_CLASS && CLASS_DATA (comp)->attr.allocatable))
|
||||
|| (comp->ts.type == BT_CLASS && CLASS_DATA (comp)
|
||||
&& CLASS_DATA (comp)->attr.allocatable))
|
||||
break;
|
||||
|
||||
if (!comp)
|
||||
|
|
|
@ -11967,6 +11967,8 @@ resolve_fl_derived0 (gfc_symbol *sym)
|
|||
{
|
||||
gfc_error ("Component '%s' with CLASS at %L must be allocatable "
|
||||
"or pointer", c->name, &c->loc);
|
||||
/* Prevent a recurrence of the error. */
|
||||
c->ts.type = BT_UNKNOWN;
|
||||
return FAILURE;
|
||||
}
|
||||
|
||||
|
|
|
@ -1,3 +1,8 @@
|
|||
2013-03-13 Paul Thomas <pault@gcc.gnu.org>
|
||||
|
||||
PR fortran/56575
|
||||
* gfortran.dg/class_56.f90: New test.
|
||||
|
||||
2013-03-10 Paul Thomas <pault@gcc.gnu.org>
|
||||
|
||||
PR fortran/55362
|
||||
|
|
|
@ -0,0 +1,21 @@
|
|||
! { dg-do compile }
|
||||
! Test fix for PR56575.
|
||||
!
|
||||
! Contributed by A Kasahara <latlon90180+gcc_bugzilla@gmail.com>
|
||||
!
|
||||
module lib_container
|
||||
implicit none
|
||||
|
||||
type:: Object
|
||||
end type Object
|
||||
|
||||
type:: Container
|
||||
class(Object):: v ! { dg-error "must be allocatable or pointer" }
|
||||
end type Container
|
||||
|
||||
contains
|
||||
|
||||
subroutine proc(self)
|
||||
class(Container), intent(inout):: self
|
||||
end subroutine proc
|
||||
end module lib_container
|
Loading…
Reference in New Issue