// Formatted problems:
//
// pkg/front_end/testcases/rasta/switch_fall_through.dart:7:5: Warning: Switch case may fall through to the next case.
//     case 1:
//     ^
//
// pkg/front_end/testcases/rasta/switch_fall_through.dart:13:5: Warning: Switch case may fall through to the next case.
//     case 2:
//     ^
//
// pkg/front_end/testcases/rasta/switch_fall_through.dart:20:5: Warning: Switch case may fall through to the next case.
//     case 3:
//     ^
//
// pkg/front_end/testcases/rasta/switch_fall_through.dart:26:5: Warning: Switch case may fall through to the next case.
//     case 4:
//     ^
//
// pkg/front_end/testcases/rasta/switch_fall_through.dart:31:5: Warning: 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.";
      }
  }
}
