Mercurial > octave
changeset 28268:7eddf9608d61
Pretty print warning() output state when nargout==0 (bug #58296).
* error.cc (display_warning_options): Add column headers "State" and
"Warning ID" to printed table of warnings.
* error.cc (Fwarning): If operation is "query" and nargout == 0,
pretty print "all" warnings with display_warning_options() or
construct a status message and display on octave_stdout.
author | Rik <rik@octave.org> |
---|---|
date | Wed, 06 May 2020 15:57:35 -0700 |
parents | 4ee43852f5b6 |
children | 881649ab7978 |
files | libinterp/corefcn/error.cc |
diffstat | 1 files changed, 57 insertions(+), 15 deletions(-) [+] |
line wrap: on
line diff
--- a/libinterp/corefcn/error.cc Wed May 06 13:34:22 2020 -0400 +++ b/libinterp/corefcn/error.cc Wed May 06 15:57:35 2020 -0700 @@ -751,9 +751,13 @@ panic_impossible (); if (nel > 1) - os << "\n\n"; + { + os << "\n"; + os << "Non-default warning states are:\n\n"; + os << " State Warning ID\n"; + } - // The state for all is always supposed to be first in the list. + // The state for "all" is always supposed to be first in the list. for (octave_idx_type i = 1; i < nel; i++) { @@ -1668,25 +1672,63 @@ else if (arg1 == "query") { if (arg2_lc == "all") - retval = es.warning_options (); + { + if (nargout > 0) + retval = es.warning_options (); + else + es.display_warning_options (octave_stdout); + } else if (arg2_lc == "backtrace" || arg2_lc == "debug" || arg2_lc == "verbose" || arg2_lc == "quiet") { - octave_scalar_map tmp; - tmp.assign ("identifier", arg2_lc); - if (arg2_lc == "backtrace") - tmp.assign ("state", es.backtrace_on_warning () ? "on" : "off"); - else if (arg2_lc == "debug") - tmp.assign ("state", es.debug_on_warning () ? "on" : "off"); - else if (arg2_lc == "verbose") - tmp.assign ("state", es.verbose_warning () ? "on" : "off"); + if (nargout > 0) + { + octave_scalar_map tmp; + tmp.assign ("identifier", arg2_lc); + if (arg2_lc == "backtrace") + tmp.assign ("state", es.backtrace_on_warning () ? "on" : "off"); + else if (arg2_lc == "debug") + tmp.assign ("state", es.debug_on_warning () ? "on" : "off"); + else if (arg2_lc == "verbose") + tmp.assign ("state", es.verbose_warning () ? "on" : "off"); + else + tmp.assign ("state", es.quiet_warning () ? "on" : "off"); + + retval = tmp; + } else - tmp.assign ("state", es.quiet_warning () ? "on" : "off"); - - retval = tmp; + { + if (arg2_lc == "backtrace") + octave_stdout << "\"backtrace\" warning state is \"" << + (es.backtrace_on_warning () ? "on" : "off") << + "\"\n"; + else if (arg2_lc == "debug") + octave_stdout << "\"debug\" warning state is \"" << + (es.debug_on_warning () ? "on" : "off") << + "\"\n"; + else if (arg2_lc == "verbose") + octave_stdout << "\"verbose\" warning state is \"" << + (es.verbose_warning () ? "on" : "off") << + "\"\n"; + else + octave_stdout << "\"quiet\" warning state is \"" << + (es.quiet_warning () ? "on" : "off") << + "\"\n"; + } } else - retval = es.warning_query (arg2); + { + if (nargout > 0) + retval = es.warning_query (arg2); + else + { + octave_scalar_map tmp = es.warning_query (arg2); + + octave_stdout << "\"" << arg2 << "\" warning state is \"" << + tmp.getfield ("state").string_value () << + "\"\n"; + } + } done = true; }