// Unhandled errors:
//
// pkg/front_end/testcases/rasta/switch_fall_through.dart:7:5: Error: Switch case may fall through to the next case.
//     case 1:
//     ^
//
// pkg/front_end/testcases/rasta/switch_fall_through.dart:13:5: Error: Switch case may fall through to the next case.
//     case 2:
//     ^
//
// pkg/front_end/testcases/rasta/switch_fall_through.dart:20:5: Error: Switch case may fall through to the next case.
//     case 3:
//     ^
//
// pkg/front_end/testcases/rasta/switch_fall_through.dart:26:5: Error: Switch case may fall through to the next case.
//     case 4:
//     ^
//
// pkg/front_end/testcases/rasta/switch_fall_through.dart:31:5: Error: Switch case may fall through to the next case.
//     case 5:
//     ^

library;
import self as self;
import "dart:core" as core;

static method main() → dynamic {
  #L1:
  switch(1) {
    #L2:
    case 1:
      {
        {
          "No fall-through error needed.";
          break #L1;
          ;
        }
        throw new core::FallThroughError::_create("org-dartlang-testcase:///switch_fall_through.dart", 7);
      }
    #L3:
    case 2:
      {
        {
          "Fall-through error needed.";
          if(true) {
            break #L1;
          }
        }
        throw new core::FallThroughError::_create("org-dartlang-testcase:///switch_fall_through.dart", 13);
      }
    #L4:
    case 3:
      {
        try {
          "No fall-through error needed.";
        }
        finally {
          break #L1;
        }
        throw new core::FallThroughError::_create("org-dartlang-testcase:///switch_fall_through.dart", 20);
      }
    #L5:
    case 4:
      {
        try {
          "No fall-through error needed.";
          break #L1;
        }
        finally {
        }
        throw new core::FallThroughError::_create("org-dartlang-testcase:///switch_fall_through.dart", 26);
      }
    #L6:
    case 5:
      {
        try {
          "Fall-through error needed.";
        }
        finally {
        }
        throw new core::FallThroughError::_create("org-dartlang-testcase:///switch_fall_through.dart", 31);
      }
    #L7:
    case 10000:
      {
        "Should be last. No fall-through error, falling through allowed here.";
      }
  }
}
