https://gcc.gnu.org/bugzilla/show_bug.cgi?id=71796

--- Comment #3 from Ian Harvey <ian_harvey at bigpond dot com> ---
If you want a test case that exhibits no run time error upon successful
compilation and linking, then replace the entire main program with an END
statement.

MODULE ma
  IMPLICIT NONE
  PRIVATE

  TYPE, PUBLIC, ABSTRACT :: ta
  END TYPE ta
END MODULE ma

MODULE mb
  IMPLICIT NONE
  PRIVATE

  TYPE, PUBLIC, ABSTRACT :: tb
  CONTAINS
    PROCEDURE(b_binding), DEFERRED :: binding
  END TYPE tb

  ABSTRACT INTERFACE
    SUBROUTINE b_binding(argb, arga)
      USE ma
      IMPORT :: tb
      IMPLICIT NONE

      CLASS(tb), INTENT(IN) :: argb
      CLASS(ta), INTENT(OUT), ALLOCATABLE :: arga
    END SUBROUTINE b_binding
  END INTERFACE
END MODULE mb

MODULE mc
  IMPLICIT NONE
  PRIVATE

  PUBLIC :: subc
CONTAINS
  SUBROUTINE subc
    USE mb      !<< Ordering of these statements is significant.
    USE ma      !<< Ordering of these statements is significant.

    CLASS(ta), ALLOCATABLE :: a
    CLASS(tb), ALLOCATABLE :: b
    !****
    CALL b%binding(a)
  END SUBROUTINE subc
END MODULE mc

END     ! <<<<

Reply via email to