On Wed, May 20, 2020 at 01:53:51AM +0100, Ramsay Jones wrote: > On 19/05/2020 01:57, Luc Van Oostenryck wrote: > > It's invalid to jump inside a statement expression. > > > > So, detect such jumps, issue an error message and mark the > > function as useless for linearization since the resulting IR > > would be invalid. ... > > +static void warn_label_usage(struct position def, struct position use, struct ident *ident) > > you are issuing an error report from this function, so should it be > called, something like, 'label_usage_error'? Yes, it's a bit confusing. I hesitated on the name when writting it. The logic is that most functions in this file (and other files too) are named following the verb+object pattern and I don't have a good (short) verb for 'issue an diagnostic message'. 'label_usage_error' sounds to me more like the name for a variable. In standardese maybe 'diagnose' could be used but ... no, thanks. The way I see it is that the verb/action 'warn' can be realized in 2 ways: issue a warning message or issue an error message. In fact, I really would prefer to fold this function with its check. It was how it was written at some stage but the function needed 5 arguments and was quite hard to read. Best regards, -- Luc