// 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.

/**
 * @assertion A postfix expression of the form e1 [e2 ]--, is equivalent to
 * (a, i){var r = a[i]; a[i] = r - 1; return r}(e1 , e2 ).
 * @description Checks that a postfix expression of the form e1 [e2 ]--, is
 * equivalent to (a, i){var r = a[i]; a[i] = r - 1; return r}(e1, e2) in
 * implementation (basically, that postfix -- works via operator- in the
 * described manner).
 * @author rodionov
 */
import '../../../Utils/expect.dart';

bool opInvoked = false;

class A {
  final String value;

  A(this.value);

  operator -(var other) {
    opInvoked = true;
    return new A("${value}-${other}");
  }
}

main() {
  List e1 = [new A("foo")];
  Expect.isFalse(opInvoked);

  Expect.equals("foo", (e1[0]--).value);
  Expect.isTrue(opInvoked);
  Expect.equals("foo-1", e1[0].value);
}
