Version 2.17.0-269.0.dev

Merge commit '3bbde68c4ee67e616ff98101546c229b39b52e54' into 'dev'
diff --git a/pkg/analyzer/lib/src/generated/resolver.dart b/pkg/analyzer/lib/src/generated/resolver.dart
index 78180a7..29a2a01 100644
--- a/pkg/analyzer/lib/src/generated/resolver.dart
+++ b/pkg/analyzer/lib/src/generated/resolver.dart
@@ -3820,7 +3820,9 @@
   }
 
   static Element? _referencedElement(Expression expression) {
-    if (expression is PrefixedIdentifier) {
+    if (expression is ParenthesizedExpression) {
+      return _referencedElement(expression.expression);
+    } else if (expression is PrefixedIdentifier) {
       return expression.staticElement;
     } else if (expression is PropertyAccess) {
       return expression.propertyName.staticElement;
diff --git a/pkg/analyzer/test/src/diagnostics/body_might_complete_normally_test.dart b/pkg/analyzer/test/src/diagnostics/body_might_complete_normally_test.dart
index 973910e..aa935ec 100644
--- a/pkg/analyzer/test/src/diagnostics/body_might_complete_normally_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/body_might_complete_normally_test.dart
@@ -92,6 +92,21 @@
 ''');
   }
 
+  test_function_nonNullable_blockBody_switchStatement_notNullable_exhaustive_parenthesis() async {
+    await assertNoErrorsInCode(r'''
+enum Foo { a, b }
+
+int f(Foo foo) {
+  switch (foo) {
+    case (Foo.a):
+      return 0;
+    case (Foo.b):
+      return 1;
+  }
+}
+''');
+  }
+
   test_function_nonNullable_blockBody_switchStatement_notNullable_notExhaustive() async {
     await assertErrorsInCode(r'''
 enum Foo { a, b }
diff --git a/tools/VERSION b/tools/VERSION
index 96bb58e..1e186b4 100644
--- a/tools/VERSION
+++ b/tools/VERSION
@@ -27,5 +27,5 @@
 MAJOR 2
 MINOR 17
 PATCH 0
-PRERELEASE 268
+PRERELEASE 269
 PRERELEASE_PATCH 0
\ No newline at end of file