Struct swc_ecma_ast::Ident [−][src]
Expand description
A complete identifier with span.
Identifier of swc consists of two parts. The first one is symbol, which is stored using an interned string, JsWord . The second one is SyntaxContext, which can be used to distinguish identifier with same symbol.
Let me explain this with an example.
let a = 5
{
let a = 3;
}
In the code above, there are two variables with the symbol a.
Other compilers typically uses type like Scope
, and store them nested, but
in rust, type like Scope
requires [Arc<Mutexfoo#1
For the example above, after applying resolver pass, it becomes.
let a#1 = 5
{
let a#2 = 3;
}
Thanks to the tag
we attached, we can now distinguish them.
This can be used to store all variables in a module to single hash map.
Fields
span: Span
sym: JsWord
optional: bool
TypeScript only. Used in case of an optional parameter.
Implementations
Trait Implementations
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error> where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error> where
__D: Deserializer<'de>,
Deserialize this value from the given Serde deserializer. Read more
Auto Trait Implementations
impl RefUnwindSafe for Ident
impl UnwindSafe for Ident
Blanket Implementations
Mutably borrows from an owned value. Read more
Attaches the provided Subscriber
to this type, returning a
WithDispatch
wrapper. Read more
Attaches the current default Subscriber
to this type, returning a
WithDispatch
wrapper. Read more