Revise on_def_var API.

This commit is contained in:
Stephen Chung
2022-02-15 10:56:05 +08:00
parent 5bb6ce835f
commit fb9964e1a3
6 changed files with 59 additions and 29 deletions

View File

@@ -1,6 +1,7 @@
//! Module defining functions for evaluating a statement.
use super::{EvalContext, EvalState, GlobalRuntimeState, Target};
use crate::api::events::VarDefInfo;
use crate::ast::{
BinaryExpr, Expr, Ident, OpAssignment, Stmt, SwitchCases, TryCatchBlock, AST_OPTION_FLAGS::*,
};
@@ -818,9 +819,15 @@ impl Engine {
let export = options.contains(AST_OPTION_EXPORTED);
let result = if let Some(ref filter) = self.def_var_filter {
let shadowing = scope.contains(var_name);
let scope_level = state.scope_level;
let will_shadow = scope.contains(var_name);
let nesting_level = state.scope_level;
let is_const = entry_type == AccessMode::ReadOnly;
let info = VarDefInfo {
name: var_name,
is_const,
nesting_level,
will_shadow,
};
let context = EvalContext {
engine: self,
scope,
@@ -828,10 +835,10 @@ impl Engine {
state,
lib,
this_ptr,
level: level,
level,
};
match filter(var_name, true, is_const, scope_level, shadowing, &context) {
match filter(true, info, &context) {
Ok(true) => None,
Ok(false) => {
Some(Err(