On Mon, 2025-02-17 at 12:42 -0500, James K. Lowden wrote:
> On Sat, 15 Feb 2025 23:37:20 -0500
> David Malcolm <[email protected]> wrote:
>
> > + rich_location richloc (line_table, token_location);
> > + bool ret = global_dc->diagnostic_impl (&richloc, nullptr,
> > option_id,
> > + gmsgid, &ap, DK_ERROR);
> > + va_end (ap);
> > + global_dc->end_group();
> > +}
> >
> > For errors, just pass 0 as the diagnostic_option_id. Same for the
> > various DK_SORRY and DK_FATAL.
>
> OK, but is this a style thing? That's effectively what happens,
> using a name.
>
> option_id is a file-scope static constant, initialized to 0. Instead
> of passing an integer that the compiler uses to construct a temporary
> diagnostic_option_id, we pass an already-constructed
> diagnostic_option_id by value.
>
> (Maybe zero_option_id would be a better name?)
Ah - yes, now I see what you mean. I like that name.
Can it be "const"?
>
> > +bool
> > +yywarn( const char gmsgid[], ... ) {
> > + verify_format(gmsgid);
> > + auto_diagnostic_group d;
> > + va_list ap;
> > + va_start (ap, gmsgid);
> > + auto ret = emit_diagnostic_valist( DK_WARNING, token_location,
> > + option_id, gmsgid, &ap );
> > + va_end (ap);
> > + return ret;
> > +}
> >
> > For warnings, ideally this should take a diagnostic_option_id
> > controlling the warning as the initial parameter, rather than have
> > a
> > global variable for this.
>
> Yes, absolutely. That's on the to do list. I wanted to get a set of
> patches submitted for consideration, and drew the line ahead of that
> item.
>
> > Is this something that yacc is imposing on you?
>
> Not at all. I need to go into gcc/cobol/lang.opt and enumerate the
> warnings. Then I need to pass the warning ID into yywarn (which will
> be renamed warn_msg() because the "yy" prefix is properly reserved
> for yacc).
>
> As we say, just a small matter of programming. :-)
Indeed. It sounds like this is moving in the right direction, and FWIW
I don't have a problem with it going into trunk in its current state.
Dave