Code style issues fixed

This commit is contained in:
Ilya Lakhin 2020-07-29 20:17:18 +07:00
parent a856a8bbcb
commit 8fc16b40e6
3 changed files with 22 additions and 21 deletions

View File

@ -32,7 +32,7 @@ only_i64 = [] # set INT=i64 (default) and disable support for all other in
no_index = [] # no arrays and indexing no_index = [] # no arrays and indexing
no_object = [] # no custom objects no_object = [] # no custom objects
no_function = [] # no script-defined functions no_function = [] # no script-defined functions
no_closures = [] # no automatic read/write binding of anonymous function's local variables to it's external context no_capture = [] # no automatic read/write binding of anonymous function's local variables to it's external context
no_module = [] # no modules no_module = [] # no modules
internals = [] # expose internal data structures internals = [] # expose internal data structures
unicode-xid-ident = ["unicode-xid"] # allow Unicode Standard Annex #31 for identifiers. unicode-xid-ident = ["unicode-xid"] # allow Unicode Standard Annex #31 for identifiers.

View File

@ -15,7 +15,7 @@ use crate::utils::{StaticVec, StraightHasherBuilder};
#[cfg(not(feature = "no_function"))] #[cfg(not(feature = "no_function"))]
use crate::engine::FN_ANONYMOUS; use crate::engine::FN_ANONYMOUS;
#[cfg(not(feature = "no_closures"))] #[cfg(not(feature = "no_capture"))]
use crate::engine::KEYWORD_FN_PTR_CURRY; use crate::engine::KEYWORD_FN_PTR_CURRY;
#[cfg(not(feature = "no_object"))] #[cfg(not(feature = "no_object"))]
@ -402,28 +402,29 @@ pub enum ReturnType {
Exception, Exception,
} }
#[derive(Clone)]
struct ParseState<'e> { struct ParseState<'e> {
// Reference to the scripting `Engine`. /// Reference to the scripting `Engine`.
engine: &'e Engine, engine: &'e Engine,
// Encapsulates a local stack with variable names to simulate an actual runtime scope. /// Encapsulates a local stack with variable names to simulate an actual runtime scope.
stack: Vec<(String, ScopeEntryType)>, stack: Vec<(String, ScopeEntryType)>,
// Tracks a list of external variables(variables that are not explicitly /// Tracks a list of external variables(variables that are not explicitly
// declared in the scope during AST evaluation). /// declared in the scope during AST evaluation).
#[cfg(not(feature = "no_closures"))] #[cfg(not(feature = "no_capture"))]
externals: Vec<String>, externals: Vec<String>,
// Encapsulates a local stack with variable names to simulate an actual runtime scope. /// Encapsulates a local stack with variable names to simulate an actual runtime scope.
modules: Vec<String>, modules: Vec<String>,
// Maximum levels of expression nesting. /// Maximum levels of expression nesting.
#[cfg(not(feature = "unchecked"))] #[cfg(not(feature = "unchecked"))]
max_expr_depth: usize, max_expr_depth: usize,
// Maximum levels of expression nesting in functions. /// Maximum levels of expression nesting in functions.
#[cfg(not(feature = "unchecked"))] #[cfg(not(feature = "unchecked"))]
max_function_expr_depth: usize, max_function_expr_depth: usize,
} }
impl<'e> ParseState<'e> { impl<'e> ParseState<'e> {
/// Create a new `ParseState`. /// Create a new `ParseState`.
fn new( pub fn new(
engine: &'e Engine, engine: &'e Engine,
#[cfg(not(feature = "unchecked"))] max_expr_depth: usize, #[cfg(not(feature = "unchecked"))] max_expr_depth: usize,
#[cfg(not(feature = "unchecked"))] max_function_expr_depth: usize, #[cfg(not(feature = "unchecked"))] max_function_expr_depth: usize,
@ -432,7 +433,7 @@ impl<'e> ParseState<'e> {
engine, engine,
#[cfg(not(feature = "unchecked"))] max_expr_depth, #[cfg(not(feature = "unchecked"))] max_expr_depth,
#[cfg(not(feature = "unchecked"))] max_function_expr_depth, #[cfg(not(feature = "unchecked"))] max_function_expr_depth,
#[cfg(not(feature = "no_closures"))] externals: Default::default(), #[cfg(not(feature = "no_capture"))] externals: Default::default(),
stack: Default::default(), stack: Default::default(),
modules: Default::default(), modules: Default::default(),
} }
@ -459,7 +460,7 @@ impl<'e> ParseState<'e> {
return index return index
} }
#[cfg(not(feature = "no_closures"))] #[cfg(not(feature = "no_capture"))]
if self.externals.iter().find(|n| *n == name).is_none() { if self.externals.iter().find(|n| *n == name).is_none() {
self.externals.push(name.to_string()); self.externals.push(name.to_string());
} }
@ -468,8 +469,8 @@ impl<'e> ParseState<'e> {
} }
/// Creates a curry expression from a list of external variables /// Creates a curry expression from a list of external variables
#[cfg(not(feature = "no_closures"))] #[cfg(not(feature = "no_capture"))]
fn make_curry_from_externals(&self, fn_expr: Expr, settings: &ParseSettings) -> Expr { pub fn make_curry_from_externals(&self, fn_expr: Expr, settings: &ParseSettings) -> Expr {
if self.externals.is_empty() { if self.externals.is_empty() {
return fn_expr return fn_expr
} }
@ -502,7 +503,7 @@ impl<'e> ParseState<'e> {
/// The return value is the offset to be deducted from `Stack::len`, /// The return value is the offset to be deducted from `Stack::len`,
/// i.e. the top element of the `ParseState` is offset 1. /// i.e. the top element of the `ParseState` is offset 1.
/// Return `None` when the variable name is not found in the `ParseState`. /// Return `None` when the variable name is not found in the `ParseState`.
fn find_module(&self, name: &str) -> Option<NonZeroUsize> { pub fn find_module(&self, name: &str) -> Option<NonZeroUsize> {
self.modules self.modules
.iter() .iter()
.rev() .rev()
@ -1853,7 +1854,7 @@ fn parse_unary(
let (expr, func) = parse_anon_fn(input, &mut new_state, lib, settings)?; let (expr, func) = parse_anon_fn(input, &mut new_state, lib, settings)?;
#[cfg(not(feature = "no_closures"))] #[cfg(not(feature = "no_capture"))]
for closure in new_state.externals { for closure in new_state.externals {
state.access_var(&closure); state.access_var(&closure);
} }
@ -3152,7 +3153,7 @@ fn parse_anon_fn(
let mut static_params = StaticVec::<String>::new(); let mut static_params = StaticVec::<String>::new();
#[cfg(not(feature = "no_closures"))] #[cfg(not(feature = "no_capture"))]
for closure in state.externals.iter() { for closure in state.externals.iter() {
static_params.push(closure.clone()); static_params.push(closure.clone());
} }
@ -3183,13 +3184,13 @@ fn parse_anon_fn(
pos: settings.pos, pos: settings.pos,
}; };
#[cfg(not(feature = "no_closures"))] #[cfg(not(feature = "no_capture"))]
let expr = state.make_curry_from_externals( let expr = state.make_curry_from_externals(
Expr::FnPointer(Box::new((fn_name, settings.pos))), Expr::FnPointer(Box::new((fn_name, settings.pos))),
&settings, &settings,
); );
#[cfg(feature = "no_closures")] #[cfg(feature = "no_capture")]
let expr = Expr::FnPointer(Box::new((fn_name, settings.pos))); let expr = Expr::FnPointer(Box::new((fn_name, settings.pos)));
Ok((expr, script)) Ok((expr, script))

View File

@ -211,7 +211,7 @@ fn test_fn_ptr_curry_call() -> Result<(), Box<EvalAltResult>> {
} }
#[test] #[test]
#[cfg(not(feature = "no_closures"))] #[cfg(not(feature = "no_capture"))]
fn test_fn_closures() -> Result<(), Box<EvalAltResult>> { fn test_fn_closures() -> Result<(), Box<EvalAltResult>> {
let engine = Engine::new(); let engine = Engine::new();