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 {}
