! { dg-do run } ! ! PR 59654: [4.8/4.9 Regression] [OOP] Broken function table with complex OO use case ! ! Contributed by Thomas Clune module TestResult_mod implicit none type TestResult integer :: numRun = 0 contains procedure :: run procedure, nopass :: getNumRun end type contains subroutine run (this) class (TestResult) :: this this%numRun = this%numRun + 1 end subroutine subroutine getNumRun() end subroutine end module module BaseTestRunner_mod implicit none type :: BaseTestRunner contains procedure, nopass :: norun end type contains function norun () result(result) use TestResult_mod, only: TestResult type (TestResult) :: result end function end module module TestRunner_mod use BaseTestRunner_mod, only: BaseTestRunner implicit none end module program main use TestRunner_mod, only: BaseTestRunner use TestResult_mod, only: TestResult implicit none type (TestResult) :: result call runtest (result) contains subroutine runtest (result) use TestResult_mod, only: TestResult class (TestResult) :: result call result%run() if (result%numRun /= 1) call abort() end subroutine end ! { dg-final { cleanup-modules "TestResult_mod BaseTestRunner_mod TestRunner_mod" } }