Skip to main content

Suggestion

Struct Suggestion 

Source
pub struct Suggestion {
    pub span: SourceSpan,
    pub replacement: String,
}
Expand description

A machine-actionable fix for a Diagnostic.

A Suggestion says “replace the bytes at this SourceSpan with this text” — it is structured data a tool can apply automatically, as opposed to the prose advice carried by DiagnosticAnnotation::Help. Backends consume it without re-parsing: the CLI can print a fix-it diff and an LSP can surface it as a code action keyed on the same span.

Two edge cases fall out of the replace-the-span model and are intentional:

  • an empty replacement deletes the bytes covered by span;
  • a zero-length span (start == end) inserts replacement at that offset without removing anything.

§Examples

use std::path::PathBuf;

use mos_core::{SourceSpan, Suggestion};

let span = SourceSpan::new(PathBuf::from("main.mos"), 4, 10);
let fix = Suggestion::new(span, "@intro");

assert_eq!(fix.replacement, "@intro");

Fields§

§span: SourceSpan

The source range the fix replaces. A zero-length span (start == end) marks a pure insertion point.

§replacement: String

The text to substitute for the bytes covered by span. An empty string deletes that range.

Implementations§

Source§

impl Suggestion

Source

pub fn new(span: SourceSpan, replacement: impl Into<String>) -> Self

Construct a suggestion replacing span with replacement.

§Examples
use std::path::PathBuf;

use mos_core::{SourceSpan, Suggestion};

let span = SourceSpan::new(PathBuf::from("main.mos"), 0, 3);
let fix = Suggestion::new(span, "set".to_owned());

assert_eq!(fix.span.start, 0);

Trait Implementations§

Source§

impl Clone for Suggestion

Source§

fn clone(&self) -> Suggestion

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 Suggestion

Source§

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

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

impl PartialEq for Suggestion

Source§

fn eq(&self, other: &Suggestion) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 (const: unstable) · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl Eq for Suggestion

Source§

impl StructuralPartialEq for Suggestion

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.