On Wed, Mar 27, 2019 at 11:22:49PM +0100, Janus Weil wrote: > > > > the attached patch implements some missing constraints from Fortran > > > 2008 concerning procedure pointer initialization (cf. the standard > > > quote in comment #18), thus fixing two accepts-invalid and > > > ICE-on-invalid problems. > > > > I do not think this is correct. > > > > F2008: > > > > # 12.2.2.4 Procedure pointers > > > > # A procedure pointer is a procedure that has the EXTERNAL and POINTER > > # attributes; it may be pointer associated with an external procedure, # > > # an internal procedure, [...] > > > > So a procedure pointer can be associated with an internal procedure. > > > > Comment#18 from the PR does not quote anything that says that > > a procedure pointer cannot be associated with an internal procedure. > > Absolutely, a procedure pointer can in principle be associated with an > internal procedure, and my patch does not change that. What the patch > rejects is the ('static' in the C sense) pointer initialization of a > procedure pointer with an internal procedure, which is forbidden per > F2008:C1220. > > procedure(..), pointer :: pp => internal_proc > > A normal pointer assignment is still allowed per F2008:C729: > > pp => internal_proc > > Hope you agree (and sorry for not being more verbose in my explanation > in the first place). >
Just to add to the confusion/clarification. Janus's patch is concerned with an initial-proc-target, which is has restriction that do not apply to a proc-target. -- Steve