Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(534)

Unified Diff: tests/language/field_wierd_name_test.dart

Issue 2837243002: Redo "dart2js: --fast-startup: use alias for 'this'" (Closed)
Patch Set: add test Created 3 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « pkg/compiler/lib/src/js_emitter/startup_emitter/model_emitter.dart ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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]}');
+}
« no previous file with comments | « pkg/compiler/lib/src/js_emitter/startup_emitter/model_emitter.dart ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698