diff options
author | eedelman <eedelman@138bc75d-0d04-0410-961f-82ee72b054a4> | 2006-11-19 21:27:16 +0000 |
---|---|---|
committer | eedelman <eedelman@138bc75d-0d04-0410-961f-82ee72b054a4> | 2006-11-19 21:27:16 +0000 |
commit | 8df9e01eb0ce992aabeeabb3560622c963f7a677 (patch) | |
tree | af12fdcf3beba892bb802c4d80e240632d1ab3ab /gcc/fortran/resolve.c | |
parent | 28b23f698feb03d03e38b7c65ee5e65368741494 (diff) | |
download | ppe42-gcc-8df9e01eb0ce992aabeeabb3560622c963f7a677.tar.gz ppe42-gcc-8df9e01eb0ce992aabeeabb3560622c963f7a677.zip |
fortran/
2006-11-19 Erik Edelmann <eedelman@gcc.gnu.org>
* resolve.c (resolve_ref): Check for ALLOCATABLEs to the right of
nonzero rank part references too.
testsuite/
2006-11-19 Erik Edelmann <eedelman@gcc.gnu.org>
* gfortran.dg/alloc_comp_constraint_5.f90: New.
* gfortran.dg/alloc_comp_assign_2.f90: Removed invalid code.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@118999 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/fortran/resolve.c')
-rw-r--r-- | gcc/fortran/resolve.c | 24 |
1 files changed, 17 insertions, 7 deletions
diff --git a/gcc/fortran/resolve.c b/gcc/fortran/resolve.c index 31e1d7c2426..3d567cb7cad 100644 --- a/gcc/fortran/resolve.c +++ b/gcc/fortran/resolve.c @@ -2797,14 +2797,24 @@ resolve_ref (gfc_expr * expr) break; case REF_COMPONENT: - if ((current_part_dimension || seen_part_dimension) - && ref->u.c.component->pointer) + if (current_part_dimension || seen_part_dimension) { - gfc_error - ("Component to the right of a part reference with nonzero " - "rank must not have the POINTER attribute at %L", - &expr->where); - return FAILURE; + if (ref->u.c.component->pointer) + { + gfc_error + ("Component to the right of a part reference with nonzero " + "rank must not have the POINTER attribute at %L", + &expr->where); + return FAILURE; + } + else if (ref->u.c.component->allocatable) + { + gfc_error + ("Component to the right of a part reference with nonzero " + "rank must not have the ALLOCATABLE attribute at %L", + &expr->where); + return FAILURE; + } } n_components++; |