! { dg-do compile } ! Type-bound procedures ! Test for errors in specific bindings, during parsing (not resolution). MODULE testmod IMPLICIT NONE TYPE t REAL :: a CONTAINS PROCEDURE p0 ! { dg-error "no IMPLICIT|module procedure" } PRIVATE ! { dg-error "must precede" } PROCEDURE p1 => proc1 ! { dg-error "::" } PROCEDURE :: ! { dg-error "Expected binding name" } PROCEDURE ! { dg-error "Expected binding name" } PROCEDURE ? ! { dg-error "Expected binding name" } PROCEDURE :: p2 => ! { dg-error "Expected binding target" } PROCEDURE :: p3 =>, ! { dg-error "Expected binding target" } PROCEDURE p4, ! { dg-error "Expected binding name" } PROCEDURE :: p5 => proc2, ! { dg-error "Expected binding name" } PROCEDURE :: p0 => proc3 ! { dg-error "already a procedure" } PROCEDURE, PASS p6 ! { dg-error "::" } PROCEDURE, PASS NON_OVERRIDABLE ! { dg-error "Expected" } PROCEDURE PASS :: ! { dg-error "Syntax error" } PROCEDURE, PASS (x ! { dg-error "Expected" } PROCEDURE, PASS () ! { dg-error "Expected" } PROCEDURE, NOPASS, PASS ! { dg-error "illegal PASS" } PROCEDURE, PASS, NON_OVERRIDABLE, PASS(x) ! { dg-error "illegal PASS" } PROCEDURE, PUBLIC, PRIVATE ! { dg-error "Duplicate" } PROCEDURE, NON_OVERRIDABLE, NON_OVERRIDABLE ! { dg-error "Duplicate" } PROCEDURE, NOPASS, NOPASS ! { dg-error "illegal NOPASS" } END TYPE t CONTAINS END MODULE testmod