blob: 45327894d0dc791344fe14a6922b1154accce398 [file] [log] [blame]
// 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()]);
}