Add OpAssignment::new_from_token.

This commit is contained in:
Stephen Chung
2021-12-17 16:55:24 +08:00
parent 8d67c70294
commit dc6896fbe2
5 changed files with 23 additions and 17 deletions

View File

@@ -30,19 +30,27 @@ impl OpAssignment<'_> {
///
/// # Panics
///
/// Panics if the operator name is not an op-assignment operator.
/// Panics if the name is not an op-assignment operator.
#[must_use]
pub fn new(op: Token) -> Self {
#[inline(always)]
pub fn new(name: &str) -> Self {
Self::new_from_token(Token::lookup_from_syntax(name).expect("operator"))
}
/// Create a new [`OpAssignment`] from a [`Token`].
///
/// # Panics
///
/// Panics if the token is not an op-assignment operator.
#[must_use]
pub fn new_from_token(op: Token) -> Self {
let op_raw = op
.map_op_assignment()
.expect("op-assignment")
.expect("op-assignment operator")
.literal_syntax();
let op_assignment = op.literal_syntax();
Self {
hash_op_assign: calc_fn_hash(op_assignment, 2),
hash_op_assign: calc_fn_hash(op.literal_syntax(), 2),
hash_op: calc_fn_hash(op_raw, 2),
op: op_assignment,
op: op.literal_syntax(),
}
}
}