message module. */
#include "config.h"
-#undef FLOAT /* This is for hpux. They should change hpux. */
-#undef FFS /* Some systems define this in param.h. */
#include "system.h"
#include "coretypes.h"
-#include "tm.h"
-#include "tree.h"
#include "version.h"
-#include "tm_p.h"
#include "flags.h"
#include "input.h"
#include "toplev.h"
#include "intl.h"
#include "diagnostic.h"
-#include "langhooks.h"
-#include "langhooks-def.h"
#include "opts.h"
#include "plugin.h"
diagnostic_starter (context) = default_diagnostic_starter;
diagnostic_finalizer (context) = default_diagnostic_finalizer;
context->last_module = 0;
- context->last_function = NULL;
+ context->x_data = NULL;
context->lock = 0;
context->inhibit_notes_p = false;
}
}
}
-/* Prints out, if necessary, the name of the current function
- that caused an error. Called from all error and warning functions. */
-void
-diagnostic_report_current_function (diagnostic_context *context,
- diagnostic_info *diagnostic)
-{
- diagnostic_report_current_module (context);
- lang_hooks.print_error_function (context, input_filename, diagnostic);
-}
-
void
diagnostic_report_current_module (diagnostic_context *context)
{
default_diagnostic_starter (diagnostic_context *context,
diagnostic_info *diagnostic)
{
- diagnostic_report_current_function (context, diagnostic);
+ diagnostic_report_current_module (context);
pp_set_prefix (context->printer, diagnostic_build_prefix (diagnostic));
}
++diagnostic_kind_count (context, diagnostic->kind);
saved_format_spec = diagnostic->message.format_spec;
- if (context->show_option_requested && diagnostic->option_index)
- diagnostic->message.format_spec
- = ACONCAT ((diagnostic->message.format_spec,
- " [", cl_options[diagnostic->option_index].opt_text, "]", NULL));
+ if (context->show_option_requested)
+ {
+ const char * option_text = NULL;
+ if (diagnostic->option_index)
+ {
+ /* A warning classified as an error. */
+ if ((orig_diag_kind == DK_WARNING || orig_diag_kind == DK_PEDWARN)
+ && diagnostic->kind == DK_ERROR)
+ option_text
+ = ACONCAT ((cl_options[OPT_Werror_].opt_text,
+ /* Skip over "-W". */
+ cl_options[diagnostic->option_index].opt_text + 2,
+ NULL));
+ /* A warning with option. */
+ else
+ option_text = cl_options[diagnostic->option_index].opt_text;
+ }
+ /* A warning without option classified as an error. */
+ else if (orig_diag_kind == DK_WARNING || orig_diag_kind == DK_PEDWARN
+ || diagnostic->kind == DK_WARNING)
+ {
+ if (context->warning_as_error_requested)
+ option_text = cl_options[OPT_Werror].opt_text;
+ else
+ option_text = _("enabled by default");
+ }
+
+ if (option_text)
+ diagnostic->message.format_spec
+ = ACONCAT ((diagnostic->message.format_spec,
+ " ",
+ "[", option_text, "]",
+ NULL));
+ }
diagnostic->message.locus = &diagnostic->location;
- diagnostic->message.abstract_origin = &diagnostic->abstract_origin;
- diagnostic->abstract_origin = NULL;
+ diagnostic->message.x_data = &diagnostic->x_data;
+ diagnostic->x_data = NULL;
pp_format (context->printer, &diagnostic->message);
(*diagnostic_starter (context)) (context, diagnostic);
pp_output_formatted_text (context->printer);
pp_flush (context->printer);
diagnostic_action_after_output (context, diagnostic);
diagnostic->message.format_spec = saved_format_spec;
- diagnostic->abstract_origin = NULL;
+ diagnostic->x_data = NULL;
context->lock--;
text.args_ptr = ≈
text.format_spec = _(gmsgid);
text.locus = NULL;
- text.abstract_origin = NULL;
+ text.x_data = NULL;
pp_format_verbatim (global_dc->printer, &text);
pp_flush (global_dc->printer);
va_end (ap);