diff --git a/pkg/analysis_server/test/analysis/notification_occurrences_test.dart b/pkg/analysis_server/test/analysis/notification_occurrences_test.dart
index e0cc0f7..5bf1c3b 100644
--- a/pkg/analysis_server/test/analysis/notification_occurrences_test.dart
+++ b/pkg/analysis_server/test/analysis/notification_occurrences_test.dart
@@ -109,6 +109,113 @@
     assertHasOffset('vvv);');
   }
 
+  Future<void> test_enum() async {
+    addTestFile('''
+enum E {
+  v;
+}
+
+void f(E e) {
+  E.v;
+}
+''');
+    await prepareOccurrences();
+    assertHasRegion('E e');
+    expect(testOccurrences.element.kind, ElementKind.ENUM);
+    expect(testOccurrences.element.name, 'E');
+    assertHasOffset('E e');
+    assertHasOffset('E.v');
+  }
+
+  Future<void> test_enum_constant() async {
+    addTestFile('''
+enum E {
+  v; // 0
+}
+
+void f() {
+  E.v; // 1
+}
+''');
+    await prepareOccurrences();
+    assertHasRegion('v; // 0');
+    expect(testOccurrences.element.kind, ElementKind.ENUM_CONSTANT);
+    expect(testOccurrences.element.name, 'v');
+    assertHasOffset('v; // 1');
+  }
+
+  Future<void> test_enum_field() async {
+    addTestFile('''
+enum E {
+  v;
+  final int foo = 0;
+}
+
+void f(E e) {
+  e.foo;
+}
+''');
+    await prepareOccurrences();
+    assertHasRegion('foo = 0');
+    expect(testOccurrences.element.kind, ElementKind.FIELD);
+    expect(testOccurrences.element.name, 'foo');
+    assertHasOffset('foo;');
+  }
+
+  Future<void> test_enum_getter() async {
+    addTestFile('''
+enum E {
+  v;
+  int get foo => 0;
+}
+
+void f(E e) {
+  e.foo;
+}
+''');
+    await prepareOccurrences();
+    assertHasRegion('foo => 0');
+    expect(testOccurrences.element.kind, ElementKind.FIELD);
+    expect(testOccurrences.element.name, 'foo');
+    assertHasOffset('foo;');
+  }
+
+  Future<void> test_enum_method() async {
+    addTestFile('''
+enum E {
+  v;
+  void foo() {}
+}
+
+void f(E e) {
+  e.foo();
+}
+''');
+    await prepareOccurrences();
+    assertHasRegion('foo() {}');
+    expect(testOccurrences.element.kind, ElementKind.METHOD);
+    expect(testOccurrences.element.name, 'foo');
+    assertHasOffset('foo();');
+  }
+
+  Future<void> test_enum_setter() async {
+    addTestFile('''
+enum E {
+  v;
+  set foo(int _) {}
+}
+
+void f(E e) {
+  e.foo = 0;
+}
+''');
+    await prepareOccurrences();
+    assertHasRegion('foo(int _) {}');
+    expect(testOccurrences.element.kind, ElementKind.FIELD);
+    expect(testOccurrences.element.name, 'foo');
+    assertHasOffset('foo = 0;');
+  }
+
   Future<void> test_field() async {
     addTestFile('''
 class A {
diff --git a/pkg/analysis_server/test/src/flutter/flutter_outline_computer_test.dart b/pkg/analysis_server/test/src/flutter/flutter_outline_computer_test.dart
index e405c98..f59bb45 100644
--- a/pkg/analysis_server/test/src/flutter/flutter_outline_computer_test.dart
+++ b/pkg/analysis_server/test/src/flutter/flutter_outline_computer_test.dart
@@ -386,6 +386,35 @@
     expect(container.codeLength, 15);
   }
 
+  Future<void> test_enum() async {
+    var unitOutline = await _computeOutline('''
+import 'package:flutter/widgets.dart';
+
+enum E {
+  v;
+  Widget build(BuildContext context) {
+    return const Text('A');
+  }
+}
+''');
+
+    expect(_toText(unitOutline), r'''
+(D) E
+  (D) v
+  (D) build
+    Text
+''');
+    var E = unitOutline.children![0];
+    var build = E.children![1];
+    {
+      var textOutline = build.children![0];
+      var text = "const Text('A')";
+      var offset = testCode.indexOf(text);
+      expect(textOutline.offset, offset);
+      expect(textOutline.length, text.length);
+    }
+  }
+
   Future<void> test_genericLabel_invocation() async {
     var unitOutline = await _computeOutline(r'''
 import 'package:flutter/widgets.dart';
diff --git a/tools/VERSION b/tools/VERSION
index 827ebec..dfc959b 100644
--- a/tools/VERSION
+++ b/tools/VERSION
@@ -27,5 +27,5 @@
 MAJOR 2
 MINOR 17
 PATCH 0
-PRERELEASE 149
+PRERELEASE 150
 PRERELEASE_PATCH 0
\ No newline at end of file
