summaryrefslogtreecommitdiffstats
path: root/elaborate.cxx
diff options
context:
space:
mode:
authorfche <fche>2005-08-10 23:11:15 +0000
committerfche <fche>2005-08-10 23:11:15 +0000
commit319660888893154e17ebbe313501ede739a92dcd (patch)
tree49653a0c1916d8dd8d8539e3ed1d9ba12a61155f /elaborate.cxx
parentc0de7a8dc7987f0d1648e36085d328e290217aaa (diff)
downloadsystemtap-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.cxx6
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);