library test;
//
// Problems in library:
//
// pkg/front_end/testcases/inference_new/strongly_connected_component.dart:18:5: Error: Can't infer the type of 'y': circularity found during type inference.
// Specify the type explicitly.
// var y = /*@returnType=invalid-type*/ () => x;
//     ^
//
// pkg/front_end/testcases/inference_new/strongly_connected_component.dart:17:5: Error: Can't infer the type of 'x': circularity found during type inference.
// Specify the type explicitly.
// var x = /*@returnType=invalid-type*/ () => f() ? y : z;
//     ^
//
import self as self;
import "dart:core" as core;

static field invalid-type x = (() → invalid-type => self::f() ?{invalid-type} self::y : self::z) as{TypeError} invalid-type;
static field invalid-type y = (() → invalid-type => self::x) as{TypeError} invalid-type;
static field () → dynamic z = () → invalid-type => self::x;
static method f() → core::bool
  return null;
static method main() → dynamic {}
