Streamline ScriptFnDef.

This commit is contained in:
Stephen Chung 2020-11-04 12:34:54 +08:00
parent f75942715d
commit c287a61b93
3 changed files with 20 additions and 9 deletions

View File

@ -83,6 +83,10 @@ impl FnAccess {
/// This type is volatile and may change. /// This type is volatile and may change.
#[derive(Debug, Clone)] #[derive(Debug, Clone)]
pub struct ScriptFnDef { pub struct ScriptFnDef {
/// Function body.
pub body: Stmt,
/// Encapsulated running environment, if any.
pub lib: Option<Shared<Module>>,
/// Function name. /// Function name.
pub name: ImmutableString, pub name: ImmutableString,
/// Function access mode. /// Function access mode.
@ -92,12 +96,6 @@ pub struct ScriptFnDef {
/// Access to external variables. /// Access to external variables.
#[cfg(not(feature = "no_closure"))] #[cfg(not(feature = "no_closure"))]
pub externals: HashSet<String>, pub externals: HashSet<String>,
/// Function body.
pub body: Stmt,
/// Position of the function definition.
pub pos: Position,
/// Encapsulated running environment, if any.
pub lib: Option<Shared<Module>>,
} }
impl fmt::Display for ScriptFnDef { impl fmt::Display for ScriptFnDef {
@ -1240,3 +1238,19 @@ impl Expr {
} }
} }
} }
#[cfg(test)]
mod tests {
use super::*;
/// This test is to make sure no code changes increase the sizes of critical data structures.
#[test]
fn check_struct_sizes() {
use std::mem::size_of;
assert_eq!(size_of::<Dynamic>(), 16);
assert_eq!(size_of::<Option<Dynamic>>(), 16);
assert_eq!(size_of::<Expr>(), 16);
assert_eq!(size_of::<Stmt>(), 32);
}
}

View File

@ -866,7 +866,6 @@ pub fn optimize_into_ast(
params: fn_def.params.clone(), params: fn_def.params.clone(),
#[cfg(not(feature = "no_closure"))] #[cfg(not(feature = "no_closure"))]
externals: fn_def.externals.clone(), externals: fn_def.externals.clone(),
pos: fn_def.pos,
lib: None, lib: None,
} }
.into() .into()

View File

@ -2485,7 +2485,6 @@ fn parse_fn(
#[cfg(not(feature = "no_closure"))] #[cfg(not(feature = "no_closure"))]
externals, externals,
body, body,
pos: settings.pos,
lib: None, lib: None,
}) })
} }
@ -2655,7 +2654,6 @@ fn parse_anon_fn(
#[cfg(not(feature = "no_closure"))] #[cfg(not(feature = "no_closure"))]
externals: Default::default(), externals: Default::default(),
body, body,
pos: settings.pos,
lib: None, lib: None,
}; };