library /*isNonNullableByDefault*/;
//
// Problems in library:
//
// pkg/front_end/testcases/nnbd/switch_redesign_fall_over.dart:23:5: Error: Switch case may fall through to the next case.
//     case -42: // Error.
//     ^
//
import self as self;
import "dart:core" as core;
import "dart:_internal" as _in;

abstract class A extends core::Object {
  synthetic constructor •() → self::A
    : super core::Object::•()
    ;
  method foo(core::int x, core::bool b) → dynamic {
    switch(x) {
      #L1:
      case #C1:
        {
          let final Never #t1 = this.{self::A::neverReturn}() in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
        }
      #L2:
      default:
        {
          self::bar();
        }
    }
  }
  abstract method neverReturn() → Never;
}
static method bar() → dynamic {}
static method foo(core::int x, core::bool b) → dynamic {
  switch(x) {
    #L3:
    case #C1:
      {
        let final Never #t2 = b ?{Never} throw "hest" : throw "fisk" in throw new _in::ReachabilityError::•("`null` encountered as the result from expression with type `Never`.");
      }
    #L4:
    case #C2:
      {
        self::bar();
      }
    #L5:
    default:
      {
        self::bar();
      }
  }
}
static method main() → dynamic {}

constants  {
  #C1 = 42
  #C2 = -42
}
