From 460b2038d243704fa1678e94d4b7098eb6f3d8f8 Mon Sep 17 00:00:00 2001 From: graydon Date: Fri, 9 Dec 2005 02:20:41 +0000 Subject: 2005-12-08 Graydon Hoare * translate.cxx (delete_statement_operand_visitor::visit_arrayindex): Prohibit deleting histogram buckets. (c_tmpcounter::visit_array_in): Direct to visit_arrayindex. (c_unparser::visit_array_in): Likewise. * testsuite/buildok/histogram_operator_in.stp: New test. --- translate.cxx | 23 +++++++++++++++++------ 1 file changed, 17 insertions(+), 6 deletions(-) (limited to 'translate.cxx') diff --git a/translate.cxx b/translate.cxx index a4ca176d..f2a848f3 100644 --- a/translate.cxx +++ b/translate.cxx @@ -2082,8 +2082,7 @@ delete_statement_operand_visitor::visit_arrayindex (arrayindex* e) } else { - // FIXME: fill in some logic here! - assert(false); + throw semantic_error("cannot delete histogram bucket entries\n", e->tok); } } @@ -2282,8 +2281,14 @@ c_tmpcounter::visit_array_in (array_in* e) } else { - // FIXME: fill in some logic here! - assert(false); + // By definition: + // + // 'foo in @hist_op(...)' is true iff + // '@hist_op(...)[foo]' is nonzero + // + // so we just delegate to the latter call, since int64_t is also + // our boolean type. + e->operand->visit(this); } } @@ -2315,8 +2320,14 @@ c_unparser::visit_array_in (array_in* e) } else { - // FIXME: fill in some logic here! - assert(false); + // By definition: + // + // 'foo in @hist_op(...)' is true iff + // '@hist_op(...)[foo]' is nonzero + // + // so we just delegate to the latter call, since int64_t is also + // our boolean type. + e->operand->visit(this); } } -- cgit