Eliminate optimize module with no_optimize.
This commit is contained in:
51
src/parse.rs
51
src/parse.rs
@@ -9,7 +9,6 @@ use crate::dynamic::AccessMode;
|
||||
use crate::engine::{Precedence, KEYWORD_THIS, OP_CONTAINS};
|
||||
use crate::fn_hash::get_hasher;
|
||||
use crate::module::NamespaceRef;
|
||||
use crate::optimize::{optimize_into_ast, OptimizationLevel};
|
||||
use crate::token::{
|
||||
is_keyword_function, is_valid_function_name, is_valid_identifier, Token, TokenStream,
|
||||
TokenizerControl,
|
||||
@@ -3219,8 +3218,9 @@ impl Engine {
|
||||
input: &mut TokenStream,
|
||||
state: &mut ParseState,
|
||||
scope: &Scope,
|
||||
optimization_level: OptimizationLevel,
|
||||
#[cfg(not(feature = "no_optimize"))] optimization_level: crate::OptimizationLevel,
|
||||
) -> Result<AST, ParseError> {
|
||||
let _scope = scope;
|
||||
let mut functions = Default::default();
|
||||
|
||||
let settings = ParseSettings {
|
||||
@@ -3249,16 +3249,17 @@ impl Engine {
|
||||
let mut statements = StaticVec::new();
|
||||
statements.push(Stmt::Expr(expr));
|
||||
|
||||
Ok(
|
||||
// Optimize AST
|
||||
optimize_into_ast(
|
||||
self,
|
||||
scope,
|
||||
statements,
|
||||
Default::default(),
|
||||
optimization_level,
|
||||
),
|
||||
)
|
||||
#[cfg(not(feature = "no_optimize"))]
|
||||
return Ok(crate::optimize::optimize_into_ast(
|
||||
self,
|
||||
_scope,
|
||||
statements,
|
||||
Default::default(),
|
||||
optimization_level,
|
||||
));
|
||||
|
||||
#[cfg(feature = "no_optimize")]
|
||||
return Ok(AST::new(statements, crate::Module::new()));
|
||||
}
|
||||
|
||||
/// Parse the global level statements.
|
||||
@@ -3328,13 +3329,29 @@ impl Engine {
|
||||
input: &mut TokenStream,
|
||||
state: &mut ParseState,
|
||||
scope: &Scope,
|
||||
optimization_level: OptimizationLevel,
|
||||
#[cfg(not(feature = "no_optimize"))] optimization_level: crate::OptimizationLevel,
|
||||
) -> Result<AST, ParseError> {
|
||||
let _scope = scope;
|
||||
let (statements, lib) = self.parse_global_level(input, state)?;
|
||||
|
||||
Ok(
|
||||
// Optimize AST
|
||||
optimize_into_ast(self, scope, statements, lib, optimization_level),
|
||||
)
|
||||
#[cfg(not(feature = "no_optimize"))]
|
||||
return Ok(crate::optimize::optimize_into_ast(
|
||||
self,
|
||||
_scope,
|
||||
statements,
|
||||
lib,
|
||||
optimization_level,
|
||||
));
|
||||
|
||||
#[cfg(feature = "no_optimize")]
|
||||
{
|
||||
let mut m = crate::Module::new();
|
||||
|
||||
lib.into_iter().for_each(|fn_def| {
|
||||
m.set_script_fn(fn_def);
|
||||
});
|
||||
|
||||
return Ok(AST::new(statements, m));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user