Eliminate script hashes under no_function.

This commit is contained in:
Stephen Chung
2021-11-16 13:42:46 +08:00
parent b178d7c367
commit e961ae23fd
5 changed files with 48 additions and 29 deletions

View File

@@ -494,7 +494,7 @@ fn parse_fn_call(
);
let hashes = if is_valid_function_name(&id) {
FnCallHashes::from_script(hash)
hash.into()
} else {
FnCallHashes::from_native(hash)
};
@@ -544,7 +544,7 @@ fn parse_fn_call(
);
let hashes = if is_valid_function_name(&id) {
FnCallHashes::from_script(hash)
hash.into()
} else {
FnCallHashes::from_native(hash)
};
@@ -1758,7 +1758,8 @@ fn make_dot_expr(
}
Expr::FnCall(mut func, func_pos) => {
// Recalculate hash
func.hashes = FnCallHashes::from_script_and_native(
func.hashes = FnCallHashes::from_all(
#[cfg(not(feature = "no_function"))]
calc_fn_hash(&func.name, func.args.len()),
calc_fn_hash(&func.name, func.args.len() + 1),
);
@@ -1808,10 +1809,12 @@ fn make_dot_expr(
// lhs.func(...)
(lhs, Expr::FnCall(mut func, func_pos)) => {
// Recalculate hash
func.hashes = FnCallHashes::from_script_and_native(
func.hashes = FnCallHashes::from_all(
#[cfg(not(feature = "no_function"))]
calc_fn_hash(&func.name, func.args.len()),
calc_fn_hash(&func.name, func.args.len() + 1),
);
let rhs = Expr::FnCall(func, func_pos);
Expr::Dot(BinaryExpr { lhs, rhs }.into(), false, op_pos)
}
@@ -1962,7 +1965,7 @@ fn parse_binary_op(
// Convert into a call to `contains`
FnCallExpr {
hashes: FnCallHashes::from_script(calc_fn_hash(OP_CONTAINS, 2)),
hashes: calc_fn_hash(OP_CONTAINS, 2).into(),
args,
name: state.get_identifier(OP_CONTAINS),
..op_base
@@ -1981,7 +1984,7 @@ fn parse_binary_op(
FnCallExpr {
hashes: if is_valid_function_name(&s) {
FnCallHashes::from_script(hash)
hash.into()
} else {
FnCallHashes::from_native(hash)
},