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

            Bug ID: 89647
           Summary: Host associated procedure unable to be used as binding
                    target
           Product: gcc
           Version: 9.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: fortran
          Assignee: unassigned at gcc dot gnu.org
          Reporter: ian_harvey at bigpond dot com
  Target Milestone: ---

The following example:

  MODULE m1
    IMPLICIT NONE
    PUBLIC :: False
    PUBLIC :: True
  CONTAINS
    FUNCTION False() RESULT(b)
      LOGICAL :: b
      b = .FALSE.
    END FUNCTION False

    FUNCTION True() RESULT(b)
      LOGICAL :: b
      b = .TRUE.
    END FUNCTION True
  END MODULE m1

  MODULE m2
    USE m1
    IMPLICIT NONE
    TYPE, ABSTRACT :: t_parent
    CONTAINS
      PROCEDURE(False), DEFERRED, NOPASS :: Binding
    END TYPE t_parent
  CONTAINS
    SUBROUTINE s
      TYPE, EXTENDS(t_parent) :: t_extension
      CONTAINS
        PROCEDURE, NOPASS :: Binding => True
      END TYPE t_extension
    END SUBROUTINE s
  END MODULE m2

when compiled with recent trunk (r269545) results in the error:

  binding.f90:28:15:

     28 |       PROCEDURE, NOPASS :: Binding => True
        |               1
  Error: ‘true’ must be a module procedure or an external procedure with an
explicit interface at (1)

`True` is a module procedure, and it is available within the scope of the
subroutine by host association.

Reply via email to