Mercurial > hg > octave-lyh
diff src/error.cc @ 4976:bfcd251499b2
[project @ 2004-09-08 19:31:31 by jwe]
author | jwe |
---|---|
date | Wed, 08 Sep 2004 19:31:31 +0000 |
parents | 7b145222fea3 |
children | bdbee5282954 |
line wrap: on
line diff
--- a/src/error.cc +++ b/src/error.cc @@ -318,23 +318,48 @@ { if (curr_statement) { - const char *f_nm = 0; + std::string nm; - if (curr_function) + int l = -1; + int c = -1; + + octave_function *fcn = curr_function; + + if (fcn) { - std::string fcn_name = curr_function->name (); - std::string file_name = curr_function->fcn_file_name (); + nm = fcn->name (); + + if (nm == "error" || nm == "warning") + fcn = curr_caller_function; + + if (fcn) + { + nm = fcn->fcn_file_name (); - f_nm = file_name.empty () ? fcn_name.c_str () : file_name.c_str (); + if (nm.empty ()) + nm = fcn->name (); + + if (curr_statement) + { + l = curr_statement->line (); + c = curr_statement->column (); + } + } } - int l = curr_statement->line (); - int c = curr_statement->column (); - - if (f_nm) - pr_where_1 ("%s: in %s near line %d, column %d:", name, f_nm, l, c); + if (nm.empty ()) + { + if (l > 0 && c > 0) + pr_where_1 ("%s: near line %d, column %d:", name, l, c); + } else - pr_where_1 ("%s: near line %d, column %d:", name, l, c); + { + if (l > 0 && c > 0) + pr_where_1 ("%s: in %s near line %d, column %d:", + name, nm.c_str (), l, c); + else + pr_where_1 ("%s: in %s", name, nm.c_str ()); + } if (print_code) {