Handle more data types in Expr::from_dynamic.
This commit is contained in:
parent
cb312539fb
commit
7c93622b57
18
src/ast.rs
18
src/ast.rs
@ -221,7 +221,7 @@ impl AST {
|
|||||||
) -> Self {
|
) -> Self {
|
||||||
Self {
|
Self {
|
||||||
source: None,
|
source: None,
|
||||||
body: StmtBlock::new(statements.into_iter().collect(), Position::NONE),
|
body: StmtBlock::new(statements, Position::NONE),
|
||||||
functions: functions.into(),
|
functions: functions.into(),
|
||||||
#[cfg(not(feature = "no_module"))]
|
#[cfg(not(feature = "no_module"))]
|
||||||
resolver: None,
|
resolver: None,
|
||||||
@ -237,7 +237,7 @@ impl AST {
|
|||||||
) -> Self {
|
) -> Self {
|
||||||
Self {
|
Self {
|
||||||
source: Some(source.into()),
|
source: Some(source.into()),
|
||||||
body: StmtBlock::new(statements.into_iter().collect(), Position::NONE),
|
body: StmtBlock::new(statements, Position::NONE),
|
||||||
functions: functions.into(),
|
functions: functions.into(),
|
||||||
#[cfg(not(feature = "no_module"))]
|
#[cfg(not(feature = "no_module"))]
|
||||||
resolver: None,
|
resolver: None,
|
||||||
@ -889,7 +889,8 @@ pub struct StmtBlock(StaticVec<Stmt>, Position);
|
|||||||
impl StmtBlock {
|
impl StmtBlock {
|
||||||
/// Create a new [`StmtBlock`].
|
/// Create a new [`StmtBlock`].
|
||||||
#[must_use]
|
#[must_use]
|
||||||
pub fn new(mut statements: StaticVec<Stmt>, pos: Position) -> Self {
|
pub fn new(statements: impl IntoIterator<Item = Stmt>, pos: Position) -> Self {
|
||||||
|
let mut statements: StaticVec<_> = statements.into_iter().collect();
|
||||||
statements.shrink_to_fit();
|
statements.shrink_to_fit();
|
||||||
Self(statements, pos)
|
Self(statements, pos)
|
||||||
}
|
}
|
||||||
@ -1685,7 +1686,7 @@ impl FloatWrapper<FLOAT> {
|
|||||||
/// Create a new [`FloatWrapper`].
|
/// Create a new [`FloatWrapper`].
|
||||||
#[inline(always)]
|
#[inline(always)]
|
||||||
#[must_use]
|
#[must_use]
|
||||||
pub(crate) const fn const_new(value: FLOAT) -> Self {
|
pub const fn new_const(value: FLOAT) -> Self {
|
||||||
Self(value)
|
Self(value)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1910,9 +1911,18 @@ impl Expr {
|
|||||||
Union::Char(c, _, _) => Self::CharConstant(c, pos),
|
Union::Char(c, _, _) => Self::CharConstant(c, pos),
|
||||||
Union::Int(i, _, _) => Self::IntegerConstant(i, pos),
|
Union::Int(i, _, _) => Self::IntegerConstant(i, pos),
|
||||||
|
|
||||||
|
#[cfg(feature = "decimal")]
|
||||||
|
Union::Decimal(value, _, _) => Self::DynamicConstant(Box::new((*value).into()), pos),
|
||||||
|
|
||||||
#[cfg(not(feature = "no_float"))]
|
#[cfg(not(feature = "no_float"))]
|
||||||
Union::Float(f, _, _) => Self::FloatConstant(f, pos),
|
Union::Float(f, _, _) => Self::FloatConstant(f, pos),
|
||||||
|
|
||||||
|
#[cfg(not(feature = "no_index"))]
|
||||||
|
Union::Array(a, _, _) => Self::DynamicConstant(Box::new((*a).into()), pos),
|
||||||
|
|
||||||
|
#[cfg(not(feature = "no_object"))]
|
||||||
|
Union::Map(m, _, _) => Self::DynamicConstant(Box::new((*m).into()), pos),
|
||||||
|
|
||||||
_ => Self::DynamicConstant(value.into(), pos),
|
_ => Self::DynamicConstant(value.into(), pos),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user