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

/**
 * @assertion Evaluation of an identifier expression e of the form id proceeds
 * as follows:
 * Let d be the innermost declaration in the enclosing lexical scope whose name
 * is id or id=. If no such declaration exists in the lexical scope, let d be
 * the declaration of the inherited member named id if it exists.
 * ...
 * • If d is the declaration of a library variable, top-level getter or
 *   top-level setter, then e is equivalent to the getter invocation id.
 * @description Checks that reference to a top-level setter is evaluated to the
 * getter invocation.
 * @author ngl@unipro.ru
 */
import '../../../Utils/expect.dart';

var c = 1;
get s1 => ++c;
set s1(x) {c = x;}
set s2(x) {c = x;}

void f() {
  Expect.equals(c, 1);
  Expect.equals(s1, 2);
  Expect.equals(s1 = 4, 4);
  Expect.equals(s2 = 5, 5);
}

main() {
  f();
}
