https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96320
jvdelisle at charter dot net changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |jvdelisle at charter dot net --- Comment #6 from jvdelisle at charter dot net --- I my too simple terms, when you define the interface and then use module procedure in the contains, all of the declarations in the interface exist as if you had them in the declaration of the subroutine or function in the contains. This includes all arguments and whether or not the procedure is a subroutine or a function. I was not aware of this either untill I saw some other code Damian was doing earlier this week that does actually compile fine like this with gfortran. It is a modern feature and if you think about it, very useful in that it saves a lot of typing. One can choose do do it either way, but this way shown truly uses the interface to define everything.