From 1df32c917c8a386947063403577098d1277380c7 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Bla=C5=BE=20Hrastnik?= <blaz@mxxn.io>
Date: Tue, 20 Sep 2022 16:28:00 +0900
Subject: [PATCH] diagnostics: Use Vec<Tag> instead of Option<Vec<Tag>>

---
 helix-core/src/diagnostic.rs  |  2 +-
 helix-lsp/src/lib.rs          | 23 +++++++++++------------
 helix-term/src/application.rs |  4 ++--
 3 files changed, 14 insertions(+), 15 deletions(-)

diff --git a/helix-core/src/diagnostic.rs b/helix-core/src/diagnostic.rs
index da199ac9..db1f2da9 100644
--- a/helix-core/src/diagnostic.rs
+++ b/helix-core/src/diagnostic.rs
@@ -43,6 +43,6 @@ pub struct Diagnostic {
     pub message: String,
     pub severity: Option<Severity>,
     pub code: Option<NumberOrString>,
-    pub tags: Option<Vec<DiagnosticTag>>,
+    pub tags: Vec<DiagnosticTag>,
     pub source: Option<String>,
 }
diff --git a/helix-lsp/src/lib.rs b/helix-lsp/src/lib.rs
index 8c76c4a8..8d43410a 100644
--- a/helix-lsp/src/lib.rs
+++ b/helix-lsp/src/lib.rs
@@ -84,19 +84,18 @@ pub mod util {
             None => None,
         };
 
-        let tags = if let Some(ref tags) = diag.tags {
-            let new_tags = tags
-                .iter()
-                .map(|tag| match tag {
-                    helix_core::diagnostic::DiagnosticTag::Unnecessary => {
-                        lsp::DiagnosticTag::UNNECESSARY
-                    }
-                    helix_core::diagnostic::DiagnosticTag::Deprecated => {
-                        lsp::DiagnosticTag::DEPRECATED
-                    }
-                })
-                .collect();
+        let new_tags: Vec<_> = diag
+            .tags
+            .iter()
+            .map(|tag| match tag {
+                helix_core::diagnostic::DiagnosticTag::Unnecessary => {
+                    lsp::DiagnosticTag::UNNECESSARY
+                }
+                helix_core::diagnostic::DiagnosticTag::Deprecated => lsp::DiagnosticTag::DEPRECATED,
+            })
+            .collect();
 
+        let tags = if !new_tags.is_empty() {
             Some(new_tags)
         } else {
             None
diff --git a/helix-term/src/application.rs b/helix-term/src/application.rs
index 496464f0..cd499f1c 100644
--- a/helix-term/src/application.rs
+++ b/helix-term/src/application.rs
@@ -614,9 +614,9 @@ impl Application {
                                             }
                                         }).collect();
 
-                                        Some(new_tags)
+                                        new_tags
                                     } else {
-                                        None
+                                        Vec::new()
                                     };
 
                                     Some(Diagnostic {