diff options
author | fche <fche> | 2005-08-10 23:11:15 +0000 |
---|---|---|
committer | fche <fche> | 2005-08-10 23:11:15 +0000 |
commit | 319660888893154e17ebbe313501ede739a92dcd (patch) | |
tree | 49653a0c1916d8dd8d8539e3ed1d9ba12a61155f /elaborate.cxx | |
parent | c0de7a8dc7987f0d1648e36085d328e290217aaa (diff) | |
download | systemtap-steved-319660888893154e17ebbe313501ede739a92dcd.tar.gz systemtap-steved-319660888893154e17ebbe313501ede739a92dcd.tar.xz systemtap-steved-319660888893154e17ebbe313501ede739a92dcd.zip |
2005-08-10 Frank Ch. Eigler <fche@elastic.org>
PR translator/1186
* elaborate.cxx (resolve_2types): Accept a flag to tolerate unresolved
expression types.
(visit_functioncall): Call it thusly.
* translate.cxx (emit_function): Tolerate void functions.
* stap.1.in: Document possibility of void functions.
* tapset/builtin_{log,printk,warn}.stp: Make these void functions.
* testsuite/buildok/nine.stp, semok/eighteen.stp: New tests.
Diffstat (limited to 'elaborate.cxx')
-rw-r--r-- | elaborate.cxx | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/elaborate.cxx b/elaborate.cxx index 0cecab7e..de39b496 100644 --- a/elaborate.cxx +++ b/elaborate.cxx @@ -1252,7 +1252,7 @@ typeresolution_info::visit_ternary_expression (ternary_expression* e) template <class Referrer, class Referent> void resolve_2types (Referrer* referrer, Referent* referent, - typeresolution_info* r, exp_type t) + typeresolution_info* r, exp_type t, bool accept_unknown = false) { exp_type& re_type = referrer->type; const token* re_tok = referrer->tok; @@ -1290,7 +1290,7 @@ void resolve_2types (Referrer* referrer, Referent* referent, r->resolved (te_tok, te_type); // catch re_type/t mismatch later } - else + else if (! accept_unknown) r->unresolved (re_tok); } @@ -1361,7 +1361,7 @@ typeresolution_info::visit_functioncall (functioncall* e) { assert (e->referent != 0); - resolve_2types (e, e->referent, this, t); + resolve_2types (e, e->referent, this, t, true); // accept unknown type if (e->type == pe_stats) invalid (e->tok, e->type); |