about summary refs log tree commit diff
diff options
context:
space:
mode:
authordswij <dharmasw@outlook.com>2025-07-19 06:36:44 +0000
committerGitHub <noreply@github.com>2025-07-19 06:36:44 +0000
commit5acb1d432a4be79fdbc8eb299300e6d2ac58631e (patch)
tree594be8ceb3e3f7f5923be6fda0832dcfb9aaf25a
parentae8ff77d00f04cee9512c5b7d0bce7d61976bfaa (diff)
parent1df3b96e8b9263802a72268463ca5350aa7a7013 (diff)
downloadrust-5acb1d432a4be79fdbc8eb299300e6d2ac58631e.tar.gz
rust-5acb1d432a4be79fdbc8eb299300e6d2ac58631e.zip
Fix `empty_with_brackets` span handling (#15311)
This is blocking rust-lang/rust-clippy#14724

changelog: none
-rw-r--r--clippy_lints/src/empty_with_brackets.rs12
1 files changed, 8 insertions, 4 deletions
diff --git a/clippy_lints/src/empty_with_brackets.rs b/clippy_lints/src/empty_with_brackets.rs
index 4414aebbf9a..f2757407ba5 100644
--- a/clippy_lints/src/empty_with_brackets.rs
+++ b/clippy_lints/src/empty_with_brackets.rs
@@ -92,8 +92,10 @@ impl_lint_pass!(EmptyWithBrackets => [EMPTY_STRUCTS_WITH_BRACKETS, EMPTY_ENUM_VA
 
 impl LateLintPass<'_> for EmptyWithBrackets {
     fn check_item(&mut self, cx: &LateContext<'_>, item: &Item<'_>) {
+        // FIXME: handle `struct $name {}`
         if let ItemKind::Struct(ident, _, var_data) = &item.kind
             && !item.span.from_expansion()
+            && !ident.span.from_expansion()
             && has_brackets(var_data)
             && let span_after_ident = item.span.with_lo(ident.span.hi())
             && has_no_fields(cx, var_data, span_after_ident)
@@ -116,10 +118,12 @@ impl LateLintPass<'_> for EmptyWithBrackets {
     }
 
     fn check_variant(&mut self, cx: &LateContext<'_>, variant: &Variant<'_>) {
-        // the span of the parentheses/braces
-        let span_after_ident = variant.span.with_lo(variant.ident.span.hi());
-
-        if has_no_fields(cx, &variant.data, span_after_ident) {
+        // FIXME: handle `$name {}`
+        if !variant.span.from_expansion()
+            && !variant.ident.span.from_expansion()
+            && let span_after_ident = variant.span.with_lo(variant.ident.span.hi())
+            && has_no_fields(cx, &variant.data, span_after_ident)
+        {
             match variant.data {
                 VariantData::Struct { .. } => {
                     // Empty struct variants can be linted immediately