1! { dg-do compile }
2!
3! PR fortran/48810
4!
5! Contributed by Andrew Baldwin
6!
7      module qtest
8      type foobar
9        integer :: x
10        contains
11        private
12        procedure :: gimmex
13        generic, public :: getx => gimmex
14      end type foobar
15      contains
16        function gimmex(foo)
17          class (foobar) :: foo
18          integer :: gimmex
19          gimmex = foo%x
20        end function gimmex
21      end module qtest
22
23      module qtestPriv
24      type foobarPriv
25        integer :: x
26        contains
27        private
28        procedure :: gimmexPriv
29        generic, private :: getxPriv => gimmexPriv
30      end type foobarPriv
31      contains
32        function gimmexPriv(foo)
33          class (foobarPriv) :: foo
34          integer :: gimmex
35          gimmex = foo%x
36        end function gimmexPriv
37      end module qtestPriv
38
39      program quicktest
40      use qtest
41      use qtestPriv
42      type (foobar) :: foo
43      type (foobarPriv) :: fooPriv
44      integer :: bar
45      bar = foo%getx()  ! OK
46      bar = fooPriv%getxPriv() ! { dg-error " is PRIVATE " }
47      end program quicktest
48