| ! { dg-do link } |
| ! { dg-additional-sources public_private_module_4.f90 } |
| ! |
| ! PR fortran/52916 |
| ! Cf. PR fortran/40973 |
| ! |
| ! Ensure that PRIVATE specific functions do not get |
| ! marked as TREE_PUBLIC() = 0, if the generic name is |
| ! PUBLIC. |
| ! |
| module m |
| interface gen |
| module procedure bar |
| end interface gen |
| |
| type t |
| end type t |
| |
| interface operator(.myop.) |
| module procedure my_op |
| end interface |
| |
| interface operator(+) |
| module procedure my_plus |
| end interface |
| |
| interface assignment(=) |
| module procedure my_assign |
| end interface |
| |
| private :: bar, my_op, my_plus, my_assign |
| contains |
| subroutine bar() |
| print *, "bar" |
| end subroutine bar |
| function my_op(op1, op2) result(res) |
| type(t) :: res |
| type(t), intent(in) :: op1, op2 |
| end function my_op |
| function my_plus(op1, op2) result(res) |
| type(t) :: res |
| type(t), intent(in) :: op1, op2 |
| end function my_plus |
| subroutine my_assign(lhs, rhs) |
| type(t), intent(out) :: lhs |
| type(t), intent(in) :: rhs |
| end subroutine my_assign |
| end module m |
| |
| module m2 |
| type t2 |
| contains |
| procedure, nopass :: func => foo |
| end type t2 |
| private :: foo |
| contains |
| subroutine foo() |
| end subroutine foo |
| end module m2 |