// 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 C.v++ is equivalent to 
/// (){var r = C.v; C.v = r + 1; return r}().
/// @description Checks that evaluation of an expression of the form C.v++
/// is equivalent to (){var r = C.v; C.v = r + 1; return r;}() in implementation
/// (basically, that postfix ++ works via operator+ in the described manner).
/// @author rodionov

import '../../../Utils/expect.dart';

bool plusInvoked = false;

class A {
  final String value;
  
  A(this.value);
  
  operator +(var other) {
    plusInvoked = true;
    return new A("${value}${other}");
  }
}

class C {
  static A v = A("");
}

main() {
  C.v = new A("foo");
  Expect.isFalse(plusInvoked);
  
  Expect.equals("foo", (C.v++).value);
  Expect.isTrue(plusInvoked);
  Expect.equals("foo1", C.v.value);
}
