diff --git a/pkg/analysis_server/test/plugin/protocol_dart_test.dart b/pkg/analysis_server/test/plugin/protocol_dart_test.dart
index f1fe58f..2640347 100644
--- a/pkg/analysis_server/test/plugin/protocol_dart_test.dart
+++ b/pkg/analysis_server/test/plugin/protocol_dart_test.dart
@@ -520,13 +520,5 @@
 
   @failingTest
   @override
-  test_fromElement_ENUM() => super.test_fromElement_ENUM();
-
-  @failingTest
-  @override
-  test_fromElement_ENUM_CONSTANT() => super.test_fromElement_ENUM_CONSTANT();
-
-  @failingTest
-  @override
   test_fromElement_LABEL() => super.test_fromElement_LABEL();
 }
diff --git a/pkg/analysis_server/test/services/completion/dart/local_constructor_contributor_test.dart b/pkg/analysis_server/test/services/completion/dart/local_constructor_contributor_test.dart
index 206dde9..c550fa9 100644
--- a/pkg/analysis_server/test/services/completion/dart/local_constructor_contributor_test.dart
+++ b/pkg/analysis_server/test/services/completion/dart/local_constructor_contributor_test.dart
@@ -4226,10 +4226,6 @@
 
   @failingTest
   @override
-  test_enum_deprecated() => super.test_enum_deprecated();
-
-  @failingTest
-  @override
   test_ForEachStatement_body_untyped() =>
       super.test_ForEachStatement_body_untyped();
 
diff --git a/pkg/analysis_server/test/services/completion/dart/local_reference_contributor_test.dart b/pkg/analysis_server/test/services/completion/dart/local_reference_contributor_test.dart
index bec8f09..5f7ad8d 100644
--- a/pkg/analysis_server/test/services/completion/dart/local_reference_contributor_test.dart
+++ b/pkg/analysis_server/test/services/completion/dart/local_reference_contributor_test.dart
@@ -4734,10 +4734,6 @@
 
   @failingTest
   @override
-  test_enum_deprecated() => super.test_enum_deprecated();
-
-  @failingTest
-  @override
   test_enum_filter() => super.test_enum_filter();
 
   @failingTest
diff --git a/pkg/analysis_server/test/services/search/search_engine_test.dart b/pkg/analysis_server/test/services/search/search_engine_test.dart
index b28af8b..45fbb9e 100644
--- a/pkg/analysis_server/test/services/search/search_engine_test.dart
+++ b/pkg/analysis_server/test/services/search/search_engine_test.dart
@@ -505,6 +505,7 @@
 
   @failingTest
   @override
-  test_searchReferences_discover_owned() =>
-      super.test_searchReferences_discover_owned();
+  test_searchReferences_discover_owned() {
+    return callFailingTest(super.test_searchReferences_discover_owned);
+  }
 }
diff --git a/pkg/analyzer/lib/src/generated/declaration_resolver.dart b/pkg/analyzer/lib/src/generated/declaration_resolver.dart
index e12642a..854a78a 100644
--- a/pkg/analyzer/lib/src/generated/declaration_resolver.dart
+++ b/pkg/analyzer/lib/src/generated/declaration_resolver.dart
@@ -185,25 +185,18 @@
   @override
   Object visitEnumDeclaration(EnumDeclaration node) {
     ClassElement element = _match(node.name, _walker.getEnum());
-    if (_useCFE) {
-      node.name.staticType = _typeProvider.typeType;
-      for (var constant in node.constants) {
-        SimpleIdentifier name = constant.name;
-        FieldElement field = element.getField(name.name);
-        name.staticElement = field;
-        name.staticType = element.type;
-      }
-      return null;
-    }
+    node.name.staticType = _typeProvider.typeType;
+    resolveMetadata(node, node.metadata, element);
     _walk(new ElementWalker.forClass(element), () {
       for (EnumConstantDeclaration constant in node.constants) {
-        VariableElement element = _match(constant.name, _walker.getVariable());
-        resolveMetadata(node, constant.metadata, element);
+        VariableElement field = _match(constant.name, _walker.getVariable());
+        resolveMetadata(node, constant.metadata, field);
+        constant.name.staticElement = field;
+        constant.name.staticType = field.type;
       }
       _walker.getFunction(); // toString()
       super.visitEnumDeclaration(node);
     });
-    resolveMetadata(node, node.metadata, element);
     return null;
   }
 
diff --git a/pkg/analyzer/test/src/dart/analysis/driver_resolution_test.dart b/pkg/analyzer/test/src/dart/analysis/driver_resolution_test.dart
index 203479c..14378de 100644
--- a/pkg/analyzer/test/src/dart/analysis/driver_resolution_test.dart
+++ b/pkg/analyzer/test/src/dart/analysis/driver_resolution_test.dart
@@ -8051,9 +8051,7 @@
 
     SimpleIdentifier dName = enumNode.name;
     expect(dName.staticElement, same(enumElement));
-    if (useCFE) {
-      expect(dName.staticType, typeProvider.typeType);
-    }
+    expect(dName.staticType, typeProvider.typeType);
 
     {
       var aElement = enumElement.getField('A');
