! { dg-do compile } ! Type-bound procedures ! Test for resolution errors with DEFERRED, namely checks about invalid ! overriding and taking into account inherited DEFERRED bindings. ! Also check that DEFERRED attribute is saved to module correctly. MODULE m1 IMPLICIT NONE ABSTRACT INTERFACE SUBROUTINE intf () END SUBROUTINE intf END INTERFACE TYPE, ABSTRACT :: abstract_type CONTAINS PROCEDURE(intf), DEFERRED, NOPASS :: def PROCEDURE, NOPASS :: nodef => realproc END TYPE abstract_type CONTAINS SUBROUTINE realproc () END SUBROUTINE realproc END MODULE m1 MODULE m2 USE m1 IMPLICIT NONE TYPE, ABSTRACT, EXTENDS(abstract_type) :: sub_type1 CONTAINS PROCEDURE(intf), DEFERRED, NOPASS :: nodef ! { dg-error "must not be DEFERRED" } END TYPE sub_type1 TYPE, EXTENDS(abstract_type) :: sub_type2 ! { dg-error "must be ABSTRACT" } END TYPE sub_type2 END MODULE m2