// Unhandled errors:
//
// pkg/front_end/testcases/rasta/parser_error.dart:10:7: Error: Expected an identifier, but got '?'.
//   if (?b) return b;  /// 01: compile-time error
//       ^
//
// pkg/front_end/testcases/rasta/parser_error.dart:10:9: Error: Expected ':' before this.
//   if (?b) return b;  /// 01: compile-time error
//         ^
//
// pkg/front_end/testcases/rasta/parser_error.dart:10:9: Error: Expected an identifier, but got ')'.
//   if (?b) return b;  /// 01: compile-time error
//         ^

library;
import self as self;
import "dart:core" as core;
import "package:expect/expect.dart" as exp;

static method test(dynamic a, {dynamic b = null, dynamic c = null}) → core::int {
  if((invalid-expression "pkg/front_end/testcases/rasta/parser_error.dart:10:7: Error: This couldn't be parsed.
  if (?b) return b;  /// 01: compile-time error
      ^" as{TypeError} core::bool ?{dynamic} b : invalid-expression "pkg/front_end/testcases/rasta/parser_error.dart:10:9: Error: This couldn't be parsed.
  if (?b) return b;  /// 01: compile-time error
        ^") as{TypeError} core::bool)
    return b as{TypeError} core::int;
  return a.+(b).+(c) as{TypeError} core::int;
}
static method main() → dynamic {
  exp::Expect::equals(6, self::test(1, b: 2, c: 3));
}
