Version 2.12.0-278.0.dev

Merge commit '388b6ff746ae7c0e32527fb81720dc6642a4be45' into 'dev'
diff --git a/pkg/analysis_server/test/services/completion/dart/keyword_contributor_test.dart b/pkg/analysis_server/test/services/completion/dart/keyword_contributor_test.dart
index f5f9774..5bda1ad 100644
--- a/pkg/analysis_server/test/services/completion/dart/keyword_contributor_test.dart
+++ b/pkg/analysis_server/test/services/completion/dart/keyword_contributor_test.dart
@@ -1470,6 +1470,77 @@
     assertSuggestKeywords(statementStartOutsideClass);
   }
 
+  @failingTest
+  Future<void> test_ifElement_noElse_last() async {
+    addTestSource('''
+void f() {
+  [if (true) 1 ^];
+}
+''');
+    await computeSuggestions();
+    assertSuggestKeywords([
+      ...COLLECTION_ELEMENT_START,
+      ...EXPRESSION_START_NO_INSTANCE,
+      Keyword.ELSE
+    ]);
+  }
+
+  Future<void> test_ifElement_noElse_notInElement() async {
+    addTestSource('''
+void f() {
+  [if (true) 1, ^];
+}
+''');
+    await computeSuggestions();
+    assertSuggestKeywords(
+        [...COLLECTION_ELEMENT_START, ...EXPRESSION_START_NO_INSTANCE]);
+  }
+
+  @failingTest
+  Future<void> test_ifElement_noElse_notLast() async {
+    addTestSource('''
+void f(int i) {
+  [if (true) 1 ^, i];
+}
+''');
+    await computeSuggestions();
+    assertSuggestKeywords([
+      ...COLLECTION_ELEMENT_START,
+      ...EXPRESSION_START_NO_INSTANCE,
+      Keyword.ELSE
+    ]);
+  }
+
+  @failingTest
+  Future<void> test_ifElement_partialElse_last() async {
+    addTestSource('''
+void f() {
+  [if (true) 1 e^];
+}
+''');
+    await computeSuggestions();
+    assertSuggestKeywords([
+      ...COLLECTION_ELEMENT_START,
+      ...EXPRESSION_START_NO_INSTANCE,
+      Keyword.ELSE
+    ]);
+  }
+
+  @failingTest
+  Future<void> test_ifElement_partialElse_notLast() async {
+    addTestSource('''
+void f(int i) {
+  [if (true) 1 e^, i];
+}
+''');
+    await computeSuggestions();
+    assertSuggestKeywords([
+      ...COLLECTION_ELEMENT_START,
+      ...EXPRESSION_START_NO_INSTANCE,
+      Keyword.ELSE
+    ]);
+  }
+
   Future<void> test_ifOrForElement_forElement() async {
     addTestSource('''
 f() => [for (var e in c) ^];
diff --git a/tools/VERSION b/tools/VERSION
index 5527eb6..6eb7104 100644
--- a/tools/VERSION
+++ b/tools/VERSION
@@ -27,5 +27,5 @@
 MAJOR 2
 MINOR 12
 PATCH 0
-PRERELEASE 277
+PRERELEASE 278
 PRERELEASE_PATCH 0
\ No newline at end of file