Merged trunk at revision 161680 into branch.
[official-gcc.git] / gcc / testsuite / gfortran.dg / typebound_proc_4.f03
blob60aa728a40ff599c4636eb01b61384f0fbe99402
1 ! { dg-do compile }
3 ! Type-bound procedures
4 ! Test for errors in specific bindings, during parsing (not resolution).
6 MODULE testmod
7   IMPLICIT NONE
9   TYPE t
10     REAL :: a
11   CONTAINS
12     PROCEDURE p0 ! { dg-error "no IMPLICIT|module procedure" }
13     PRIVATE ! { dg-error "must precede" }
14     PROCEDURE p1 => proc1 ! { dg-error "::" }
15     PROCEDURE :: ! { dg-error "Expected binding name" }
16     PROCEDURE ! { dg-error "Expected binding name" }
17     PROCEDURE ? ! { dg-error "Expected binding name" }
18     PROCEDURE :: p2 => ! { dg-error "Expected binding target" }
19     PROCEDURE :: p3 =>, ! { dg-error "Expected binding target" }
20     PROCEDURE p4, ! { dg-error "Expected binding name" }
21     PROCEDURE :: p5 => proc2, ! { dg-error "Expected binding name" }
22     PROCEDURE :: p0 => proc3 ! { dg-error "already a procedure" }
23     PROCEDURE, PASS p6 ! { dg-error "::" }
24     PROCEDURE, PASS NON_OVERRIDABLE ! { dg-error "Expected" }
25     PROCEDURE PASS :: ! { dg-error "Syntax error" }
26     PROCEDURE, PASS (x ! { dg-error "Expected" }
27     PROCEDURE, PASS () ! { dg-error "Expected" }
28     PROCEDURE, NOPASS, PASS ! { dg-error "illegal PASS" }
29     PROCEDURE, PASS, NON_OVERRIDABLE, PASS(x) ! { dg-error "illegal PASS" }
30     PROCEDURE, PUBLIC, PRIVATE ! { dg-error "Duplicate" }
31     PROCEDURE, NON_OVERRIDABLE, NON_OVERRIDABLE ! { dg-error "Duplicate" }
32     PROCEDURE, NOPASS, NOPASS ! { dg-error "illegal NOPASS" }
33   END TYPE t
35 CONTAINS
37 END MODULE testmod
39 ! { dg-final { cleanup-modules "testmod" } }