This allows us to handle all warnings/error really similar in warn.cc.
For example, we can then simply suppress some warnings by only checking
in warn.cc. This patch makes the whole handling much more consistent,
as now everything is in warn.cc
Input (Input const &i);
Input ();
protected:
Input (Input const &i);
Input ();
protected:
- void print_message (int level, string s) const;
+ string message_location () const;
+ string message_string (string msg) const;
[file:line:column:][warning:]message
*/
[file:line:column:][warning:]message
*/
-void
-Input::print_message (int level, string s) const
+string
+Input::message_string (string msg) const
- ::print_message (level, location_string (),
- s + "\n" + source_file_->quote_input (start_) + "\n");
+ return msg + "\n" + source_file_->quote_input (start_);
- ::print_message (level, "", s);
+string
+Input::message_location () const
+{
+ return (source_file_) ? location_string () : "";
+}
void
Input::error (string s) const
{
void
Input::error (string s) const
{
- print_message (LOG_ERROR, _f ("error: %s", s));
+ ::non_fatal_error (message_string (s), message_location ());
// UGH, fix naming or usage (use non_fatal_error in most places, instead)
// exit (1);
}
// UGH, fix naming or usage (use non_fatal_error in most places, instead)
// exit (1);
}
Input::programming_error (string s) const
{
if (get_program_option ("warning-as-error"))
Input::programming_error (string s) const
{
if (get_program_option ("warning-as-error"))
+ ::error (message_string (s), message_location ());
- {
- print_message (LOG_ERROR, _f ("programming error: %s", s));
- print_message (LOG_ERROR, _ ("continuing, cross fingers") + "\n");
- }
+ ::programming_error (message_string (s), message_location ());
}
void
Input::non_fatal_error (string s) const
{
}
void
Input::non_fatal_error (string s) const
{
- print_message (LOG_ERROR, _f ("error: %s", s));
+ ::non_fatal_error (message_string (s), message_location ());
}
void
Input::warning (string s) const
{
if (get_program_option ("warning-as-error"))
}
void
Input::warning (string s) const
{
if (get_program_option ("warning-as-error"))
+ ::non_fatal_error (message_string (s), message_location ());
- print_message (LOG_WARN, _f ("warning: %s", s));
+ ::warning (message_string (s), message_location ());
}
void
Input::message (string s) const
{
}
void
Input::message (string s) const
{
- print_message (LOG_INFO, s);
+ ::message (message_string (s), true, message_location ());
}
void
Input::debug_output (string s) const
{
}
void
Input::debug_output (string s) const
{
- print_message (LOG_DEBUG, s);
+ ::debug_output (message_string (s), true, message_location ());