On Wed, Mar 27, 2019 at 10:35:33PM +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.
>
> It regtests cleanly on x86_64-linux-gnu. Ok for trunk?
Looks OK to me. Just minor comment. If there are numbered
constraints in either F2008 or F2018 for each of the if()
conditionals, can you add a comment. Perhaps, something
like.
/* F2008:C1089. */
> + if (attr.proc == PROC_INTERNAL)
> + {
> + gfc_error ("Internal procedure %qs is invalid in "
> + "procedure pointer initialization at %L",
> + rvalue->symtree->name, &rvalue->where);
> + return false;
> + }
/* F2008:C1142. */
> + if (attr.dummy)
> + {
> + gfc_error ("Dummy procedure %qs is invalid in "
> + "procedure pointer initialization at %L",
> + rvalue->symtree->name, &rvalue->where);
> + return false;
> + }
> }
--
Steve
20170425 https://www.youtube.com/watch?v=VWUpyCsUKR4
20161221 https://www.youtube.com/watch?v=IbCHE-hONow