Defines a new user-defined `vref` callable with `md` metadata.
(
&mut self,
vref: &VarRef,
md: Rc<CallableMetadata>,
)
| 198 | |
| 199 | /// Defines a new user-defined `vref` callable with `md` metadata. |
| 200 | pub(crate) fn declare_user_callable( |
| 201 | &mut self, |
| 202 | vref: &VarRef, |
| 203 | md: Rc<CallableMetadata>, |
| 204 | ) -> Result<()> { |
| 205 | let key = SymbolKey::from(&vref.name); |
| 206 | if self.globals.get(&key).is_some() { |
| 207 | return Err(Error::AlreadyDefined(vref.clone())); |
| 208 | } |
| 209 | if let Some(previous_md) = self.user_callables.insert(key.clone(), md.clone()) |
| 210 | && previous_md != md |
| 211 | { |
| 212 | return Err(Error::AlreadyDefined(vref.clone())); |
| 213 | } |
| 214 | Ok(()) |
| 215 | } |
| 216 | |
| 217 | /// Gets a callable by its name `key`. |
| 218 | pub(crate) fn get_callable(&self, key: &SymbolKey) -> Option<Rc<CallableMetadata>> { |