Hi Thomas, > > 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). Cheers, Janus