Struct AnalyzedResolvedHierarchy
pub struct AnalyzedResolvedHierarchy { /* private fields */ }Description
Completely parsed and globally indexed package hierarchy.
Callers can inspect Self::canonical_declarations and compare package
content at this stage. ValidatedResolvedHierarchy::compile_root becomes
available only after Self::validate_definitions succeeds.
Implementations§
§impl AnalyzedResolvedHierarchy
impl AnalyzedResolvedHierarchy
pub fn property_contract_descriptor(
&self,
name: &str,
) -> Result<PropertyContractDescriptor, Diagnostic>
pub fn property_contract_descriptor( &self, name: &str, ) -> Result<PropertyContractDescriptor, Diagnostic>
Inspect a public property contract in the exact selected root module. No release value, Model occurrence, or substitute material is constructed.
§Errors
Rejects missing/private contracts and unresolved or unsupported full types.
§impl AnalyzedResolvedHierarchy
impl AnalyzedResolvedHierarchy
pub fn value_definition(&self, file: &str, offset: u32) -> Option<(&str, Span)>
pub fn value_definition(&self, file: &str, offset: u32) -> Option<(&str, Span)>
Resolve a value Name or Path in a Model or Component to its declaration: an owned Field, Parameter, or Port, or a public Port of a Model’s direct child. The returned spelling covers the whole expression, so callers must check that the cursor is on its final identifier. Deeper members and nested binder scopes are not resolved. Uses the prepared index; no elaboration runs.
pub fn value_references(&self, declaration: &Span) -> Option<Vec<Span>>
pub fn value_references(&self, declaration: &Span) -> Option<Vec<Span>>
Find the value Name and Path expressions that refer to a declaration,
given by its whole Span: an owned Field, Parameter, or Port, or a direct
child’s public Port, as indexed by the prepared declaration scopes.
Results are sorted by source file and range and exclude nested binders
and deeper or private child members. Several instance spellings can refer
to one declaration, so the results are declaration references, not
instance identities, and do not support rename. An unused declaration
returns Some([]); an unknown span returns None. Callers map each
expression to its final identifier token.
pub fn is_value_reference(&self, file: &str, offset: u32, name: &str) -> bool
pub fn is_value_reference(&self, file: &str, offset: u32, name: &str) -> bool
Whether the position lies in a value Name or Path expression with this
spelling inside a prepared declaration scope, outside unsupported binder
scopes. The check is syntactic and does not resolve the declaration:
callers must still check the cursor token and compare source identities
with symbol_description, because expression ranges can include
parentheses. Declaration names, units, and named activation clauses are
not value expressions. No parsing or elaboration runs.
pub fn symbol_description(
&self,
file: &str,
offset: u32,
name: &str,
declaration: (&str, TextRange),
) -> Option<String>
pub fn symbol_description( &self, file: &str, offset: u32, name: &str, declaration: (&str, TextRange), ) -> Option<String>
Describe a declaration’s known type, role, activation, spatial support, and Model-local periodic schedule, provided the resolved declaration’s source identity matches. Reads the immutable prepared index; no elaboration runs.
pub fn prepare_completion(&mut self, is_cancelled: impl FnMut() -> bool) -> bool
pub fn prepare_completion(&mut self, is_cancelled: impl FnMut() -> bool) -> bool
Prepare the Model and unspecialized Component contracts used for editor assistance, once per analysis. Cancelling discards the partly built index. Existing definition scopes are reused; nothing is executed, solved, or read from packages.
pub fn completion_compatibility(
&self,
file: &str,
offset: u32,
candidates: &[&str],
) -> Option<Vec<Option<(bool, String)>>>
pub fn completion_compatibility( &self, file: &str, offset: u32, candidates: &[&str], ) -> Option<Vec<Option<(bool, String)>>>
Classify visible names using the prepared immutable contract index.
Entries (compatible, explanation) follow candidate order; a None
entry means compatibility is unknown. Unsupported positions return
None. Explanations are display text and may be truncated, which does
not affect the comparison. No parsing or elaboration runs.
§impl AnalyzedResolvedHierarchy
impl AnalyzedResolvedHierarchy
pub fn canonical_declarations(&self) -> &[CanonicalDeclarationIdentity]
pub fn canonical_declarations(&self) -> &[CanonicalDeclarationIdentity]
Compiler-canonical declarations in (namespace, path, kind) order.
pub fn resolved_references(&self) -> impl ExactSizeIterator
pub fn resolved_references(&self) -> impl ExactSizeIterator
Compiler-resolved declaration references in source-file and range order.
§impl AnalyzedResolvedHierarchy
impl AnalyzedResolvedHierarchy
pub const fn root(&self) -> &CompilationNamespaceId
pub const fn root(&self) -> &CompilationNamespaceId
Namespace containing the selected executable Model.
pub fn resolved_source_files(&self) -> impl ExactSizeIterator
pub fn resolved_source_files(&self) -> impl ExactSizeIterator
Package-qualified source labels in resolved-graph order.
pub fn resolved_declarations(&self) -> impl ExactSizeIterator
pub fn resolved_declarations(&self) -> impl ExactSizeIterator
Compiler-resolved top-level declarations and their definition locations.
pub fn dimension_alias(&self, name: &str) -> Result<DimExponents, Diagnostic>
pub fn dimension_alias(&self, name: &str) -> Result<DimExponents, Diagnostic>
Resolve a structural dimension in the root module or one direct public import.
The result is a structural SI dimension, never a nominal declaration identity.
§Errors
Rejects absent, private, wrong-kind, or transitive declaration paths.
pub fn property_bindings(&self) -> impl ExactSizeIterator
pub fn property_bindings(&self) -> impl ExactSizeIterator
Read-only nominal property bindings retained through elaboration.
pub fn validate_definitions(
self,
) -> Result<ValidatedResolvedHierarchy, Vec<Diagnostic>>
pub fn validate_definitions( self, ) -> Result<ValidatedResolvedHierarchy, Vec<Diagnostic>>
Validate every distributable definition before selected-root elaboration.
§Errors
Returns accumulated definition diagnostics. No Model, graph Transaction, occurrence identity, or provenance entry is created.
Trait Implementations§
Auto Trait Implementations§
impl Freeze for AnalyzedResolvedHierarchy
impl RefUnwindSafe for AnalyzedResolvedHierarchy
impl Send for AnalyzedResolvedHierarchy
impl Sync for AnalyzedResolvedHierarchy
impl Unpin for AnalyzedResolvedHierarchy
impl UnsafeUnpin for AnalyzedResolvedHierarchy
impl UnwindSafe for AnalyzedResolvedHierarchy
Blanket Implementations§
Source§impl<T> Any for Twhere
T: 'static + ?Sized,
impl<T> Any for Twhere
T: 'static + ?Sized,
§impl<Src, Scheme> ApproxFrom<Src, Scheme> for Srcwhere
Scheme: ApproxScheme,
impl<Src, Scheme> ApproxFrom<Src, Scheme> for Srcwhere
Scheme: ApproxScheme,
§fn approx_from(src: Src) -> Result<Src, <Src as ApproxFrom<Src, Scheme>>::Err>
fn approx_from(src: Src) -> Result<Src, <Src as ApproxFrom<Src, Scheme>>::Err>
§impl<Dst, Src, Scheme> ApproxInto<Dst, Scheme> for Srcwhere
Dst: ApproxFrom<Src, Scheme>,
Scheme: ApproxScheme,
impl<Dst, Src, Scheme> ApproxInto<Dst, Scheme> for Srcwhere
Dst: ApproxFrom<Src, Scheme>,
Scheme: ApproxScheme,
§type Err = <Dst as ApproxFrom<Src, Scheme>>::Err
type Err = <Dst as ApproxFrom<Src, Scheme>>::Err
§fn approx_into(self) -> Result<Dst, <Src as ApproxInto<Dst, Scheme>>::Err>
fn approx_into(self) -> Result<Dst, <Src as ApproxInto<Dst, Scheme>>::Err>
Source§impl<T> Borrow<T> for Twhere
T: ?Sized,
impl<T> Borrow<T> for Twhere
T: ?Sized,
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§impl<T, Dst> ConvAsUtil<Dst> for T
impl<T, Dst> ConvAsUtil<Dst> for T
§fn approx(self) -> Result<Dst, Self::Err>where
Self: Sized + ApproxInto<Dst>,
fn approx(self) -> Result<Dst, Self::Err>where
Self: Sized + ApproxInto<Dst>,
§impl<T> ConvUtil for T
impl<T> ConvUtil for T
§fn approx_as<Dst>(self) -> Result<Dst, Self::Err>where
Self: Sized + ApproxInto<Dst>,
fn approx_as<Dst>(self) -> Result<Dst, Self::Err>where
Self: Sized + ApproxInto<Dst>,
§fn approx_as_by<Dst, Scheme>(self) -> Result<Dst, Self::Err>where
Self: Sized + ApproxInto<Dst, Scheme>,
Scheme: ApproxScheme,
fn approx_as_by<Dst, Scheme>(self) -> Result<Dst, Self::Err>where
Self: Sized + ApproxInto<Dst, Scheme>,
Scheme: ApproxScheme,
§fn into_as<Dst>(self) -> Dstwhere
Self: Sized + Into<Dst>,
fn into_as<Dst>(self) -> Dstwhere
Self: Sized + Into<Dst>,
§fn try_as<Dst>(self) -> Result<Dst, Self::Err>where
Self: Sized + TryInto<Dst>,
fn try_as<Dst>(self) -> Result<Dst, Self::Err>where
Self: Sized + TryInto<Dst>,
§impl<T> DistributionExt for Twhere
T: ?Sized,
impl<T> DistributionExt for Twhere
T: ?Sized,
fn rand<T>(&self, rng: &mut (impl Rng + ?Sized)) -> Twhere
Self: Distribution<T>,
Source§impl<T> From<T> for T
impl<T> From<T> for T
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T, U> Into<U> for Twhere
U: From<T>,
impl<T, U> Into<U> for Twhere
U: From<T>,
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>where
F: FnOnce(&Self) -> bool,
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>where
F: FnOnce(&Self) -> bool,
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more§impl<T> Pointable for T
impl<T> Pointable for T
Source§impl<T> Same for T
impl<T> Same for T
§impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
§fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
self from the equivalent element of its
superset. Read more§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
self is actually part of its subset T (and can be converted to it).§fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
self.to_subset but without any property checks. Always succeeds.§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
self to the equivalent element of its superset.