// Copyright (c) 2023, the Dart project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. /// Test that switch expressions are allowed to be empty, and that they have the /// proper static type behavior. /// /// Note that the runtime behavior only matters in mixed-mode programs, since in /// fully sound programs an empty switch expression will be unreachable. import 'package:expect/static_type_helper.dart'; // Note: no subtypes. sealed class A {} Never emptySwitchOnSealedClass(A a) => (switch (a) {})..expectStaticType(); void unreachableAfterEmptySwitch(A a, int? i) { if (i == null) { (switch (a) {}); // Flow analysis should understand that since `switch (a) {}` has type // `Never`, the rest of this block is unreachable. } // Hence, `i` is promoted to non-nullable. i.isEven; } main() {}