Trait swc_common::comments::Comments
source · [−]pub trait Comments {
Show 15 methods
fn add_leading(&self, pos: BytePos, cmt: Comment);
fn add_leading_comments(&self, pos: BytePos, comments: Vec<Comment>);
fn has_leading(&self, pos: BytePos) -> bool;
fn move_leading(&self, from: BytePos, to: BytePos);
fn take_leading(&self, pos: BytePos) -> Option<Vec<Comment>>;
fn get_leading(&self, pos: BytePos) -> Option<Vec<Comment>>;
fn add_trailing(&self, pos: BytePos, cmt: Comment);
fn add_trailing_comments(&self, pos: BytePos, comments: Vec<Comment>);
fn has_trailing(&self, pos: BytePos) -> bool;
fn move_trailing(&self, from: BytePos, to: BytePos);
fn take_trailing(&self, pos: BytePos) -> Option<Vec<Comment>>;
fn get_trailing(&self, pos: BytePos) -> Option<Vec<Comment>>;
fn add_pure_comment(&self, pos: BytePos);
fn with_leading<F, Ret>(&self, pos: BytePos, f: F) -> Ret
where
Self: Sized,
F: FnOnce(&[Comment]) -> Ret,
{ ... }
fn with_trailing<F, Ret>(&self, pos: BytePos, f: F) -> Ret
where
Self: Sized,
F: FnOnce(&[Comment]) -> Ret,
{ ... }
}
Expand description
Stores comment.
Implementation notes
Methods uses (&self)
instead of (&mut self)
for some reasons. Firstly,
this is similar to the previous api. Secondly, typescript parser requires
backtracking, which requires Clone. To avoid cloning large vectors, we
must use Rc<RefCell(&self)
allows multi-threaded
use-cases such as swc itself.
We use Option instead of no-op Comments implementation to avoid allocation unless required.
Required Methods
fn add_leading(&self, pos: BytePos, cmt: Comment)
fn add_leading_comments(&self, pos: BytePos, comments: Vec<Comment>)
fn has_leading(&self, pos: BytePos) -> bool
fn move_leading(&self, from: BytePos, to: BytePos)
fn add_trailing(&self, pos: BytePos, cmt: Comment)
fn add_trailing_comments(&self, pos: BytePos, comments: Vec<Comment>)
fn has_trailing(&self, pos: BytePos) -> bool
fn move_trailing(&self, from: BytePos, to: BytePos)
fn add_pure_comment(&self, pos: BytePos)
Provided Methods
Implementations on Foreign Types
sourceimpl<T> Comments for &Twhere
T: ?Sized + Comments,
impl<T> Comments for &Twhere
T: ?Sized + Comments,
fn add_leading(&self, pos: BytePos, cmt: Comment)
fn add_leading_comments(&self, pos: BytePos, comments: Vec<Comment>)
fn has_leading(&self, pos: BytePos) -> bool
fn move_leading(&self, from: BytePos, to: BytePos)
fn take_leading(&self, pos: BytePos) -> Option<Vec<Comment>>
fn get_leading(&self, pos: BytePos) -> Option<Vec<Comment>>
fn add_trailing(&self, pos: BytePos, cmt: Comment)
fn add_trailing_comments(&self, pos: BytePos, comments: Vec<Comment>)
fn has_trailing(&self, pos: BytePos) -> bool
fn move_trailing(&self, from: BytePos, to: BytePos)
fn take_trailing(&self, pos: BytePos) -> Option<Vec<Comment>>
fn get_trailing(&self, pos: BytePos) -> Option<Vec<Comment>>
fn add_pure_comment(&self, pos: BytePos)
sourceimpl<T> Comments for Rc<T>where
T: ?Sized + Comments,
impl<T> Comments for Rc<T>where
T: ?Sized + Comments,
fn add_leading(&self, pos: BytePos, cmt: Comment)
fn add_leading_comments(&self, pos: BytePos, comments: Vec<Comment>)
fn has_leading(&self, pos: BytePos) -> bool
fn move_leading(&self, from: BytePos, to: BytePos)
fn take_leading(&self, pos: BytePos) -> Option<Vec<Comment>>
fn get_leading(&self, pos: BytePos) -> Option<Vec<Comment>>
fn add_trailing(&self, pos: BytePos, cmt: Comment)
fn add_trailing_comments(&self, pos: BytePos, comments: Vec<Comment>)
fn has_trailing(&self, pos: BytePos) -> bool
fn move_trailing(&self, from: BytePos, to: BytePos)
fn take_trailing(&self, pos: BytePos) -> Option<Vec<Comment>>
fn get_trailing(&self, pos: BytePos) -> Option<Vec<Comment>>
fn add_pure_comment(&self, pos: BytePos)
sourceimpl<T> Comments for Box<T>where
T: ?Sized + Comments,
impl<T> Comments for Box<T>where
T: ?Sized + Comments,
fn add_leading(&self, pos: BytePos, cmt: Comment)
fn add_leading_comments(&self, pos: BytePos, comments: Vec<Comment>)
fn has_leading(&self, pos: BytePos) -> bool
fn move_leading(&self, from: BytePos, to: BytePos)
fn take_leading(&self, pos: BytePos) -> Option<Vec<Comment>>
fn get_leading(&self, pos: BytePos) -> Option<Vec<Comment>>
fn add_trailing(&self, pos: BytePos, cmt: Comment)
fn add_trailing_comments(&self, pos: BytePos, comments: Vec<Comment>)
fn has_trailing(&self, pos: BytePos) -> bool
fn move_trailing(&self, from: BytePos, to: BytePos)
fn take_trailing(&self, pos: BytePos) -> Option<Vec<Comment>>
fn get_trailing(&self, pos: BytePos) -> Option<Vec<Comment>>
fn add_pure_comment(&self, pos: BytePos)
sourceimpl<C> Comments for Option<C>where
C: Comments,
impl<C> Comments for Option<C>where
C: Comments,
This implementation behaves like NoopComments if it’s None.