// 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';

int plusInvoked = 0;

class A {
  final String value;

  A(this.value);

  operator +(var other) {
    plusInvoked++;
    return new A("${value}${other}");
  }
}

main() {
  List e1 = [new A("foo")];
  Expect.equals(0, plusInvoked);

  Expect.equals("foo", (e1[0]++).value);
  Expect.equals(1, plusInvoked);
  Expect.equals("foo1", e1[0].value);
}
