about summary refs log tree commit diff
diff options
context:
space:
mode:
authorYuki Okushi <huyuumi.dev@gmail.com>2019-11-15 03:05:03 +0900
committerYuki Okushi <huyuumi.dev@gmail.com>2019-11-15 03:08:26 +0900
commit43492283b4952a0d6d55fbadfe53d48264f2f2b4 (patch)
tree98e6f163099e3f6defb8e9d242fe25b3ee464887
parent82cf3a4486bc882207a09bf0d9e2dea4632781aa (diff)
downloadrust-43492283b4952a0d6d55fbadfe53d48264f2f2b4.tar.gz
rust-43492283b4952a0d6d55fbadfe53d48264f2f2b4.zip
Don't warn labels beginning with `_`
-rw-r--r--src/librustc_resolve/late.rs4
-rw-r--r--src/test/ui/label/label-beginning-with-underscore.rs10
2 files changed, 13 insertions, 1 deletions
diff --git a/src/librustc_resolve/late.rs b/src/librustc_resolve/late.rs
index 24d6331bbd3..6b068387974 100644
--- a/src/librustc_resolve/late.rs
+++ b/src/librustc_resolve/late.rs
@@ -1767,7 +1767,9 @@ impl<'a, 'b> LateResolutionVisitor<'a, '_> {
 
     fn with_resolved_label(&mut self, label: Option<Label>, id: NodeId, f: impl FnOnce(&mut Self)) {
         if let Some(label) = label {
-            self.diagnostic_metadata.unused_labels.insert(id, label.ident.span);
+            if label.ident.as_str().as_bytes()[1] != b'_' {
+                self.diagnostic_metadata.unused_labels.insert(id, label.ident.span);
+            }
             self.with_label_rib(NormalRibKind, |this| {
                 let ident = label.ident.modern_and_legacy();
                 this.label_ribs.last_mut().unwrap().bindings.insert(ident, id);
diff --git a/src/test/ui/label/label-beginning-with-underscore.rs b/src/test/ui/label/label-beginning-with-underscore.rs
new file mode 100644
index 00000000000..4b620864aab
--- /dev/null
+++ b/src/test/ui/label/label-beginning-with-underscore.rs
@@ -0,0 +1,10 @@
+// check-pass
+
+#![deny(unused_labels)]
+
+fn main() {
+    // `unused_label` shouldn't warn labels beginning with `_`
+    '_unused: loop {
+        break;
+    }
+}