// Formatted problems:
//
// pkg/front_end/testcases/rasta/issue_000042.dart:6:13: Error: Unexpected token ','.
//   for (var x, y in []) {}
//             ^
//
// pkg/front_end/testcases/rasta/issue_000042.dart:6:8: Error: A for-in loop can't have more than one loop variable.
//   for (var x, y in []) {}
//        ^^^
//
// pkg/front_end/testcases/rasta/issue_000042.dart:7:8: Error: A continue statement can't be used outside of a loop or switch statement.
// Try removing the continue statement.
//   L: { continue L; }
//        ^^^^^^^^
//
// pkg/front_end/testcases/rasta/issue_000042.dart:8:18: Error: A continue statement can't be used outside of a loop or switch statement.
// Try removing the continue statement.
//   L: if (true) { continue L; }
//                  ^^^^^^^^

// Unhandled errors:
//
// pkg/front_end/testcases/rasta/issue_000042.dart:6:13: Error: Unexpected token ','.
//   for (var x, y in []) {}
//             ^
//
// pkg/front_end/testcases/rasta/issue_000042.dart:7:8: Error: A continue statement can't be used outside of a loop or switch statement.
// Try removing the continue statement.
//   L: { continue L; }
//        ^^^^^^^^
//
// pkg/front_end/testcases/rasta/issue_000042.dart:8:18: Error: A continue statement can't be used outside of a loop or switch statement.
// Try removing the continue statement.
//   L: if (true) { continue L; }
//                  ^^^^^^^^

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

static method main() → dynamic {
  for (final dynamic #t1 = invalid-expression "pkg/front_end/testcases/rasta/issue_000042.dart:6:8: Error: A for-in loop can't have more than one loop variable.
  for (var x, y in []) {}
       ^^^" in <dynamic>[]) {
  }
  #L1:
  {
    break #L1;
  }
  #L2:
  if(true) {
    break #L2;
  }
  #L3:
  switch(1) {
    #L4:
    case 1:
      {
        break #L3;
      }
    #L5:
    case 2:
      {
        break #L3;
      }
  }
  try {
  }
  on core::NoSuchMethodError catch(no-exception-var) {
  }
}
