assign_id in rustc_expand::expand - Rust
Description: Wraps a call to `walk_*` / `walk_flat_map_*` for an AST node that supports attributes (see the `Annotatable` enum) This method assigns a `NodeId`, and sets that `NodeId` as our current ‘lint node id’. If a macro call is found inside this AST node, we will use this AST node’s `NodeId` to emit lints associated with that macro (allowing `#[allow]` / `#[deny]` to be applied close to the macro invocation).

Skip to main content

## assign_id

# Macro assign_id

Source

    macro_rules! assign_id {
        ($self:ident, $id:expr, $closure:expr) => { ... };
    }

Expand description

Wraps a call to `walk_*` / `walk_flat_map_*` for an AST node that supports attributes (see the `Annotatable` enum) This method assigns a `NodeId`, and sets that `NodeId` as our current ‘lint node id’. If a macro call is found inside this AST node, we will use this AST node’s `NodeId` to emit lints associated with that macro (allowing `#[allow]` / `#[deny]` to be applied close to the macro invocation).

Do not call this for a macro AST node (e.g. `ExprKind::MacCall`) - we cannot emit lints at these AST nodes, since they are removed and replaced with the result of macro expansion.

All other `NodeId`s are assigned by `visit_id`.

- `self` is the ‘self’ parameter for the current method,
- `id` is a mutable reference to the `NodeId` field of the current AST node.
- `closure` is a closure that executes the `walk_*` / `walk_flat_map_*` method for the current AST node.