// Copyright (c) 2014, 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.

class A {
  var member1; /// 01: compile-time error
  member2() {} /// 02: compile-time error
  get member3 => null; /// 03: compile-time error
  member4() {} /// 04: compile-time error
}

abstract class I {
  var member5; /// 05: ok
  var member6; /// 06: static type warning
  get member7; /// 07: static type warning
  get member8; /// 08: static type warning
  get member9; /// 09: static type warning
}

abstract class J {
  get member5; /// 05: continued
  member6() {} /// 06: continued
  member7() {} /// 07: continued
  member8() {} /// 08: continued
  member9() {} /// 09: continued
}

abstract class B extends A implements I, J {
}

class Class extends B {
  member1() {} /// 01: continued
  var member2; /// 02: continued
  member3() {} /// 03: continued
  get member4 => null; /// 04: continued
  var member5; /// 05: continued
  member8() {} /// 08: continued
  get member9 => null; /// 09: continued
}

main() {
  new Class();
}
