aboutsummaryrefslogtreecommitdiff
path: root/gcc/fortran/resolve.c
diff options
context:
space:
mode:
authorPaul Thomas <pault@gcc.gnu.org>2005-10-12 07:19:56 +0000
committerPaul Thomas <pault@gcc.gnu.org>2005-10-12 07:19:56 +0000
commit0f9d970d60d34ab6d7f47e741df998e396c999c3 (patch)
treeca9382afc31efcb893f774020f10757dce4a8bdc /gcc/fortran/resolve.c
parent81871c2a0501a25b3f038286268e0ce84936fdf2 (diff)
downloadgcc-0f9d970d60d34ab6d7f47e741df998e396c999c3.zip
gcc-0f9d970d60d34ab6d7f47e741df998e396c999c3.tar.gz
gcc-0f9d970d60d34ab6d7f47e741df998e396c999c3.tar.bz2
re PR fortran/24207 (PRIVATE/PUBLIC attribute confusion screws NAMELIST)
2005-10-12 Paul Thomas <pault@gcc.gnu.org> PR fortran/24207 * resolve.c (resolve_symbol): Exclude use and host associated symbols from the test for private objects in a public namelist. 2005-10-12 Paul Thomas <pault@gcc.gnu.org> PR fortran/24207 gfortran.dg/private_type_3.f90: New test. From-SVN: r105289
Diffstat (limited to 'gcc/fortran/resolve.c')
-rw-r--r--gcc/fortran/resolve.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/gcc/fortran/resolve.c b/gcc/fortran/resolve.c
index f057340..5de16ba 100644
--- a/gcc/fortran/resolve.c
+++ b/gcc/fortran/resolve.c
@@ -4310,6 +4310,7 @@ resolve_symbol (gfc_symbol * sym)
{
if (arg->sym
&& arg->sym->ts.type == BT_DERIVED
+ && !arg->sym->ts.derived->attr.use_assoc
&& !gfc_check_access(arg->sym->ts.derived->attr.access,
arg->sym->ts.derived->ns->default_access))
{
@@ -4412,7 +4413,11 @@ resolve_symbol (gfc_symbol * sym)
{
for (nl = sym->namelist; nl; nl = nl->next)
{
- if (!gfc_check_access(nl->sym->attr.access,
+ if (!nl->sym->attr.use_assoc
+ &&
+ !(sym->ns->parent == nl->sym->ns)
+ &&
+ !gfc_check_access(nl->sym->attr.access,
nl->sym->ns->default_access))
gfc_error ("PRIVATE symbol '%s' cannot be member of "
"PUBLIC namelist at %L", nl->sym->name,