Files
sdk/tests/language/getter/setter_order_test.dart
T
Robert Nystrom 415cab79d3 Migrate language_2/getter to NNBD.
Change-Id: Ibe4be604f5002c125aba64c051793b750f31638a
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/147819
Commit-Queue: Bob Nystrom <rnystrom@google.com>
Auto-Submit: Bob Nystrom <rnystrom@google.com>
Reviewed-by: Erik Ernst <eernst@google.com>
2020-05-14 19:16:39 +00:00

101 lines
2.0 KiB
Dart

// Copyright (c) 2013, 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.
// Test for the evaluation order of getters and setters.
import 'package:expect/expect.dart';
var trace;
class X {
get b {
trace.add('get b');
return new X();
}
set c(value) {
trace.add('set c');
}
toString() {
trace.add('toString');
return 'X';
}
get c {
trace.add('get c');
return 42;
}
get d {
trace.add('get d');
return new X();
}
operator [](index) {
trace.add('index');
return 42;
}
operator []=(index, value) {
trace.add('indexSet');
}
}
main() {
var x = new X();
trace = [];
x.b.c = '$x';
Expect.listEquals(['get b', 'toString', 'set c'], trace);
trace = [];
x.b.c += '$x'.hashCode;
Expect.listEquals(['get b', 'get c', 'toString', 'set c'], trace);
trace = [];
x.b.c++;
Expect.listEquals(['get b', 'get c', 'set c'], trace);
trace = [];
x.b.d[42] = '$x';
Expect.listEquals(['get b', 'get d', 'toString', 'indexSet'], trace);
trace = [];
x.b.d[42] += '$x'.hashCode;
Expect.listEquals(['get b', 'get d', 'index', 'toString', 'indexSet'], trace);
trace = [];
x.b.d[42]++;
Expect.listEquals(['get b', 'get d', 'index', 'indexSet'], trace);
trace = [];
++x.b.d[42];
Expect.listEquals(['get b', 'get d', 'index', 'indexSet'], trace);
trace = [];
x.b.d[x.c] *= '$x'.hashCode;
Expect.listEquals(
['get b', 'get d', 'get c', 'index', 'toString', 'indexSet'], trace);
trace = [];
x.b.c = x.d.c = '$x';
Expect.listEquals([
'get b',
'get d',
'toString',
'set c',
'set c',
], trace);
trace = [];
x.b.c = x.d[42] *= '$x'.hashCode;
Expect.listEquals(
['get b', 'get d', 'index', 'toString', 'indexSet', 'set c'], trace);
trace = [];
x.b.c = ++x.d.c;
Expect.listEquals(['get b', 'get d', 'get c', 'set c', 'set c'], trace);
}