pub struct Ident<'a> {
    pub inner: &'a Ident,
    /* private fields */
}
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<Mutex>] so swc uses different approach. Instead of passing scopes, swc annotates two variables with different tag, which is named [SyntaxContext]. The notation for the syntax context is #n where n is a number. e.g. foo#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.

([JsWord], [SyntaxContext])

See [Id], which is a type alias for this.

This can be used to store all variables in a module to single hash map.

Comparison

While comparing two identifiers, you can use .to_id().

HashMap

There’s a type named [Id] which only contains minimal information to distinguish identifiers.

Fields

inner: &'a Ident

Implementations

TypeScript only. Used in case of an optional parameter.

Trait Implementations

Returns a copy of the value. Read more

Performs copy-assignment from source. Read more

Converts to this type from the input type.

Gets the previous siblings in the order they appear in the file.

Gets the next siblings in the order they appear in the file.

Gets the root node.

Gets the root node if the view was created from a Module; otherwise panics.

Gets the root node if the view was created from a Script; otherwise panics.

Gets the previous tokens in the order they appear in the file.

Gets the next tokens in the order they appear in the file.

Get span of self.

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

Immutably borrows from an owned value. Read more

Mutably borrows from an owned value. Read more

Returns the argument unchanged.

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more

Instruments this type with the current Span, returning an Instrumented wrapper. Read more

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

The resulting type after obtaining ownership.

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

🔬 This is a nightly-only experimental API. (toowned_clone_into)

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

The type returned in the event of a conversion error.

Performs the conversion.

The type returned in the event of a conversion error.

Performs the conversion.

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