diff options
| author | Aaron Hill <aa1ronham@gmail.com> | 2021-07-14 18:24:12 -0500 |
|---|---|---|
| committer | Aaron Hill <aa1ronham@gmail.com> | 2021-07-17 23:03:56 -0500 |
| commit | ddd544856ecd181ee02490d12f723be549d3ecb3 (patch) | |
| tree | 36bec16c3a8132f356fdb4713a63aac33e0471a9 /src/test/codegen/src-hash-algorithm/src-hash-algorithm-sha1.rs | |
| parent | eb0b95b55a0b38d91e834dd30902b67627ed2eb0 (diff) | |
| download | rust-ddd544856ecd181ee02490d12f723be549d3ecb3.tar.gz rust-ddd544856ecd181ee02490d12f723be549d3ecb3.zip | |
Compute a better `lint_node_id` during expansion
When we need to emit a lint at a macro invocation, we currently use the `NodeId` of its parent definition (e.g. the enclosing function). This means that any `#[allow]` / `#[deny]` attributes placed 'closer' to the macro (e.g. on an enclosing block or statement) will have no effect. This commit computes a better `lint_node_id` in `InvocationCollector`. When we visit/flat_map an AST node, we assign it a `NodeId` (earlier than we normally would), and store than `NodeId` in current `ExpansionData`. When we collect a macro invocation, the current `lint_node_id` gets cloned along with our `ExpansionData`, allowing it to be used if we need to emit a lint later on. This improves the handling of `#[allow]` / `#[deny]` for `SEMICOLON_IN_EXPRESSIONS_FROM_MACROS` and some `asm!`-related lints. The 'legacy derive helpers' lint retains its current behavior (I've inlined the now-removed `lint_node_id` function), since there isn't an `ExpansionData` readily available.
Diffstat (limited to 'src/test/codegen/src-hash-algorithm/src-hash-algorithm-sha1.rs')
0 files changed, 0 insertions, 0 deletions
