pub struct Scope {
pub import_stack: Vec<String>,
pub env: Rc<Val>,
pub curr_val: Option<Rc<Val>>,
pub build_output: ValueMap,
pub search_curr_val: bool,
pub strict: bool,
}
Expand description
Defines a scope for execution in ucg.
Scopes in ucg are defined by the currently executing file and the complex data types in that file. (Tuple, List, Modules, and the left operands for dot selectors).
UCG Scopes do not descend up into their parent scopes so we do not maintain a stack for those.
Fields§
§import_stack: Vec<String>
§env: Rc<Val>
§curr_val: Option<Rc<Val>>
§build_output: ValueMap
§search_curr_val: bool
§strict: bool
Implementations§
Source§impl Scope
impl Scope
pub fn new(env: Rc<Val>) -> Self
pub fn use_strict(self) -> Self
pub fn use_curr_val(self) -> Self
Sourcepub fn spawn_child(&self) -> Self
pub fn spawn_child(&self) -> Self
Spawn a child scope based on the current scope but without the current val set.
pub fn spawn_clean(&self) -> Self
Sourcepub fn push_import<S: Into<String>>(&mut self, path: S)
pub fn push_import<S: Into<String>>(&mut self, path: S)
Push an import onto the import stack.
pub fn prepend_import_stack(&mut self, imports: &Vec<String>)
Sourcepub fn set_curr_val(self, val: Rc<Val>) -> Self
pub fn set_curr_val(self, val: Rc<Val>) -> Self
Set the current value for our execution context.
Sourcepub fn lookup_idx(
&self,
pos: &Position,
idx: &Val,
) -> Result<Rc<Val>, Box<dyn Error>>
pub fn lookup_idx( &self, pos: &Position, idx: &Val, ) -> Result<Rc<Val>, Box<dyn Error>>
Lookup up a list index in the current value
Sourcepub fn lookup_sym(
&self,
sym: &PositionedItem<String>,
is_symbol: bool,
) -> Option<Rc<Val>>
pub fn lookup_sym( &self, sym: &PositionedItem<String>, is_symbol: bool, ) -> Option<Rc<Val>>
Lookup a symbol in the current execution context.
The lookup rules are simple.
env
is always an environment variable lookup.self
is always the current value. This symbol is only valid when the current value is a tuple.- everything else is looked up in the currently accumulated build output for this execution context.
Trait Implementations§
impl StructuralPartialEq for Scope
Auto Trait Implementations§
impl Freeze for Scope
impl RefUnwindSafe for Scope
impl !Send for Scope
impl !Sync for Scope
impl Unpin for Scope
impl UnwindSafe for Scope
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more