summaryrefslogtreecommitdiff
path: root/valexpr.cc
diff options
context:
space:
mode:
Diffstat (limited to 'valexpr.cc')
-rw-r--r--valexpr.cc10
1 files changed, 7 insertions, 3 deletions
diff --git a/valexpr.cc b/valexpr.cc
index b3f7f80f..8de4571a 100644
--- a/valexpr.cc
+++ b/valexpr.cc
@@ -629,7 +629,10 @@ void value_expr_t::compute(value_t& result, const details_t& details,
case O_NOT:
left->compute(result, details, context);
- result.negate();
+ if (result.strip_annotations())
+ result = false;
+ else
+ result = true;
break;
case O_QUES: {
@@ -637,7 +640,7 @@ void value_expr_t::compute(value_t& result, const details_t& details,
assert(right);
assert(right->kind == O_COL);
left->compute(result, details, context);
- if (result)
+ if (result.strip_annotations())
right->left->compute(result, details, context);
else
right->right->compute(result, details, context);
@@ -648,6 +651,7 @@ void value_expr_t::compute(value_t& result, const details_t& details,
assert(left);
assert(right);
left->compute(result, details, context);
+ result = result.strip_annotations();
if (result)
right->compute(result, details, context);
break;
@@ -656,7 +660,7 @@ void value_expr_t::compute(value_t& result, const details_t& details,
assert(left);
assert(right);
left->compute(result, details, context);
- if (! result)
+ if (! result.strip_annotations())
right->compute(result, details, context);
break;