library test;
//
// Problems in library:
//
// pkg/front_end/testcases/inference_new/dependency_only_if_overloaded.dart:15:5: Error: Can't infer the type of 'a': circularity found during type inference.
// Specify the type explicitly.
// var a = /*@ returnType=num* */ () => intValue /*@target=num.+*/ + b;
//     ^
//
import self as self;
import "dart:core" as core;

static field core::int* intValue = 0;
static field core::num* numValue = 0;
static field core::double* doubleValue = 0.0;
static field invalid-type a = () → core::num* => self::intValue.{core::num::+}(self::b as{TypeError,ForDynamic} core::num*);
static field dynamic b = self::a.call();
static field () →* core::num* c = () → core::num* => self::numValue.{core::num::+}(self::d);
static field core::num* d = self::c.call();
static field () →* core::double* e = () → core::double* => self::doubleValue.{core::double::+}(self::f);
static field core::double* f = self::e.call();
static method main() → dynamic {}
