use crate::util::Utf16String;
use super::{ComplexExpression, IStandardExpression};
pub trait AdditionSubtractionExpression: ComplexExpression {
fn addition_operator() -> Utf16String {
Utf16String::from_rust_str("+")
}
fn subtraction_operator() -> Utf16String {
Utf16String::from_rust_str("-")
}
fn is_left_allowed(left: Option<&dyn IStandardExpression>) -> bool {
operand_allowed(left)
}
fn is_right_allowed(right: Option<&dyn IStandardExpression>) -> bool {
operand_allowed(right)
}
}
fn operand_allowed(expression: Option<&dyn IStandardExpression>) -> bool {
expression.is_some_and(|expression| {
!expression.is_token_expression()
|| expression.is_number_token_expression()
|| expression.is_generic_token_expression()
})
}