Files
sdk/tests/language/operator/index_evaluation_order_test.dart
T
Robert Nystrom 24b33dae89 Migrate language_2/operator to NNBD.
Change-Id: I90bc5ff6aae8998deb3cc28b1134c60058706f01
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/150185
Auto-Submit: Bob Nystrom <rnystrom@google.com>
Reviewed-by: Srujan Gaddam <srujzs@google.com>
Commit-Queue: Bob Nystrom <rnystrom@google.com>
2020-06-11 01:44:45 +00:00

51 lines
1018 B
Dart

// 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.
import "package:expect/expect.dart";
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 = [];
getB(trace)[getIndex(trace)] += 37;
Expect.listEquals([-1, -2, -3, 42, 100, -4, 101, 37, -5, 42, 102], trace);
}