pub struct Scope {
pub kind: ScopeKind,
pub parent: Option<ScopeId>,
/* private fields */
}Expand description
Single scope: variables and optional main-only data.
Fields§
§kind: ScopeKind§parent: Option<ScopeId>Implementations§
Source§impl Scope
impl Scope
pub fn new_main() -> Self
pub fn new_child(kind: ScopeKind, parent: ScopeId) -> Self
pub fn add_variable(&mut self, info: VariableInfo)
pub fn has_variable(&self, name: &str) -> bool
Sourcepub fn variable_names(&self) -> Vec<String>
pub fn variable_names(&self) -> Vec<String>
Variable names in this scope (for LSP completion).
Sourcepub fn global_names(&self) -> Option<Vec<String>>
pub fn global_names(&self) -> Option<Vec<String>>
Global names in this scope (main scope only; for LSP completion).
Sourcepub fn function_names(&self) -> Option<Vec<String>>
pub fn function_names(&self) -> Option<Vec<String>>
Function names in this scope (main scope only; for LSP completion).
Sourcepub fn class_names(&self) -> Option<Vec<String>>
pub fn class_names(&self) -> Option<Vec<String>>
Class names in this scope (main scope only; for LSP completion).
Sourcepub fn add_global(&mut self, name: String)
pub fn add_global(&mut self, name: String)
Add a global name (main scope only).
Sourcepub fn add_function(
&mut self,
name: String,
min_arity: usize,
max_arity: usize,
span: Span,
)
pub fn add_function( &mut self, name: String, min_arity: usize, max_arity: usize, span: Span, )
Add a user function (main scope only). Supports overloads and default params via (min_arity, max_arity).
Sourcepub fn add_function_with_types(
&mut self,
name: String,
min_arity: usize,
max_arity: usize,
span: Span,
param_types: Option<Vec<Type>>,
return_type: Option<Type>,
)
pub fn add_function_with_types( &mut self, name: String, min_arity: usize, max_arity: usize, span: Span, param_types: Option<Vec<Type>>, return_type: Option<Type>, )
Add a user function with optional param/return types (main scope only).
Sourcepub fn add_class(&mut self, name: String, span: Span)
pub fn add_class(&mut self, name: String, span: Span)
Add a class name (main scope only). Keeps first declaration; span is for duplicate reporting. A non-empty span (e.g. from the document) overwrites an empty one (e.g. from builtins/signatures) so that LSP rename/definition use the real location.
pub fn has_global(&self, name: &str) -> bool
Sourcepub fn function_accepts_arity(&self, name: &str, arity: usize) -> bool
pub fn function_accepts_arity(&self, name: &str, arity: usize) -> bool
True if this scope has a function with the given name that accepts the given arity.
Sourcepub fn get_function_span(&self, name: &str) -> Option<Span>
pub fn get_function_span(&self, name: &str) -> Option<Span>
Span of the first overload for a function name (for go-to-def).
Sourcepub fn get_function_span_for_arity_range(
&self,
name: &str,
min_arity: usize,
max_arity: usize,
) -> Option<Span>
pub fn get_function_span_for_arity_range( &self, name: &str, min_arity: usize, max_arity: usize, ) -> Option<Span>
Span of an existing overload with the same (min_arity, max_arity), if any (for duplicate same-signature).
Sourcepub fn get_function_arity(&self, name: &str) -> Option<usize>
pub fn get_function_arity(&self, name: &str) -> Option<usize>
Legacy: single arity (for resolve symbol). Returns first range’s max if any.
Sourcepub fn get_function_type(
&self,
name: &str,
arity: usize,
) -> Option<(Vec<Type>, Type)>
pub fn get_function_type( &self, name: &str, arity: usize, ) -> Option<(Vec<Type>, Type)>
Get param types and return type for a function call that passes arity arguments, if known.
Sourcepub fn get_function_type_as_value(&self, name: &str) -> Option<Type>
pub fn get_function_type_as_value(&self, name: &str) -> Option<Type>
Get the type of a function when used as a value (e.g. foo without calling).
For a single overload with optional params (min_arity < max_arity), returns a union of
function types per arity, e.g. getMP(entity?) -> integer gives
Function< => integer> | Function<integer => integer>.
Sourcepub fn add_global_with_type(&mut self, name: String, ty: Type)
pub fn add_global_with_type(&mut self, name: String, ty: Type)
Add a global name with type (main scope only). Used when seeding from .sig.
Sourcepub fn get_global_type(&self, name: &str) -> Option<Type>
pub fn get_global_type(&self, name: &str) -> Option<Type>
Get the type of a global, if known (from .sig).
pub fn has_class(&self, name: &str) -> bool
Sourcepub fn get_class_first_span(&self, name: &str) -> Option<Span>
pub fn get_class_first_span(&self, name: &str) -> Option<Span>
First declaration span for a class in this scope (for duplicate diagnostic).