Remove crate:: from types.

This commit is contained in:
Stephen Chung 2022-11-24 11:00:47 +08:00
parent b1e8b48471
commit 6791ef64da
9 changed files with 62 additions and 73 deletions

View File

@ -230,6 +230,8 @@ pub mod array_functions {
// Check if array will be over max size limit // Check if array will be over max size limit
#[cfg(not(feature = "unchecked"))] #[cfg(not(feature = "unchecked"))]
{ {
use crate::types::dynamic::Union;
if _ctx.engine().max_array_size() > 0 && len > _ctx.engine().max_array_size() { if _ctx.engine().max_array_size() > 0 && len > _ctx.engine().max_array_size() {
return Err( return Err(
ERR::ErrorDataTooLarge("Size of array".to_string(), Position::NONE).into(), ERR::ErrorDataTooLarge("Size of array".to_string(), Position::NONE).into(),
@ -237,10 +239,10 @@ pub mod array_functions {
} }
let check_sizes = match item.0 { let check_sizes = match item.0 {
crate::types::dynamic::Union::Str(..) => true, Union::Str(..) => true,
crate::types::dynamic::Union::Array(..) => true, Union::Array(..) => true,
#[cfg(not(feature = "no_object"))] #[cfg(not(feature = "no_object"))]
crate::types::dynamic::Union::Map(..) => true, Union::Map(..) => true,
_ => false, _ => false,
}; };

View File

@ -143,7 +143,7 @@ mod bit_field_functions {
} }
// 2^bits - 1 // 2^bits - 1
let mask = ((2 as UNSIGNED_INT).pow(bits as u32) - 1) as crate::INT; let mask = ((2 as UNSIGNED_INT).pow(bits as u32) - 1) as INT;
Ok(((value & (mask << bit)) >> bit) & mask) Ok(((value & (mask << bit)) >> bit) & mask)
} }
@ -230,7 +230,7 @@ mod bit_field_functions {
} }
// 2^bits - 1 // 2^bits - 1
let mask = ((2 as UNSIGNED_INT).pow(bits as u32) - 1) as crate::INT; let mask = ((2 as UNSIGNED_INT).pow(bits as u32) - 1) as INT;
*value &= !(mask << bit); *value &= !(mask << bit);
*value |= (new_value & mask) << bit; *value |= (new_value & mask) << bit;

View File

@ -5,7 +5,7 @@ use crate::module::ModuleFlags;
use crate::plugin::*; use crate::plugin::*;
use crate::{ use crate::{
def_package, Array, Blob, Dynamic, ExclusiveRange, InclusiveRange, NativeCallContext, Position, def_package, Array, Blob, Dynamic, ExclusiveRange, InclusiveRange, NativeCallContext, Position,
RhaiResultOf, INT, INT_BYTES, MAX_USIZE_INT, RhaiResultOf, ERR, INT, INT_BYTES, MAX_USIZE_INT,
}; };
#[cfg(feature = "no_std")] #[cfg(feature = "no_std")]
use std::prelude::v1::*; use std::prelude::v1::*;
@ -363,9 +363,7 @@ pub mod blob_functions {
// Check if blob will be over max size limit // Check if blob will be over max size limit
if _ctx.engine().max_array_size() > 0 && len > _ctx.engine().max_array_size() { if _ctx.engine().max_array_size() > 0 && len > _ctx.engine().max_array_size() {
return Err( return Err(ERR::ErrorDataTooLarge("Size of BLOB".to_string(), Position::NONE).into());
crate::ERR::ErrorDataTooLarge("Size of BLOB".to_string(), Position::NONE).into(),
);
} }
if len > blob.len() { if len > blob.len() {

View File

@ -34,16 +34,18 @@ mod debugging_functions {
#[cfg(not(feature = "no_function"))] #[cfg(not(feature = "no_function"))]
#[cfg(not(feature = "no_index"))] #[cfg(not(feature = "no_index"))]
pub fn back_trace(ctx: NativeCallContext) -> Array { pub fn back_trace(ctx: NativeCallContext) -> Array {
use crate::debugger::CallStackFrame;
ctx.global_runtime_state() ctx.global_runtime_state()
.debugger .debugger
.call_stack() .call_stack()
.iter() .iter()
.rev() .rev()
.filter(|crate::debugger::CallStackFrame { fn_name, args, .. }| { .filter(|CallStackFrame { fn_name, args, .. }| {
fn_name.as_str() != "back_trace" || !args.is_empty() fn_name.as_str() != "back_trace" || !args.is_empty()
}) })
.map( .map(
|frame @ crate::debugger::CallStackFrame { |frame @ CallStackFrame {
fn_name: _fn_name, fn_name: _fn_name,
args: _args, args: _args,
source: _source, source: _source,
@ -53,6 +55,8 @@ mod debugging_functions {
#[cfg(not(feature = "no_object"))] #[cfg(not(feature = "no_object"))]
{ {
use crate::INT;
let mut map = Map::new(); let mut map = Map::new();
map.insert("display".into(), display.into()); map.insert("display".into(), display.into());
map.insert("fn_name".into(), _fn_name.into()); map.insert("fn_name".into(), _fn_name.into());
@ -63,10 +67,10 @@ mod debugging_functions {
map.insert("source".into(), source.into()); map.insert("source".into(), source.into());
} }
if !_pos.is_none() { if !_pos.is_none() {
map.insert("line".into(), (_pos.line().unwrap() as crate::INT).into()); map.insert("line".into(), (_pos.line().unwrap() as INT).into());
map.insert( map.insert(
"position".into(), "position".into(),
(_pos.position().unwrap_or(0) as crate::INT).into(), (_pos.position().unwrap_or(0) as INT).into(),
); );
} }
Dynamic::from_map(map) Dynamic::from_map(map)

View File

@ -2,7 +2,7 @@ use crate::eval::calc_index;
use crate::module::ModuleFlags; use crate::module::ModuleFlags;
use crate::plugin::*; use crate::plugin::*;
use crate::{ use crate::{
def_package, ExclusiveRange, InclusiveRange, RhaiResultOf, INT, INT_BITS, MAX_USIZE_INT, def_package, ExclusiveRange, InclusiveRange, RhaiResultOf, ERR, INT, INT_BITS, MAX_USIZE_INT,
}; };
#[cfg(feature = "no_std")] #[cfg(feature = "no_std")]
use std::prelude::v1::*; use std::prelude::v1::*;
@ -66,14 +66,11 @@ impl<T: Copy + PartialOrd> StepRange<T> {
if let Some(n) = add(from, step) { if let Some(n) = add(from, step) {
#[cfg(not(feature = "unchecked"))] #[cfg(not(feature = "unchecked"))]
if n == from { if n == from {
return Err(crate::ERR::ErrorInFunctionCall( return Err(ERR::ErrorInFunctionCall(
"range".to_string(), "range".to_string(),
String::new(), String::new(),
crate::ERR::ErrorArithmetic( ERR::ErrorArithmetic("step value cannot be zero".to_string(), Position::NONE)
"step value cannot be zero".to_string(), .into(),
Position::NONE,
)
.into(),
Position::NONE, Position::NONE,
) )
.into()); .into());
@ -128,7 +125,7 @@ pub struct BitRange(INT, usize);
impl BitRange { impl BitRange {
pub fn new(value: INT, from: INT, len: INT) -> RhaiResultOf<Self> { pub fn new(value: INT, from: INT, len: INT) -> RhaiResultOf<Self> {
let from = calc_index(INT_BITS, from, true, || { let from = calc_index(INT_BITS, from, true, || {
crate::ERR::ErrorBitFieldBounds(INT_BITS, from, Position::NONE).into() ERR::ErrorBitFieldBounds(INT_BITS, from, Position::NONE).into()
})?; })?;
let len = if len < 0 { let len = if len < 0 {

View File

@ -159,8 +159,6 @@ mod int_functions {
#[cfg(not(feature = "no_float"))] #[cfg(not(feature = "no_float"))]
#[export_module] #[export_module]
mod trig_functions { mod trig_functions {
use crate::FLOAT;
/// Return the sine of the floating-point number in radians. /// Return the sine of the floating-point number in radians.
pub fn sin(x: FLOAT) -> FLOAT { pub fn sin(x: FLOAT) -> FLOAT {
x.sin() x.sin()
@ -223,8 +221,6 @@ mod trig_functions {
#[cfg(not(feature = "no_float"))] #[cfg(not(feature = "no_float"))]
#[export_module] #[export_module]
mod float_functions { mod float_functions {
use crate::FLOAT;
/// Return the natural number _e_. /// Return the natural number _e_.
#[rhai_fn(name = "E")] #[rhai_fn(name = "E")]
pub fn e() -> FLOAT { pub fn e() -> FLOAT {

View File

@ -1,6 +1,6 @@
use crate::module::ModuleFlags; use crate::module::ModuleFlags;
use crate::plugin::*; use crate::plugin::*;
use crate::{def_package, FnPtr, SmartString, INT}; use crate::{def_package, FnPtr, ImmutableString, SmartString, INT};
use std::any::TypeId; use std::any::TypeId;
use std::fmt::{Binary, LowerHex, Octal, Write}; use std::fmt::{Binary, LowerHex, Octal, Write};
#[cfg(feature = "no_std")] #[cfg(feature = "no_std")]
@ -26,7 +26,7 @@ def_package! {
// Register characters iterator // Register characters iterator
#[cfg(not(feature = "no_index"))] #[cfg(not(feature = "no_index"))]
lib.set_iter(TypeId::of::<ImmutableString>(), |value| Box::new( lib.set_iter(TypeId::of::<ImmutableString>(), |value| Box::new(
value.cast::<ImmutableString>().chars().map(Into::into).collect::<crate::Array>().into_iter() value.cast::<ImmutableString>().chars().map(Into::into).collect::<Array>().into_iter()
)); ));
} }
} }
@ -38,7 +38,7 @@ pub fn print_with_func(
fn_name: &str, fn_name: &str,
ctx: &NativeCallContext, ctx: &NativeCallContext,
value: &mut Dynamic, value: &mut Dynamic,
) -> crate::ImmutableString { ) -> ImmutableString {
match ctx.call_native_fn_raw(fn_name, true, &mut [value]) { match ctx.call_native_fn_raw(fn_name, true, &mut [value]) {
Ok(result) if result.is_string() => { Ok(result) if result.is_string() => {
result.into_immutable_string().expect("`ImmutableString`") result.into_immutable_string().expect("`ImmutableString`")
@ -50,8 +50,6 @@ pub fn print_with_func(
#[export_module] #[export_module]
mod print_debug_functions { mod print_debug_functions {
use crate::ImmutableString;
/// Convert the value of the `item` into a string. /// Convert the value of the `item` into a string.
#[rhai_fn(name = "print", pure)] #[rhai_fn(name = "print", pure)]
pub fn print_generic(ctx: NativeCallContext, item: &mut Dynamic) -> ImmutableString { pub fn print_generic(ctx: NativeCallContext, item: &mut Dynamic) -> ImmutableString {

View File

@ -1,8 +1,8 @@
use crate::module::ModuleFlags; use crate::module::ModuleFlags;
use crate::plugin::*; use crate::plugin::*;
use crate::{ use crate::{
def_package, Dynamic, ExclusiveRange, InclusiveRange, RhaiResultOf, StaticVec, INT, def_package, Dynamic, ExclusiveRange, ImmutableString, InclusiveRange, RhaiResultOf,
MAX_USIZE_INT, SmartString, StaticVec, INT, MAX_USIZE_INT, ERR, Position
}; };
#[cfg(feature = "no_std")] #[cfg(feature = "no_std")]
use std::prelude::v1::*; use std::prelude::v1::*;
@ -21,8 +21,6 @@ def_package! {
#[export_module] #[export_module]
mod string_functions { mod string_functions {
use crate::{ImmutableString, SmartString};
#[rhai_fn(name = "+", pure)] #[rhai_fn(name = "+", pure)]
pub fn add_append( pub fn add_append(
ctx: NativeCallContext, ctx: NativeCallContext,
@ -135,7 +133,7 @@ mod string_functions {
} }
#[rhai_fn(name = "+=", name = "append")] #[rhai_fn(name = "+=", name = "append")]
pub fn add(string: &mut ImmutableString, utf8: Blob) { pub fn add(string: &mut ImmutableString, utf8: Blob) {
let mut s = crate::SmartString::from(string.as_str()); let mut s = SmartString::from(string.as_str());
if !utf8.is_empty() { if !utf8.is_empty() {
s.push_str(&String::from_utf8_lossy(&utf8)); s.push_str(&String::from_utf8_lossy(&utf8));
*string = s.into(); *string = s.into();
@ -155,6 +153,25 @@ mod string_functions {
s.into() s.into()
} }
/// Convert the string into an UTF-8 encoded byte-stream as a BLOB.
///
/// # Example
///
/// ```rhai
/// let text = "朝には紅顔ありて夕べには白骨となる";
///
/// let bytes = text.to_blob();
///
/// print(bytes.len()); // prints 51
/// ```
pub fn to_blob(string: &str) -> Blob {
if string.is_empty() {
Blob::new()
} else {
string.as_bytes().into()
}
}
} }
/// Return the length of the string, in number of characters. /// Return the length of the string, in number of characters.
@ -196,25 +213,6 @@ mod string_functions {
string.len() as INT string.len() as INT
} }
} }
/// Convert the string into an UTF-8 encoded byte-stream as a BLOB.
///
/// # Example
///
/// ```rhai
/// let text = "朝には紅顔ありて夕べには白骨となる";
///
/// let bytes = text.to_blob();
///
/// print(bytes.len()); // prints 51
/// ```
#[cfg(not(feature = "no_index"))]
pub fn to_blob(string: &str) -> crate::Blob {
if string.is_empty() {
crate::Blob::new()
} else {
string.as_bytes().into()
}
}
/// Remove all occurrences of a sub-string from the string. /// Remove all occurrences of a sub-string from the string.
/// ///
/// # Example /// # Example
@ -1226,9 +1224,9 @@ mod string_functions {
// Check if string will be over max size limit // Check if string will be over max size limit
if _ctx.engine().max_string_size() > 0 && len > _ctx.engine().max_string_size() { if _ctx.engine().max_string_size() > 0 && len > _ctx.engine().max_string_size() {
return Err(crate::ERR::ErrorDataTooLarge( return Err(ERR::ErrorDataTooLarge(
"Length of string".to_string(), "Length of string".to_string(),
crate::Position::NONE, Position::NONE,
) )
.into()); .into());
} }
@ -1244,9 +1242,9 @@ mod string_functions {
if _ctx.engine().max_string_size() > 0 && string.len() > _ctx.engine().max_string_size() if _ctx.engine().max_string_size() > 0 && string.len() > _ctx.engine().max_string_size()
{ {
return Err(crate::ERR::ErrorDataTooLarge( return Err(ERR::ErrorDataTooLarge(
"Length of string".to_string(), "Length of string".to_string(),
crate::Position::NONE, Position::NONE,
) )
.into()); .into());
} }
@ -1286,9 +1284,9 @@ mod string_functions {
// Check if string will be over max size limit // Check if string will be over max size limit
if _ctx.engine().max_string_size() > 0 && len > _ctx.engine().max_string_size() { if _ctx.engine().max_string_size() > 0 && len > _ctx.engine().max_string_size() {
return Err(crate::ERR::ErrorDataTooLarge( return Err(ERR::ErrorDataTooLarge(
"Length of string".to_string(), "Length of string".to_string(),
crate::Position::NONE, Position::NONE,
) )
.into()); .into());
} }
@ -1311,9 +1309,9 @@ mod string_functions {
if _ctx.engine().max_string_size() > 0 && string.len() > _ctx.engine().max_string_size() if _ctx.engine().max_string_size() > 0 && string.len() > _ctx.engine().max_string_size()
{ {
return Err(crate::ERR::ErrorDataTooLarge( return Err(ERR::ErrorDataTooLarge(
"Length of string".to_string(), "Length of string".to_string(),
crate::Position::NONE, Position::NONE,
) )
.into()); .into());
} }
@ -1324,7 +1322,7 @@ mod string_functions {
#[cfg(not(feature = "no_index"))] #[cfg(not(feature = "no_index"))]
pub mod arrays { pub mod arrays {
use crate::{Array, ImmutableString}; use crate::Array;
/// Split the string into two at the specified `index` position and return it both strings /// Split the string into two at the specified `index` position and return it both strings
/// as an array. /// as an array.

View File

@ -1454,15 +1454,13 @@ impl Engine {
#[cfg(feature = "no_closure")] #[cfg(feature = "no_closure")]
let options = self.options | (settings.options & LangOptions::STRICT_VAR); let options = self.options | (settings.options & LangOptions::STRICT_VAR);
let mut flags = (settings.flags let flags = (settings.flags
& !ParseSettingFlags::GLOBAL_LEVEL & !ParseSettingFlags::GLOBAL_LEVEL
& ParseSettingFlags::BREAKABLE) & ParseSettingFlags::BREAKABLE)
| ParseSettingFlags::FN_SCOPE; | ParseSettingFlags::FN_SCOPE;
#[cfg(not(feature = "no_closure"))] #[cfg(not(feature = "no_closure"))]
{ let flags = flags | ParseSettingFlags::CLOSURE_SCOPE;
flags |= ParseSettingFlags::CLOSURE_SCOPE;
}
let new_settings = ParseSettings { let new_settings = ParseSettings {
level: 0, level: 0,
@ -3728,7 +3726,7 @@ impl Engine {
&self, &self,
input: &mut TokenStream, input: &mut TokenStream,
state: &mut ParseState, state: &mut ParseState,
parent: &mut ParseState, _parent: &mut ParseState,
lib: &mut FnLib, lib: &mut FnLib,
settings: ParseSettings, settings: ParseSettings,
) -> ParseResult<(Expr, ScriptFnDef)> { ) -> ParseResult<(Expr, ScriptFnDef)> {
@ -3822,7 +3820,7 @@ impl Engine {
#[cfg(not(feature = "no_closure"))] #[cfg(not(feature = "no_closure"))]
let expr = let expr =
Self::make_curry_from_externals(state, parent, lib, expr, externals, settings.pos); Self::make_curry_from_externals(state, _parent, lib, expr, externals, settings.pos);
Ok((expr, script)) Ok((expr, script))
} }
@ -3837,11 +3835,9 @@ impl Engine {
) -> ParseResult<AST> { ) -> ParseResult<AST> {
let mut functions = StraightHashMap::default(); let mut functions = StraightHashMap::default();
let mut options = self.options & !LangOptions::STMT_EXPR & !LangOptions::LOOP_EXPR; let options = self.options & !LangOptions::STMT_EXPR & !LangOptions::LOOP_EXPR;
#[cfg(not(feature = "no_function"))] #[cfg(not(feature = "no_function"))]
{ let options = options & !LangOptions::ANON_FN;
options &= !LangOptions::ANON_FN;
}
let mut settings = ParseSettings { let mut settings = ParseSettings {
level: 0, level: 0,