diff options
| author | Aaron Hill <aa1ronham@gmail.com> | 2021-09-15 19:32:03 -0500 |
|---|---|---|
| committer | Aaron Hill <aa1ronham@gmail.com> | 2021-09-15 19:36:28 -0500 |
| commit | bd4c9676c76a1df1ea14c04fa0150e4048d5ba77 (patch) | |
| tree | 45c728d240f87e915b5e0fbfa771bc890fbbc074 /compiler/rustc_llvm/llvm-wrapper/PassWrapper.cpp | |
| parent | 2c7bc5e33c25e29058cbafefe680da8d5e9220e9 (diff) | |
| download | rust-bd4c9676c76a1df1ea14c04fa0150e4048d5ba77.tar.gz rust-bd4c9676c76a1df1ea14c04fa0150e4048d5ba77.zip | |
Fix linting when trailing macro expands to a trailing semi
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.
Diffstat (limited to 'compiler/rustc_llvm/llvm-wrapper/PassWrapper.cpp')
0 files changed, 0 insertions, 0 deletions
