about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--compiler/rustc_lint/src/unused.rs5
-rw-r--r--src/test/ui/lint/issue-104392.rs11
-rw-r--r--src/test/ui/lint/issue-104392.stderr27
3 files changed, 43 insertions, 0 deletions
diff --git a/compiler/rustc_lint/src/unused.rs b/compiler/rustc_lint/src/unused.rs
index 766194b15c8..33580c2e521 100644
--- a/compiler/rustc_lint/src/unused.rs
+++ b/compiler/rustc_lint/src/unused.rs
@@ -518,6 +518,11 @@ trait UnusedDelimLint {
     ) {
         let spans = match value.kind {
             ast::ExprKind::Block(ref block, None) if block.stmts.len() == 1 => {
+                if let StmtKind::Expr(expr) = &block.stmts[0].kind
+                    && let ExprKind::Err = expr.kind
+                {
+                    return
+                }
                 if let Some(span) = block.stmts[0].span.find_ancestor_inside(value.span) {
                     Some((value.span.with_hi(span.lo()), value.span.with_lo(span.hi())))
                 } else {
diff --git a/src/test/ui/lint/issue-104392.rs b/src/test/ui/lint/issue-104392.rs
new file mode 100644
index 00000000000..d5608edb46f
--- /dev/null
+++ b/src/test/ui/lint/issue-104392.rs
@@ -0,0 +1,11 @@
+fn main() {
+    { unsafe 92 } //~ ERROR expected `{`, found `92`
+}
+
+fn foo() {
+    { mod 92 } //~ ERROR expected identifier, found `92`
+}
+
+fn bar() {
+    { trait 92 } //~ ERROR expected identifier, found `92`
+}
diff --git a/src/test/ui/lint/issue-104392.stderr b/src/test/ui/lint/issue-104392.stderr
new file mode 100644
index 00000000000..8e466439ae6
--- /dev/null
+++ b/src/test/ui/lint/issue-104392.stderr
@@ -0,0 +1,27 @@
+error: expected `{`, found `92`
+  --> $DIR/issue-104392.rs:2:14
+   |
+LL |     { unsafe 92 }
+   |       ------ ^^ expected `{`
+   |       |
+   |       while parsing this `unsafe` expression
+   |
+help: try placing this code inside a block
+   |
+LL |     { unsafe { 92 } }
+   |              +    +
+
+error: expected identifier, found `92`
+  --> $DIR/issue-104392.rs:6:11
+   |
+LL |     { mod 92 }
+   |           ^^ expected identifier
+
+error: expected identifier, found `92`
+  --> $DIR/issue-104392.rs:10:13
+   |
+LL |     { trait 92 }
+   |             ^^ expected identifier
+
+error: aborting due to 3 previous errors
+