rl_lang/interpreter/stdlib/bitwise/
bit_not.rs1use crate::{
2 interpreter::{evaluator::Evaluator, values::Value},
3 utils::{errors::Error, span::Span},
4};
5
6pub fn std_bit_not(eval: &mut Evaluator, args: Vec<Value>, span: Span) -> Result<Value, Error> {
7 if args.len() != 1 {
8 return Err(eval.err(
9 format!("bit_not() expects 1 argument, got {}", args.len()),
10 span,
11 ));
12 }
13
14 match args.into_iter().next().unwrap_or(Value::Null) {
15 Value::Byte(x) => Ok(Value::Byte(!x)),
16 Value::Integer(x) => Ok(Value::Integer(!x)),
17 _ => Err(eval.err("bit_not() expects a byte or an int".to_string(), span)),
18 }
19}