Use Option<Token> instead of Token::NONE.

This commit is contained in:
Stephen Chung
2022-12-27 22:51:38 +08:00
parent bb1136e8ad
commit 00c434eb71
9 changed files with 77 additions and 83 deletions

View File

@@ -12,7 +12,7 @@ use crate::eval::{Caches, GlobalRuntimeState};
use crate::func::{hashing::get_hasher, StraightHashMap};
use crate::tokenizer::{
is_keyword_function, is_valid_function_name, is_valid_identifier, Token, TokenStream,
TokenizerControl, NO_TOKEN,
TokenizerControl,
};
use crate::types::dynamic::AccessMode;
use crate::types::StringsInterner;
@@ -627,7 +627,7 @@ impl Engine {
return Ok(FnCallExpr {
name: state.get_interned_string(id),
capture_parent_scope,
op_token: NO_TOKEN,
op_token: None,
namespace: _namespace,
hashes,
args,
@@ -702,7 +702,7 @@ impl Engine {
return Ok(FnCallExpr {
name: state.get_interned_string(id),
capture_parent_scope,
op_token: NO_TOKEN,
op_token: None,
namespace: _namespace,
hashes,
args,
@@ -1927,7 +1927,7 @@ impl Engine {
name: state.get_interned_string("-"),
hashes: FnCallHashes::from_native(calc_fn_hash(None, "-", 1)),
args,
op_token: token,
op_token: Some(token),
capture_parent_scope: false,
}
.into_fn_call_expr(pos))
@@ -1955,7 +1955,7 @@ impl Engine {
name: state.get_interned_string("+"),
hashes: FnCallHashes::from_native(calc_fn_hash(None, "+", 1)),
args,
op_token: token,
op_token: Some(token),
capture_parent_scope: false,
}
.into_fn_call_expr(pos))
@@ -1976,7 +1976,7 @@ impl Engine {
name: state.get_interned_string("!"),
hashes: FnCallHashes::from_native(calc_fn_hash(None, "!", 1)),
args,
op_token: token,
op_token: Some(token),
capture_parent_scope: false,
}
.into_fn_call_expr(pos))
@@ -1990,7 +1990,7 @@ impl Engine {
/// Make an assignment statement.
fn make_assignment_stmt(
op: Token,
op: Option<Token>,
state: &mut ParseState,
lhs: Expr,
rhs: Expr,
@@ -2023,10 +2023,10 @@ impl Engine {
}
}
let op_info = if op == NO_TOKEN {
OpAssignment::new_assignment(op_pos)
} else {
let op_info = if let Some(op) = op {
OpAssignment::new_op_assignment_from_token(op, op_pos)
} else {
OpAssignment::new_assignment(op_pos)
};
match lhs {
@@ -2307,9 +2307,9 @@ impl Engine {
let hash = calc_fn_hash(None, &op, 2);
let is_valid_script_function = is_valid_function_name(&op);
let operator_token = if is_valid_script_function {
NO_TOKEN
None
} else {
op_token.clone()
Some(op_token.clone())
};
let mut args = StaticVec::new_const();
@@ -2380,7 +2380,7 @@ impl Engine {
name: state.get_interned_string(op),
hashes: FnCallHashes::from_native(calc_fn_hash(None, op, 1)),
args,
op_token: Token::Bang,
op_token: Some(Token::Bang),
capture_parent_scope: false,
};
not_base.into_fn_call_expr(pos)
@@ -3183,11 +3183,12 @@ impl Engine {
let (op, pos) = match input.peek().expect(NEVER_ENDS) {
// var = ...
(Token::Equals, ..) => (NO_TOKEN, eat_token(input, Token::Equals)),
(Token::Equals, ..) => (None, eat_token(input, Token::Equals)),
// var op= ...
(token, ..) if token.is_op_assignment() => {
input.next().map(|(op, pos)| (op, pos)).expect(NEVER_ENDS)
}
(token, ..) if token.is_op_assignment() => input
.next()
.map(|(op, pos)| (Some(op), pos))
.expect(NEVER_ENDS),
// Not op-assignment
_ => return Ok(Stmt::Expr(expr.into())),
};
@@ -3683,7 +3684,7 @@ impl Engine {
num_externals + 1,
)),
args,
op_token: NO_TOKEN,
op_token: None,
capture_parent_scope: false,
}
.into_fn_call_expr(pos);