Skip to main content

ShapeTable

Struct ShapeTable 

Source
pub struct ShapeTable { /* private fields */ }
Expand description

declared_shapes’ referrer-scoped lookup table — see that function’s doc for the coexistence story this exists to resolve correctly.

Implementations§

Source§

impl ShapeTable

Source

pub fn len(&self) -> usize

Number of declared shapes in the project — referrer-free, since a count needs no disambiguation.

Source

pub fn is_empty(&self) -> bool

Whether the project declares no STRUCT shapes at all.

Source

pub fn get_by_def(&self, id: DefinitionId) -> Option<&ShapeInfo>

Resolve a shape already pinned to an exact DefinitionId — no referrer ambiguity possible, since the identity was already resolved once, correctly, by whatever recorded it (e.g. a construction literal’s RefKind::Struct resolution, resolve::resolve_struct_ref).

Source

pub fn resolve( &self, name: &str, scope: &ImportScope, index: &SymbolIndex, ) -> Option<&ShapeInfo>

Scope-aware lookup (issue #2241, corrected per #2245/#2246’s peer-root ruling — docs/decision-log.md, 2026-08-04): when more than one declared STRUCT shares name, resolve through the same Candidacy-based module scoping every other symbol kind uses — [crate::resolve::lookup_by_name], the exact function resolve::resolve_struct_ref already calls for SymbolKind::Struct. This used to hand-roll its own find(info.file == referrer) .or_else(find(!is_reserved_root_module)) fallback — a bolt-on std gate the ruling calls out by name as one of the five symptom gates to unwind, not a second, diverging implementation of the same policy. Returns None when name names no declared STRUCT at all, or [crate::resolve::lookup_by_name] itself resolves to none (e.g. every candidate sharing the name is std-declared and out of scope).

Trait Implementations§

Source§

impl Default for ShapeTable

Source§

fn default() -> ShapeTable

Returns the “default value” for a type. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = !

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, !>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more