| Index: tests/language/src/OperatorIndexEvaluationOrderTest.dart
|
| ===================================================================
|
| --- tests/language/src/OperatorIndexEvaluationOrderTest.dart (revision 0)
|
| +++ tests/language/src/OperatorIndexEvaluationOrderTest.dart (revision 0)
|
| @@ -0,0 +1,48 @@
|
| +// Copyright (c) 2012, 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.
|
| +
|
| +class B {
|
| + int value;
|
| + List trace;
|
| + B(this.trace) : value = 100;
|
| + operator [](index) {
|
| + trace.add(-3);
|
| + trace.add(index);
|
| + trace.add(this.value);
|
| + this.value = this.value + 1;
|
| + return this;
|
| + }
|
| +
|
| + operator []=(index, value) {
|
| + trace.add(-5);
|
| + trace.add(index);
|
| + trace.add(value.value);
|
| + this.value = this.value + 1;
|
| + }
|
| +
|
| + operator +(int value) {
|
| + trace.add(-4);
|
| + trace.add(this.value);
|
| + trace.add(value);
|
| + this.value = this.value + 1;
|
| + return this;
|
| + }
|
| +}
|
| +
|
| +B getB(trace) {
|
| + trace.add(-1);
|
| + return new B(trace);
|
| +}
|
| +
|
| +int getIndex(trace) {
|
| + trace.add(-2);
|
| + return 42;
|
| +}
|
| +
|
| +main() {
|
| + List trace = new List();
|
| + getB(trace)[getIndex(trace)] += 37;
|
| +
|
| + Expect.listEquals([-1, -2, -3, 42, 100, -4, 101, 37, -5, 42, 102], trace);
|
| +}
|
|
|