blob: 9b7a4fa5ddfe9955f253d2b9bd6db18e33a13866 [file] [log] [blame]
! { 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