re PR fortran/56575 (An invalid OO code causes ICE)
2013-03-10 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/56575 * gfortran.dg/class_56.f90: New test. From-SVN: r196580
This commit is contained in:
parent
d16d44d338
commit
8ec4321faf
@ -1,3 +1,11 @@
|
|||||||
|
2013-03-10 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-03 Mikael Morin <mikael@gcc.gnu.org>
|
2013-03-03 Mikael Morin <mikael@gcc.gnu.org>
|
||||||
|
|
||||||
PR fortran/56477
|
PR fortran/56477
|
||||||
|
@ -3886,7 +3886,8 @@ gfc_default_initializer (gfc_typespec *ts)
|
|||||||
types (otherwise we could use gfc_has_default_initializer()). */
|
types (otherwise we could use gfc_has_default_initializer()). */
|
||||||
for (comp = ts->u.derived->components; comp; comp = comp->next)
|
for (comp = ts->u.derived->components; comp; comp = comp->next)
|
||||||
if (comp->initializer || comp->attr.allocatable
|
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;
|
break;
|
||||||
|
|
||||||
if (!comp)
|
if (!comp)
|
||||||
|
@ -12866,6 +12866,8 @@ resolve_fl_derived0 (gfc_symbol *sym)
|
|||||||
{
|
{
|
||||||
gfc_error ("Component '%s' with CLASS at %L must be allocatable "
|
gfc_error ("Component '%s' with CLASS at %L must be allocatable "
|
||||||
"or pointer", c->name, &c->loc);
|
"or pointer", c->name, &c->loc);
|
||||||
|
/* Prevent a recurrence of the error. */
|
||||||
|
c->ts.type = BT_UNKNOWN;
|
||||||
return FAILURE;
|
return FAILURE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,3 +1,8 @@
|
|||||||
|
2013-03-10 Paul Thomas <pault@gcc.gnu.org>
|
||||||
|
|
||||||
|
PR fortran/56575
|
||||||
|
* gfortran.dg/class_56.f90: New test.
|
||||||
|
|
||||||
2013-03-09 Richard Sandiford <rdsandiford@googlemail.com>
|
2013-03-09 Richard Sandiford <rdsandiford@googlemail.com>
|
||||||
|
|
||||||
PR middle-end/56524
|
PR middle-end/56524
|
||||||
@ -330,7 +335,7 @@
|
|||||||
2013-02-21 Marek Polacek <polacek@redhat.com>
|
2013-02-21 Marek Polacek <polacek@redhat.com>
|
||||||
|
|
||||||
PR tree-optimization/56398
|
PR tree-optimization/56398
|
||||||
* g++.dg/torture/pr56398.C: New test.
|
* g++.dg/torture/pr56398.C: New test.
|
||||||
|
|
||||||
2013-02-21 Jakub Jelinek <jakub@redhat.com>
|
2013-02-21 Jakub Jelinek <jakub@redhat.com>
|
||||||
|
|
||||||
|
22
gcc/testsuite/gfortran.dg/class_56.f90
Normal file
22
gcc/testsuite/gfortran.dg/class_56.f90
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
! { 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
Block a user