// 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. import "package:expect/expect.dart"; // Checks that abstract instance methods are correctly resolved. int get length => throw "error: top-level getter called"; set height(x) { throw "error: top-level setter called"; } width() { throw "error: top-level function called"; } abstract class A { int get length; // Abstract instance getter. set height(int x); // Abstract instance setter. int width(); // Abstract instance method. // Must resolve to non-abstract length getter in subclass. get useLength => length; // Must resolve to non-abstract height setter in subclass. setHeight(x) => height = x; // Must resolve to non-abstract width() method in subclass. useWidth() => width(); } class A1 extends A { int length; // Implies a length getter. int height; // Implies a height setter. int width() => 345; A1(this.length); } main() { var a = new A1(123); Expect.equals(123, a.useLength); a.setHeight(234); Expect.equals(234, a.height); Expect.equals(345, a.useWidth()); print([a.useLength, a.height, a.useWidth()]); }