Too restrictive type-bound procedure overriding?

Too restrictive type-bound procedure overriding?

Hi,

I am unexpectedly getting error #8383 ("The dummy arguments of an overriding and overridden binding that correspond by position must have the same characteristics, except for the type of the passed object dummy arguments"). Here is a minimal example:

module my_module
    implicit none
    type :: Base
        integer :: sz
    contains
        procedure :: next => Base_next
    end type
    type,extends(Base) :: Extended
    contains
        procedure :: next => Extended_next
    end type
contains
    function Base_next(self,vector) result(continue)
        class(Base) :: self
        integer :: vector(self%sz)
        logical :: continue
        continue=.TRUE.
        return
    end function
    function Extended_next(self,vector) result(continue)
        class(Extended) :: self
        integer :: vector(self%sz)
        logical :: continue
        continue=self%Base%next(vector)
        return
    end function
end module

Replacing self%sz with a constant (e.g. 3) in the declaration

integer :: vector(self%sz)
fixes the problem. Replacing self%sz with self%Base%sz in line 22. This seems to me too restrictive. The code compiles OK with gfortran 4.7, fails to compile with ifort 13.0.1.

Thanks for your help.

6 帖子 / 0 全新
最新文章
如需更全面地了解编译器优化,请参阅优化注意事项
Steve Lionel (Intel)的头像

Thanks - I agree that this should be allowed. I have escalated it as issue DPD200241573 and will let you know here of any progress.

Steve

Thanks a lot! And also, thanks a lot for your Doctor Fortran blog, I have found some very interesting stuff.

Any progress on this? The bug is still present in version 14.0.1.

Best regards,

Sergio Losilla

Steve Lionel (Intel)的头像

I don't see any progress noted and have pinged the developer.

Steve

Thanks :)

登陆并发表评论。