aboutsummaryrefslogtreecommitdiff
path: root/gcc/fortran/symbol.c
diff options
context:
space:
mode:
authorJanus Weil <janus@gcc.gnu.org>2010-05-15 15:52:33 +0200
committerJanus Weil <janus@gcc.gnu.org>2010-05-15 15:52:33 +0200
commitf8dde8af6f4bf8d16fcb12544caef0aad3da56f2 (patch)
treea70032d51f8a223474b6f5114ee467e48b7758f9 /gcc/fortran/symbol.c
parent46c3001944a778ddd079de47697c092bfd82419a (diff)
downloadgcc-f8dde8af6f4bf8d16fcb12544caef0aad3da56f2.zip
gcc-f8dde8af6f4bf8d16fcb12544caef0aad3da56f2.tar.gz
gcc-f8dde8af6f4bf8d16fcb12544caef0aad3da56f2.tar.bz2
re PR fortran/43207 ([OOP] invalid (pointer) assignment to and from abstract non-polymorphic expressions)
2010-05-15 Janus Weil <janus@gcc.gnu.org> PR fortran/43207 PR fortran/43969 * gfortran.h (gfc_class_null_initializer): New prototype. * expr.c (gfc_class_null_initializer): New function to build a NULL initializer for CLASS pointers. * symbol.c (gfc_build_class_symbol): Modify internal naming of class containers. Remove default NULL initialization of $data component. * trans.c (gfc_allocate_array_with_status): Fix wording of an error message. * trans-expr.c (gfc_conv_initializer,gfc_trans_subcomponent_assign): Use new function 'gfc_class_null_initializer'. * trans-intrinsic.c (gfc_conv_allocated): Handle allocatable scalar class variables. 2010-05-15 Janus Weil <janus@gcc.gnu.org> PR fortran/43207 PR fortran/43969 * gfortran.dg/class_18.f03: New. * gfortran.dg/class_19.f03: New. From-SVN: r159431
Diffstat (limited to 'gcc/fortran/symbol.c')
-rw-r--r--gcc/fortran/symbol.c12
1 files changed, 6 insertions, 6 deletions
diff --git a/gcc/fortran/symbol.c b/gcc/fortran/symbol.c
index 8403578..ceb45bf 100644
--- a/gcc/fortran/symbol.c
+++ b/gcc/fortran/symbol.c
@@ -4717,15 +4717,15 @@ gfc_build_class_symbol (gfc_typespec *ts, symbol_attribute *attr,
/* Determine the name of the encapsulating type. */
if ((*as) && (*as)->rank && attr->allocatable)
- sprintf (name, ".class.%s.%d.a", ts->u.derived->name, (*as)->rank);
+ sprintf (name, "class$%s_%d_a", ts->u.derived->name, (*as)->rank);
else if ((*as) && (*as)->rank)
- sprintf (name, ".class.%s.%d", ts->u.derived->name, (*as)->rank);
+ sprintf (name, "class$%s_%d", ts->u.derived->name, (*as)->rank);
else if (attr->pointer)
- sprintf (name, ".class.%s.p", ts->u.derived->name);
+ sprintf (name, "class$%s_p", ts->u.derived->name);
else if (attr->allocatable)
- sprintf (name, ".class.%s.a", ts->u.derived->name);
+ sprintf (name, "class$%s_a", ts->u.derived->name);
else
- sprintf (name, ".class.%s", ts->u.derived->name);
+ sprintf (name, "class$%s", ts->u.derived->name);
gfc_find_symbol (name, ts->u.derived->ns, 0, &fclass);
if (fclass == NULL)
@@ -4759,7 +4759,7 @@ gfc_build_class_symbol (gfc_typespec *ts, symbol_attribute *attr,
c->attr.codimension = attr->codimension;
c->attr.abstract = ts->u.derived->attr.abstract;
c->as = (*as);
- c->initializer = gfc_get_null_expr (NULL);
+ c->initializer = NULL;
/* Add component '$vptr'. */
if (gfc_add_component (fclass, "$vptr", &c) == FAILURE)