On 21.11.2023 23:20, David Malcolm wrote:
> @@ -101,6 +109,29 @@ had_warnings (void)
>    return warning_count;
>  }
>  
> +#if USE_LIBDIAGNOSTICS
> +static diagnostic_manager *diag_mgr;
> +#endif
> +
> +void messages_init (void)
> +{
> +#if USE_LIBDIAGNOSTICS
> +  diag_mgr = diagnostic_manager_new ();
> +  diagnostic_manager_add_text_sink (diag_mgr, stderr,
> +                                 DIAGNOSTIC_COLORIZE_IF_TTY);

Coloring will want to be possible to turn off (or maybe be off by default,
and be possible to turn on).

As to the #if-s: I think they all would better be #ifdef.

> @@ -182,6 +213,20 @@ as_warn_internal (const char *file, unsigned int line, 
> char *buffer)
>        context = true;
>      }
>  
> +#if USE_LIBDIAGNOSTICS
> +  const diagnostic_file *file_obj
> +    = diagnostic_manager_new_file (diag_mgr, file, NULL);
> +
> +  const diagnostic_physical_location *loc
> +    = diagnostic_manager_new_location_from_file_and_line (diag_mgr,
> +                                                       file_obj,
> +                                                       line);
> +
> +  diagnostic *d = diagnostic_begin (diag_mgr,
> +                                 DIAGNOSTIC_LEVEL_WARNING);
> +  diagnostic_set_location (d, loc);
> +  diagnostic_finish (d, "%s", buffer);
> +#else

This looks identical to ...

> @@ -256,6 +302,19 @@ as_bad_internal (const char *file, unsigned int line, 
> char *buffer)
>        context = true;
>      }
>  
> +#if USE_LIBDIAGNOSTICS
> +  const diagnostic_file *file_obj
> +    = diagnostic_manager_new_file (diag_mgr, file, NULL);
> +  const diagnostic_physical_location *loc
> +    = diagnostic_manager_new_location_from_file_and_line (diag_mgr,
> +                                                       file_obj,
> +                                                       line);
> +
> +  diagnostic *d = diagnostic_begin (diag_mgr,
> +                                 DIAGNOSTIC_LEVEL_ERROR);
> +  diagnostic_set_location (d, loc);
> +  diagnostic_finish (d, "%s", buffer);
> +#else

... this, except for the level used. Put into a helper function? Which
would the further want using from as_info_where()?

Jan

Reply via email to