Struct ra_ap_hir_expand::ExpansionInfo
source · [−]pub struct ExpansionInfo { /* private fields */ }
Expand description
ExpansionInfo mainly describes how to map text range between src and expanded macro
Implementations
sourceimpl ExpansionInfo
impl ExpansionInfo
pub fn expanded(&self) -> InFile<SyntaxNode>
pub fn call_node(&self) -> Option<InFile<SyntaxNode>>
sourcepub fn map_token_down(
&self,
db: &dyn AstDatabase,
item: Option<Item>,
token: InFile<&SyntaxToken>
) -> Option<impl Iterator<Item = InFile<SyntaxToken>> + '_>
pub fn map_token_down(
&self,
db: &dyn AstDatabase,
item: Option<Item>,
token: InFile<&SyntaxToken>
) -> Option<impl Iterator<Item = InFile<SyntaxToken>> + '_>
Map a token down from macro input into the macro expansion.
The inner workings of this function differ slightly depending on the type of macro we are dealing with:
- declarative: For declarative macros, we need to accommodate for the macro definition site(which acts as a second unchanging input) , as tokens can mapped in and out of it. To do this we shift all ids in the expansion by the maximum id of the definition site giving us an easy way to map all the tokens.
- attribute: Attributes have two different inputs, the input tokentree in the attribute node and the item the attribute is annotating. Similarly as for declarative macros we need to do a shift here as well. Currently this is done by shifting the attribute input by the maximum id of the item.
- function-like and derives: Both of these only have one simple call site input so no special handling is required here.
sourcepub fn map_token_up(
&self,
db: &dyn AstDatabase,
token: InFile<&SyntaxToken>
) -> Option<(InFile<SyntaxToken>, Origin)>
pub fn map_token_up(
&self,
db: &dyn AstDatabase,
token: InFile<&SyntaxToken>
) -> Option<(InFile<SyntaxToken>, Origin)>
Map a token up out of the expansion it resides in into the arguments of the macro call of the expansion.
Trait Implementations
sourceimpl Clone for ExpansionInfo
impl Clone for ExpansionInfo
sourcefn clone(&self) -> ExpansionInfo
fn clone(&self) -> ExpansionInfo
Returns a copy of the value. Read more
1.0.0 · sourcefn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from source
. Read more
sourceimpl Debug for ExpansionInfo
impl Debug for ExpansionInfo
sourceimpl PartialEq<ExpansionInfo> for ExpansionInfo
impl PartialEq<ExpansionInfo> for ExpansionInfo
sourcefn eq(&self, other: &ExpansionInfo) -> bool
fn eq(&self, other: &ExpansionInfo) -> bool
This method tests for self
and other
values to be equal, and is used
by ==
. Read more
sourcefn ne(&self, other: &ExpansionInfo) -> bool
fn ne(&self, other: &ExpansionInfo) -> bool
This method tests for !=
.
impl Eq for ExpansionInfo
impl StructuralEq for ExpansionInfo
impl StructuralPartialEq for ExpansionInfo
Auto Trait Implementations
impl !RefUnwindSafe for ExpansionInfo
impl !Send for ExpansionInfo
impl !Sync for ExpansionInfo
impl Unpin for ExpansionInfo
impl !UnwindSafe for ExpansionInfo
Blanket Implementations
sourceimpl<T> BorrowMut<T> for T where
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
const: unstable · sourcefn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
sourceimpl<Q, K> Equivalent<K> for Q where
Q: Eq + ?Sized,
K: Borrow<Q> + ?Sized,
impl<Q, K> Equivalent<K> for Q where
Q: Eq + ?Sized,
K: Borrow<Q> + ?Sized,
sourcefn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
Compare self to key
and return true
if they are equal.
sourceimpl<T> Instrument for T
impl<T> Instrument for T
sourcefn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
sourcefn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
sourceimpl<T> ToOwned for T where
T: Clone,
impl<T> ToOwned for T where
T: Clone,
type Owned = T
type Owned = T
The resulting type after obtaining ownership.
sourcefn clone_into(&self, target: &mut T)
fn clone_into(&self, target: &mut T)
toowned_clone_into
)Uses borrowed data to replace owned data, usually by cloning. Read more
sourceimpl<T> WithSubscriber for T
impl<T> WithSubscriber for T
sourcefn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self> where
S: Into<Dispatch>,
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
sourcefn with_current_subscriber(self) -> WithDispatch<Self>
fn with_current_subscriber(self) -> WithDispatch<Self>
Attaches the current default Subscriber
to this type, returning a
WithDispatch
wrapper. Read more