// Copyright (c) 2011, 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.
// Dart test for testing super setters and getters.

// @dart = 2.9

import "package:expect/expect.dart";

class Base {
  Base() {}
  String value_;

  String get value { return value_; }
  String //# 01: compile-time error
  set value(String newValue) {
    value_ = 'Base:$newValue';
  }
}


class Derived extends Base {
  Derived() : super() {}

  String //# 02: compile-time error
  set value(String newValue) {
    super.value = 'Derived:$newValue';
  }
  String get value { return super.value; }
}


class SuperSetterTest {
  static void testMain() {
    final b = new Derived();
    b.value = "foo";
    Expect.equals("Base:Derived:foo", b.value);
  }
}

main() {
  SuperSetterTest.testMain();
}
