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