use crate::const_frozen_string;
use crate::environment::Globals;
use crate::values::FrozenRef;
use crate::values::FrozenValue;
pub(crate) struct ScopeResolverGlobals {
pub(crate) globals: Option<FrozenRef<'static, Globals>>,
}
impl ScopeResolverGlobals {
pub(crate) fn unknown() -> ScopeResolverGlobals {
ScopeResolverGlobals { globals: None }
}
pub(crate) fn get_global(&self, name: &str) -> Option<FrozenValue> {
match self.globals {
Some(globals) => globals.get_frozen(name),
None => Some(const_frozen_string!("unknown-global").to_frozen_value()),
}
}
pub(crate) fn names(&self) -> Option<Vec<String>> {
self.globals
.map(|g| g.names().map(|s| s.as_str().to_owned()).collect())
}
}