library test;
//
// Problems in library:
//
// pkg/front_end/testcases/inference/downward_inference_fixes_no_upwards_errors.dart:21:65: Error: Inferred type argument 'dynamic' doesn't conform to the bound 'num' of the type variable 'T' on 'max'.
// Try specifying type arguments explicitly so that they conform to the bounds.
//   dynamic c = /*error:COULD_NOT_INFER*/ /*@ typeArgs=dynamic */ max(x, y);
//                                                                 ^
//
// pkg/front_end/testcases/inference/downward_inference_fixes_no_upwards_errors.dart:22:81: Error: Inferred type argument 'dynamic' doesn't conform to the bound 'num' of the type variable 'T' on 'max'.
// Try specifying type arguments explicitly so that they conform to the bounds.
//   var /*@ type=dynamic */ d = /*error:COULD_NOT_INFER*/ /*@ typeArgs=dynamic */ max(
//                                                                                 ^
//
import self as self;
import "dart:core" as core;
import "dart:math" as math;

import "dart:math";

static method f() → dynamic {
  core::num* x;
  dynamic y;
  core::num* a = math::max<core::num*>(x, y as{TypeError,ForDynamic} core::num*);
  core::Object* b = math::max<core::num*>(x, y as{TypeError,ForDynamic} core::num*);
  dynamic c = math::max<dynamic>(x, y);
  dynamic d = math::max<dynamic>(x, y);
}
static method main() → dynamic {}
