// Copyright (c) 2017, the Dart project authors.  Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.

/*@testedFeatures=inference*/
library test;

// I1::x depends on y, which depends on C::x.  Although C::x overrides I1::x, it
// does not depend on it, since its type is already specified.  So there is no
// circularity.

class I1 {
  final x = y;
}

abstract class I2 {
  num get x;
}

class C extends Object implements I1, I2 {
  int get x => 0;
}

var y = new C(). /*@target=C.x*/ x;

main() {}
