Skip to main content

BodySource

Struct BodySource 

Source
pub struct BodySource(/* private fields */);
Expand description

Where a merged declaration body’s spans index into (#868).

A declaration written in the file being compiled spans into that file’s own NamedSource, which every lowering/type stage already threads as its ambient src — those entries carry BodySource::own. An instantiated include merges a dependency’s declaration bodies into the importer’s IR (merge_dependency); those bodies keep the dependency’s byte offsets, so they carry BodySource::dependency naming the dependency file. Rendering a diagnostic for such a body against the importer’s source produces an out-of-bounds (or simply wrong) label; BodySource::resolve hands back the correct source to anchor against.

Implementations§

Source§

impl BodySource

Source

pub const fn own() -> Self

The declaration belongs to the file being compiled; its span indexes into the ambient src threaded through the pipeline.

Source

pub const fn dependency(src: NamedSource<Arc<String>>) -> Self

The declaration was merged from a dependency body whose spans index into src.

Source

pub fn resolve<'a>( &'a self, default: &'a NamedSource<Arc<String>>, ) -> &'a NamedSource<Arc<String>>

Resolve the source the span should render against, falling back to the ambient default source for declarations native to the compiled file.

Source

pub fn or_dependency(self, dep_src: &NamedSource<Arc<String>>) -> Self

Carry an already-merged provenance forward, or attribute a still-native body to dep_src as it crosses one merge boundary (#868).

A dependency’s own declarations carry BodySource::own until they are merged, at which point their spans become foreign to the importer and must name dep_src. A body already tagged with a deeper dependency source (a transitively-merged include) keeps that attribution.

Trait Implementations§

Source§

impl Clone for BodySource

Source§

fn clone(&self) -> BodySource

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for BodySource

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Default for BodySource

Source§

fn default() -> BodySource

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> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

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> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

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

Source§

type Error = Infallible

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

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

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.