https://gcc.gnu.org/bugzilla/show_bug.cgi?id=94909
--- Comment #3 from Neil Carlson <neil.n.carlson at gmail dot com> --- Richard, this is just a typical declaration of an abstract type. An extension of this type will have to define the deferred dot_ function with an interface that happens to match the interface of dot. The dot function will call that dot_ function, not itself, so there is no evident recursion here in this unit of code.