Repository: intellij-rust/intellij-rust
Issue: No completion for `union` keyword

## Environment

* **IntelliJ Rust plugin version:** 0.2.119.3026-193-nightly
* **Rust toolchain version:** 1.41.0 (5e1a79984 2020-01-27) x86_64-apple-darwin
* **IDE name and version:** IntelliJ IDEA 2019.3.4 Ultimate Edition (IU-193.6911.18)
* **Operating system:** macOS 10.15.3

## Problem description
No completion for `union` keyword  

## Steps to reproduce
Type `unio` and invoke completion

Changed files:
src/main/kotlin/org/rust/lang/core/completion/RsKeywordCompletionContributor.kt
src/test/kotlin/org/rust/lang/core/completion/RsKeywordCompletionContributorTest.kt
src/main/kotlin/org/rust/lang/core/completion/RsKeywordCompletionProvider.kt

diff --git a/src/main/kotlin/org/rust/lang/core/completion/RsKeywordCompletionContributor.kt b/src/main/kotlin/org/rust/lang/core/completion/RsKeywordCompletionContributor.kt
index 1c596b9ee..f45908a3f 100644
--- a/src/main/kotlin/org/rust/lang/core/completion/RsKeywordCompletionContributor.kt
+++ b/src/main/kotlin/org/rust/lang/core/completion/RsKeywordCompletionContributor.kt
@@ -36,9 +36,9 @@ class RsKeywordCompletionContributor : CompletionContributor(), DumbAware {
 
     init {
         extend(CompletionType.BASIC, declarationPattern(),
-            RsKeywordCompletionProvider("const", "enum", "extern", "fn", "impl", "mod", "pub", "static", "struct", "trait", "type", "unsafe", "use"))
+            RsKeywordCompletionProvider("const", "enum", "extern", "fn", "impl", "mod", "pub", "static", "struct", "trait", "type", "union", "unsafe", "use"))
         extend(CompletionType.BASIC, pubDeclarationPattern(),
-            RsKeywordCompletionProvider("const", "enum", "extern", "fn", "mod", "static", "struct", "trait", "type", "unsafe", "use"))
+            RsKeywordCompletionProvider("const", "enum", "extern", "fn", "mod", "static", "struct", "trait", "type", "union", "unsafe", "use"))
         extend(CompletionType.BASIC, externDeclarationPattern(),
             RsKeywordCompletionProvider("crate", "fn"))
         extend(CompletionType.BASIC, unsafeDeclarationPattern(),
diff --git a/src/main/kotlin/org/rust/lang/core/completion/RsKeywordCompletionProvider.kt b/src/main/kotlin/org/rust/lang/core/completion/RsKeywordCompletionProvider.kt
index cb71a398d..c7364d6f8 100644
--- a/src/main/kotlin/org/rust/lang/core/completion/RsKeywordCompletionProvider.kt
+++ b/src/main/kotlin/org/rust/lang/core/completion/RsKeywordCompletionProvider.kt
@@ -35,7 +35,7 @@ fun InsertionContext.addSuffix(suffix: String) {
 }
 
 private val ALWAYS_NEEDS_SPACE = setOf("crate", "const", "enum", "extern", "fn", "impl", "let", "mod", "mut", "pub",
-    "static", "struct", "trait", "type", "unsafe", "use", "where")
+    "static", "struct", "trait", "type", "union", "unsafe", "use", "where")
 
 
 private fun addInsertionHandler(keyword: String, builder: LookupElementBuilder, parameters: CompletionParameters): LookupElementBuilder {
diff --git a/src/test/kotlin/org/rust/lang/core/completion/RsKeywordCompletionContributorTest.kt b/src/test/kotlin/org/rust/lang/core/completion/RsKeywordCompletionContributorTest.kt
index 41fd57511..da1824b65 100644
--- a/src/test/kotlin/org/rust/lang/core/completion/RsKeywordCompletionContributorTest.kt
+++ b/src/test/kotlin/org/rust/lang/core/completion/RsKeywordCompletionContributorTest.kt
@@ -739,6 +739,23 @@ class RsKeywordCompletionContributorTest : RsCompletionTestBase() {
         }
     """)
 
+    fun `test union`() = checkCompletion("union",
+        "unio/*caret*/",
+        "union /*caret*/"
+    )
+
+    fun `test pub union`() = checkCompletion("union",
+        "pub unio/*caret*/",
+        "pub union /*caret*/"
+    )
+
+    fun `test no union in expr`() = checkNoCompletion("""
+        fn foo() {
+            let x = 42 + unio/*caret*/;
+        }
+    """)
+
+
     private fun checkCompletion(
         lookupStrings: List<String>,
         @Language("Rust") before: String,