mirror of
https://github.com/rust-lang/rust.git
synced 2025-05-14 02:49:40 +00:00
![]() When a macro is used in the trailing expression position of a block (e.g. `fn foo() { my_macro!() }`), we currently parse it as an expression, rather than a statement. As a result, we ended up using the `NodeId` of the containing statement as our `lint_node_id`, even though we don't normally do this for macro calls. If such a macro expands to an expression with a `#[cfg]` attribute, then the trailing statement can get removed entirely. This lead to an ICE, since we were usng the `NodeId` of the expression to emit a lint. Ths commit makes us skip updating `lint_node_id` when handling a macro in trailing expression position. This will cause us to lint at the closest parent of the macro call. |
||
---|---|---|
.. | ||
mbe | ||
mut_visit | ||
parse | ||
tokenstream | ||
base.rs | ||
build.rs | ||
config.rs | ||
expand.rs | ||
lib.rs | ||
mbe.rs | ||
module.rs | ||
placeholders.rs | ||
proc_macro_server.rs | ||
proc_macro.rs | ||
tests.rs |