1! { dg-do compile } 2 3! Type-bound procedures 4! Test for errors in specific bindings, during parsing (not resolution). 5 6MODULE testmod 7 IMPLICIT NONE 8 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 34 35CONTAINS 36 37END MODULE testmod 38