From 9b48ce88f4a8aebb8ad176f4e7fe6bbbe36e1fe7 Mon Sep 17 00:00:00 2001 From: fche Date: Tue, 5 Sep 2006 02:08:52 +0000 Subject: [PATCH] 2006-09-04 Frank Ch. Eigler Improve unresolved target-symbol error messages. * staptree.h (target_symbol): Add new field saved_conversion_error. * elaborate.cxx (typeresolution_info::visit_target_symbol): Throw that if found instead of generic error. * tapsets.cxx (t_v_f_c_v::visit_target_symbol): Set it. --- ChangeLog | 8 ++++++++ elaborate.cxx | 5 ++++- staptree.h | 2 ++ tapsets.cxx | 4 +++- 4 files changed, 17 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index aa6bd4292..6949a7f54 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +2006-09-04 Frank Ch. Eigler + + Improve unresolved target-symbol error messages. + * staptree.h (target_symbol): Add new field saved_conversion_error. + * elaborate.cxx (typeresolution_info::visit_target_symbol): Throw + that if found instead of generic error. + * tapsets.cxx (t_v_f_c_v::visit_target_symbol): Set it. + 2006-08-30 Li Guanglei * stapprobes.5.in: document signal.* diff --git a/elaborate.cxx b/elaborate.cxx index 957f5ea52..3fa5dda06 100644 --- a/elaborate.cxx +++ b/elaborate.cxx @@ -2173,7 +2173,10 @@ typeresolution_info::visit_target_symbol (target_symbol* e) // later unused-expression-elimination pass didn't get rid of it // either. So we have a target symbol that is believed to be of // genuine use, yet unresolved by the provider. - throw semantic_error("unresolved target-symbol expression", e->tok); + if (e->saved_conversion_error) + throw (* (e->saved_conversion_error)); + else + throw semantic_error("unresolved target-symbol expression", e->tok); } diff --git a/staptree.h b/staptree.h index 8c18f2769..11243c987 100644 --- a/staptree.h +++ b/staptree.h @@ -229,6 +229,8 @@ struct target_symbol : public expression }; std::string base_name; std::vector > components; + semantic_error* saved_conversion_error; + target_symbol(): saved_conversion_error (0) {} void print (std::ostream& o) const; void visit (visitor* u); }; diff --git a/tapsets.cxx b/tapsets.cxx index 1d491cc25..451867a20 100644 --- a/tapsets.cxx +++ b/tapsets.cxx @@ -2198,8 +2198,10 @@ target_variable_flavour_calculating_visitor::visit_target_symbol (target_symbol lvalue, ty); } - catch (const semantic_error& e) + catch (const semantic_error& x) { + e->saved_conversion_error = new semantic_error (x); + e->saved_conversion_error->tok1 = e->tok; ty = pe_unknown; } -- 2.43.5