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

Unified Diff: tests/language/constructor12_test.dart

Issue 966763002: Fix order of box and types for constructor-body invocations. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Added tests. Created 5 years, 10 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/ssa/builder.dart ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: tests/language/constructor12_test.dart
diff --git a/tests/language/constructor12_test.dart b/tests/language/constructor12_test.dart
new file mode 100644
index 0000000000000000000000000000000000000000..28539921b55d90bfe97e92ea76cb3acfb16b57e2
--- /dev/null
+++ b/tests/language/constructor12_test.dart
@@ -0,0 +1,65 @@
+// Copyright (c) 2015, 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 {
+ final z;
+ B(this.z);
+
+ foo() => this.z;
+}
+
+class A<T> extends B {
+ var captured, captured2;
+ var typedList;
+
+ // p must be inside a box (in dart2js).
+ A(p) : captured = (() => p), super(p++) {
+ // Make non-inlinable.
+ try {} catch(e) {}
+
+ captured2 = () => p++;
+
+ // In the current implementation of dart2js makes the generic type an
+ // argument to the body.
+ typedList = <T>[];
+ }
+
+ foo() => captured();
+ bar() => captured2();
+}
+
+@NoInline()
+@AssumeDynamic()
+confuse(x) => x;
+
+main() {
+ var a = confuse(new A<int>(1));
+ var a2 = confuse(new A(2));
+ var b = confuse(new B(3));
+ Expect.equals(2, a.foo());
+ Expect.equals(3, a2.foo());
+ Expect.equals(3, b.foo());
+ Expect.equals(1, a.z);
+ Expect.equals(2, a2.z);
+ Expect.equals(3, b.z);
+ Expect.isTrue(a is A<int>);
+ Expect.isFalse(a is A<String>);
+ Expect.isTrue(a2 is A<int>);
+ Expect.isTrue(a2 is A<String>);
+ Expect.equals(2, a.bar());
+ Expect.equals(3, a2.bar());
+ Expect.equals(3, a.foo());
+ Expect.equals(4, a2.foo());
+ Expect.equals(0, a.typedList.length);
+ Expect.equals(0, a2.typedList.length);
+ a.typedList.add(499);
+ Expect.equals(1, a.typedList.length);
+ Expect.equals(0, a2.typedList.length);
+ Expect.isTrue(a.typedList is List<int>);
+ Expect.isTrue(a2.typedList is List<int>);
+ Expect.isFalse(a.typedList is List<String>);
+ Expect.isTrue(a2.typedList is List<String>);
+}
« no previous file with comments | « pkg/compiler/lib/src/ssa/builder.dart ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698