To: J3 J3/15-167 Subject: Procedure overriding unnecessarily restrictive From: Van Snyder Reference: 15-007r1 Date: 2015 June 07 1. Introduction =============== All arguments of an overriding type-bound procedure, other than the passed-object dummy argument are required to have the same characteristics. This is unhelpful, and is unnecessary if the parent type is abstract, because an object of abstract type cannot exist, and therefore cannot be the designator in the in a . An overriding type-bound procedure is not permitted to have additional arguments. This is unhelpful, and is unnecessary if the parent type is abstract, because an object of abstract type cannot exist, and therefore cannot be the designator in the in a . The result characteristics of an overriding function are required to be the same as those of the overridden function. This is unhelpful, and is unnecessary if the parent type is abstract, because an object of abstract type cannot exist, and therefore cannot be the designator in the in a . 2. Proposal =========== Revise the fourth item of the list in 4.5.7.3p2 to allow additional optional arguments if the parent type is abstract. Revise the sixth item of the list in 4.5.7.3p2 to require the characteristics of a dummy argument of an overriding procedure to be the same as those of the corresponding dummy variable of the overridden procedure only if the parent type is not abstract. Revise the seventh item of the list to allow the result type of an overriding function to be different from the result type of an overridden function if the parent type is abstract. 3. Edits ======== [81:3 4.5.7.3p2] Replace the fourth list item with " o If the parent type is not abstract, they shall have the same number of dummy arguments. Otherwise, the overriding procedure shall not have fewer dummy arguments than the overridden procedure." [81:5-6 4.5.7.3p2] Replace the sixth list item with " o Named dummy arguments that correspond by position shall have the same names. {Don't require alternate return indicators to have names.} " o If the parent type is not abstract, dummy arguments that correspond by position, other than the passed-object dummy variable, shall have the same characteristics. [81:7 4.5.7.3p2] In the seventh list item replace "having" with ". If the parent type is not abstract, and they are functions, they shall have".