Commit 0d6872cb by Tobias Burnus

re PR fortran/38065 (private/public confusion with a contained function)

2008-11-12  Tobias Burnus  <burnus@net-b.de>

        PR fortran/38065
        * resolve.c (resolve_fntype): Fix private derived type checking.

2008-11-12  Tobias Burnus  <burnus@net-b.de>

        PR fortran/38065
        * gfortran.dg/private_type_11.f90: New test.
        * gfortran.dg/private_type_12.f90: New test.

From-SVN: r141780
parent 8a4d68e3
2008-11-12 Tobias Burnus <burnus@net-b.de>
PR fortran/38065
* resolve.c (resolve_fntype): Fix private derived type checking.
2008-11-09 Paul Thomas <pault@gcc.gnu.org> 2008-11-09 Paul Thomas <pault@gcc.gnu.org>
PR fortran/37836 PR fortran/37836
* intrinsic.c (add_functions): Reference gfc_simplify._minval * intrinsic.c (add_functions): Reference gfc_simplify._minval
and gfc_simplify_maxval. and gfc_simplify_maxval.
* intrinsic.h : Add prototypes for gfc_simplify._minval and * intrinsic.h : Add prototypes for gfc_simplify._minval and
gfc_simplify_maxval. gfc_simplify_maxval.
...@@ -13,8 +18,8 @@ ...@@ -13,8 +18,8 @@
2008-11-04 Paul Thomas <pault@gcc.gnu.org> 2008-11-04 Paul Thomas <pault@gcc.gnu.org>
PR fortran/37597 PR fortran/37597
* parse.c (gfc_fixup_sibling_symbols ): Fixup contained, even * parse.c (gfc_fixup_sibling_symbols ): Fixup contained, even
when symbol not found. when symbol not found.
2008-11-03 Tobias Burnus <burnus@net-b.de> 2008-11-03 Tobias Burnus <burnus@net-b.de>
......
...@@ -10179,12 +10179,14 @@ resolve_fntype (gfc_namespace *ns) ...@@ -10179,12 +10179,14 @@ resolve_fntype (gfc_namespace *ns)
} }
if (sym->ts.type == BT_DERIVED && !sym->ts.derived->attr.use_assoc if (sym->ts.type == BT_DERIVED && !sym->ts.derived->attr.use_assoc
&& !sym->attr.contained
&& !gfc_check_access (sym->ts.derived->attr.access, && !gfc_check_access (sym->ts.derived->attr.access,
sym->ts.derived->ns->default_access) sym->ts.derived->ns->default_access)
&& gfc_check_access (sym->attr.access, sym->ns->default_access)) && gfc_check_access (sym->attr.access, sym->ns->default_access))
{ {
gfc_error ("PUBLIC function '%s' at %L cannot be of PRIVATE type '%s'", gfc_notify_std (GFC_STD_F2003, "Fortran 2003: PUBLIC function '%s' at "
sym->name, &sym->declared_at, sym->ts.derived->name); "%L of PRIVATE type '%s'", sym->name,
&sym->declared_at, sym->ts.derived->name);
} }
if (ns->entries) if (ns->entries)
......
2008-11-12 Tobias Burnus <burnus@net-b.de>
PR fortran/38065
* gfortran.dg/private_type_11.f90: New test.
* gfortran.dg/private_type_12.f90: New test.
2008-11-10 Catherine Moore <clm@codesourcery.com> 2008-11-10 Catherine Moore <clm@codesourcery.com>
* gcc.target/mips/no-smartmips-lwxs.c: New test. * gcc.target/mips/no-smartmips-lwxs.c: New test.
......
! { dg-do compile }
! { dg-options "-std=f2003" }
! PR fortran/38065
!
! Reported by Norman S. Clerman
! and reduced by Joost VandeVondele
!
MODULE M1
IMPLICIT NONE
PRIVATE
TYPE T1
INTEGER :: I1
END TYPE T1
PUBLIC :: S1,F2
CONTAINS
SUBROUTINE S1
CONTAINS
TYPE(T1) FUNCTION F1()
END FUNCTION F1
END SUBROUTINE S1
TYPE(T1) FUNCTION F2()
END FUNCTION F2
END MODULE M1
! { dg-do compile }
! { dg-options "-std=f95" }
! PR fortran/38065
!
! Reported by Norman S. Clerman
! and reduced by Joost VandeVondele
!
MODULE M1
IMPLICIT NONE
PRIVATE
TYPE T1
INTEGER :: I1
END TYPE T1
PUBLIC :: S1,F2
CONTAINS
SUBROUTINE S1
CONTAINS
TYPE(T1) FUNCTION F1()
END FUNCTION F1
END SUBROUTINE S1
TYPE(T1) FUNCTION F2() ! { dg-error "Fortran 2003: PUBLIC variable 'f2'" }
END FUNCTION F2
END MODULE M1
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment