@@ -342,7 +342,7 @@ subroutine formattedReadProc(dtv, unit, iotype, vlist, iostat, iomsg)
342342 end subroutine
343343end module m15
344344
345- module m16
345+ module m16a
346346 type,public :: t
347347 integer c
348348 contains
@@ -355,15 +355,58 @@ subroutine formattedReadProc(dtv, unit, iotype, vlist, iostat, iomsg)
355355 class(t), intent (inout ) :: dtv
356356 integer , intent (in ) :: unit
357357 character (len=* ), intent (in ) :: iotype
358- ! ERROR: Dummy argument 'vlist' of a defined input/output procedure must be assumed shape
358+ ! ERROR: Dummy argument 'vlist' of a defined input/output procedure must be assumed shape vector
359359 integer , intent (in ) :: vlist(5 )
360360 integer , intent (out ) :: iostat
361361 character (len=* ), intent (inout ) :: iomsg
362+ iostat = 343
363+ stop ' fail'
364+ end subroutine
365+ end module m16a
362366
367+ module m16b
368+ type,public :: t
369+ integer c
370+ contains
371+ procedure , pass :: tbp= >formattedReadProc
372+ generic :: read (formatted) = > tbp
373+ end type
374+ private
375+ contains
376+ subroutine formattedReadProc (dtv , unit , iotype , vlist , iostat , iomsg )
377+ class(t), intent (inout ) :: dtv
378+ integer , intent (in ) :: unit
379+ character (len=* ), intent (in ) :: iotype
380+ ! ERROR: Dummy argument 'vlist' of a defined input/output procedure must be assumed shape vector
381+ integer , intent (in ) :: vlist(:,:)
382+ integer , intent (out ) :: iostat
383+ character (len=* ), intent (inout ) :: iomsg
384+ iostat = 343
385+ stop ' fail'
386+ end subroutine
387+ end module m16b
388+
389+ module m16c
390+ type,public :: t
391+ integer c
392+ contains
393+ procedure , pass :: tbp= >formattedReadProc
394+ generic :: read (formatted) = > tbp
395+ end type
396+ private
397+ contains
398+ subroutine formattedReadProc (dtv , unit , iotype , vlist , iostat , iomsg )
399+ class(t), intent (inout ) :: dtv
400+ integer , intent (in ) :: unit
401+ character (len=* ), intent (in ) :: iotype
402+ ! ERROR: Dummy argument 'vlist' may not be assumed-rank
403+ integer , intent (in ) :: vlist(..)
404+ integer , intent (out ) :: iostat
405+ character (len=* ), intent (inout ) :: iomsg
363406 iostat = 343
364407 stop ' fail'
365408 end subroutine
366- end module m16
409+ end module m16c
367410
368411module m17
369412 ! Test the same defined input/output procedure specified as a generic
0 commit comments