3 ! Type-bound procedures
4 ! Test for errors in specific bindings, during resolution.
10 REAL FUNCTION proc_noarg ()
12 END FUNCTION proc_noarg
22 PROCEDURE() :: proc_nointf
25 SUBROUTINE proc_intf ()
26 END SUBROUTINE proc_intf
30 SUBROUTINE proc_abstract_intf ()
31 END SUBROUTINE proc_abstract_intf
36 PROCEDURE, NOPASS :: super_overrid => proc_sub_noarg
37 PROCEDURE, NOPASS, NON_OVERRIDABLE :: super_nonoverrid => proc_sub_noarg
40 TYPE, EXTENDS(supert) :: t
43 ! Bindings that should succeed
44 PROCEDURE, NOPASS :: p0 => proc_noarg
45 PROCEDURE, PASS :: p1 => proc_arg_first
46 PROCEDURE proc_arg_first
47 PROCEDURE, PASS(me) :: p2 => proc_arg_middle
48 PROCEDURE, PASS(me), NON_OVERRIDABLE :: p3 => proc_arg_last
49 PROCEDURE, NOPASS :: p4 => proc_nome
50 PROCEDURE, NOPASS :: p5 => proc_intf
51 PROCEDURE, NOPASS :: super_overrid => proc_sub_noarg
53 ! Bindings that should not succeed
54 PROCEDURE :: e0 => undefined ! { dg-error "has no IMPLICIT|module procedure" }
55 PROCEDURE, PASS :: e1 => proc_noarg ! { dg-error "at least one argument" }
56 PROCEDURE :: e2 => proc_noarg ! { dg-error "at least one argument" }
57 PROCEDURE, PASS(me) :: e3 => proc_nome ! { dg-error "no argument 'me'" }
58 PROCEDURE, PASS(me) :: e4 => proc_mewrong ! { dg-error "Non-polymorphic passed-object dummy argument" }
59 PROCEDURE, PASS :: e5 => proc_mewrong ! { dg-error "Non-polymorphic passed-object dummy argument" }
60 PROCEDURE :: e6 => noproc ! { dg-error "module procedure" }
61 PROCEDURE :: e7 => proc_nointf ! { dg-error "explicit interface" }
62 PROCEDURE, NOPASS :: e8 => proc_abstract_intf ! { dg-error "explicit interface" }
63 PROCEDURE :: super_nonoverrid => proc_arg_first ! { dg-error "NON_OVERRIDABLE" }
69 SUBROUTINE proc_arg_first (me, x)
73 END SUBROUTINE proc_arg_first
75 INTEGER FUNCTION proc_arg_middle (x, me, y)
79 END FUNCTION proc_arg_middle
81 SUBROUTINE proc_arg_last (x, me)
85 END SUBROUTINE proc_arg_last
87 SUBROUTINE proc_nome (arg, x, y)
91 END SUBROUTINE proc_nome
93 SUBROUTINE proc_mewrong (me, x)
97 END SUBROUTINE proc_mewrong
99 SUBROUTINE proc_sub_noarg ()
100 END SUBROUTINE proc_sub_noarg
109 PROCEDURE, NOPASS :: proc_no_module ! { dg-error "module procedure" }
114 SUBROUTINE proc_no_module ()
115 END SUBROUTINE proc_no_module