| Index: tests/language/field_wierd_name_test.dart
|
| diff --git a/tests/language/field_wierd_name_test.dart b/tests/language/field_wierd_name_test.dart
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..7f650105c19b9261c0ebd1e280ed805128ef32ea
|
| --- /dev/null
|
| +++ b/tests/language/field_wierd_name_test.dart
|
| @@ -0,0 +1,149 @@
|
| +// Copyright (c) 2017, 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.
|
| +// Dart test program for testing setting/getting of instance fields.
|
| +
|
| +import "package:expect/expect.dart";
|
| +
|
| +// dart2js used to have a bug where a local called '_' in the constructor
|
| +// shadowed the parameter named after a field. This lead to the field being
|
| +// initialized to 'this' (a cycle) rather than the correct initializer value.
|
| +//
|
| +// This test is in the language tests rather than dart2js specific tests since
|
| +// the dart2js specific tests are not run in all configurations that coudl
|
| +// tickle this issue.
|
| +
|
| +int ii = 0;
|
| +
|
| +class Thing {
|
| + var _;
|
| + var $_;
|
| + // Extra fields to make use of local in constructor benficial and to exhaust
|
| + // single-character names.
|
| + var a = ++ii, b = ++ii, c = ++ii, d = ++ii, e = ++ii;
|
| + var f = ++ii, g = ++ii, h = ++ii, i = ++ii, j = ++ii;
|
| + var k = ++ii, l = ++ii, m = ++ii, n = ++ii, o = ++ii;
|
| + var p = ++ii, q = ++ii, r = ++ii, s = ++ii, t = ++ii;
|
| + var u = ++ii, v = ++ii, w = ++ii, x = ++ii, y = ++ii;
|
| + var z = ++ii;
|
| + var A = ++ii, B = ++ii, C = ++ii, D = ++ii, E = ++ii;
|
| + var F = ++ii, G = ++ii, H = ++ii, I = ++ii, J = ++ii;
|
| + var K = ++ii, L = ++ii, M = ++ii, N = ++ii, O = ++ii;
|
| + var P = ++ii, Q = ++ii, R = ++ii, S = ++ii, T = ++ii;
|
| + var U = ++ii, V = ++ii, W = ++ii, X = ++ii, Y = ++ii;
|
| + var Z = ++ii;
|
| + var $ = ++ii;
|
| +
|
| + var f30 = ++ii, f31 = ++ii, f32 = ++ii, f33 = ++ii, f34 = ++ii;
|
| + var f35 = ++ii, f36 = ++ii, f37 = ++ii, f38 = ++ii, f39 = ++ii;
|
| + var f40 = ++ii, f41 = ++ii, f42 = ++ii, f43 = ++ii, f44 = ++ii;
|
| + var f45 = ++ii, f46 = ++ii, f47 = ++ii, f48 = ++ii, f49 = ++ii;
|
| + var f50 = ++ii, f51 = ++ii, f52 = ++ii, f53 = ++ii, f54 = ++ii;
|
| + var f55 = ++ii, f56 = ++ii, f57 = ++ii, f58 = ++ii, f59 = ++ii;
|
| +
|
| + @NoInline()
|
| + Thing(this._, this.$_);
|
| + toString() {
|
| + if (depth > 0) return 'recursion!';
|
| + try {
|
| + ++depth;
|
| + var sum = a +
|
| + b +
|
| + c +
|
| + d +
|
| + e +
|
| + f +
|
| + g +
|
| + h +
|
| + i +
|
| + j +
|
| + k +
|
| + l +
|
| + m +
|
| + n +
|
| + o +
|
| + p +
|
| + q +
|
| + r +
|
| + s +
|
| + t +
|
| + u +
|
| + v +
|
| + w +
|
| + x +
|
| + y +
|
| + z +
|
| + A +
|
| + B +
|
| + C +
|
| + D +
|
| + E +
|
| + F +
|
| + G +
|
| + H +
|
| + I +
|
| + J +
|
| + K +
|
| + L +
|
| + M +
|
| + N +
|
| + O +
|
| + P +
|
| + Q +
|
| + R +
|
| + S +
|
| + T +
|
| + U +
|
| + V +
|
| + W +
|
| + X +
|
| + Y +
|
| + Z +
|
| + $ +
|
| + f30 +
|
| + f31 +
|
| + f32 +
|
| + f33 +
|
| + f34 +
|
| + f35 +
|
| + f36 +
|
| + f37 +
|
| + f38 +
|
| + f39 +
|
| + f40 +
|
| + f41 +
|
| + f42 +
|
| + f43 +
|
| + f44 +
|
| + f45 +
|
| + f46 +
|
| + f47 +
|
| + f48 +
|
| + f49 +
|
| + f50 +
|
| + f51 +
|
| + f52 +
|
| + f53 +
|
| + f54 +
|
| + f55 +
|
| + f56 +
|
| + f57 +
|
| + f58 +
|
| + f59;
|
| + return 'Thing(${_}, ${$_}, ${sum})';
|
| + } finally {
|
| + --depth;
|
| + }
|
| + }
|
| +
|
| + static int depth = 0;
|
| +}
|
| +
|
| +main() {
|
| + var t1 = new Thing(1, 2);
|
| + var t2 = new Thing(3, 4);
|
| + var t3 = [];
|
| +
|
| + Expect.equals(
|
| + '[Thing(1, 2, 3486), Thing(3, 4, 10375), []]', '${[t1, t2, t3]}');
|
| +}
|
|
|