library test;
//
// Problems in library:
//
// pkg/front_end/testcases/inference/unsafe_block_closure_inference_function_call_explicit_type_param_via_expr1.dart:9:35: Error: An equality expression can't be an operand of another equality expression.
// Try re-writing the expression.
// var /*@topType=dynamic*/v = (f<int>)(() { return 1; });
//                                   ^
//
// pkg/front_end/testcases/inference/unsafe_block_closure_inference_function_call_explicit_type_param_via_expr1.dart:9:36: Error: Expected an identifier, but got ')'.
// var /*@topType=dynamic*/v = (f<int>)(() { return 1; });
//                                    ^
//
import self as self;
import "dart:core" as core;

static field dynamic v = self::f.<(core::int).>(invalid-expression "pkg/front_end/testcases/inference/unsafe_block_closure_inference_function_call_explicit_type_param_via_expr1.dart:9:36: Error: This couldn't be parsed.
var /*@topType=dynamic*/v = (f<int>)(() { return 1; });
                                   ^").call(() → dynamic {
  return 1;
});
static method f<T extends core::Object = dynamic>(() → self::f::T g) → core::List<self::f::T>
  return <self::f::T>[g.call()];
static method main() → dynamic {}
