J3/15-160 To: J3 From: R. Bader Subject: F2008 interp: Type extension in submodules Date: 2015 April 14 Reference: 10-007r1 ---------------------------------------------------------------------- NUMBER: F08/ TITLE: Type extension in submodules KEYWORDS: submodules, deferred type-bound procedures DEFECT TYPE: Interpretation STATUS: J3 consideration in progress QUESTION: Consider the following code: module mod_a implicit none type, abstract :: t_a contains procedure(p_a), deferred :: p end type t_a abstract interface subroutine p_a(this, q) import :: t_a class(t_a), intent(inout) :: this class(*), intent(in) :: q end subroutine end interface end module mod_a submodule(mod_a) imp_p_a type, extends(t_a) :: t_imp real :: b contains procedure :: p => p_imp ! (A) end type t_imp contains subroutine p_imp(this, q) class(t_imp), intent(inout) :: this class(*) :: q ... ! don't care end subroutine p_imp end submodule imp_p_a Constraint C456 in 007r1 reads "C465 (R448) The procedure-name shall be the name of an accessible module procedure or an external procedure that has an explicit interface." Therefore, statement (A) above is non-conforming and, by implication, extension of a derived type with a deferred type-bound procedure cannot be done within the specification part of a submodule. Was this intended? ANSWER and suggested EDITS to 10-007r1: If the answer to the question is "No", I suggest the following edit to 10-007r1: [73:15] after "module procedure", insert ", an accessible module-subprogram of a submodule, " SUBMITTED BY: R. Bader HISTORY: yy-nnn m207 F08/nnnn submitted