The following code compiled just fine in version 12.0 but gives the following error message in IVF 17.0
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. [ASSOCIATE]
I dont quite understand why is error off on line 25.
The later compiler is better at finding errors in the code (and perhaps better at identifying the line number of the error). The interfaces of the two procedures that are referenced by the associate bindings are
subroutine associatePLSStoLCVG(self,other) class(PLSSInterface), intent(inout) :: self class(LCVGInterface), intent(inout) :: other ... subroutine associateLCVGtoPLSS(self,other) class(LCVGInterface), intent(inout) :: self class(PLSSInterface), intent(inout) :: other
The declarations of the `other` dummy argument are not the same! As they do not correspond to the passed argument, the rules of the language (F2008 126.96.36.199p2) require that they be the same.
(The declarations of the `self` dummy argument differ only such that the type of the argument is the same as the type with the relevant binding, this is consistent with the rules of the language.)
See excellent point by IanH in message# 4: perhaps you meant to use GENERIC bindings to your types - https://software.intel.com/en-us/node/678723 where with type extension, the generic interface gets extended.