Index: dart/tests/language/inline_super_test.dart |
diff --git a/dart/tests/language/inline_super_test.dart b/dart/tests/language/inline_super_test.dart |
new file mode 100644 |
index 0000000000000000000000000000000000000000..9305984ba304dc788310a6259cf4222038d7286f |
--- /dev/null |
+++ b/dart/tests/language/inline_super_test.dart |
@@ -0,0 +1,36 @@ |
+// 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. |
+ |
+// Regression test for dart2js issue 6639. |
+ |
+library inline_super_test; |
+ |
+part 'inline_super_part.dart'; |
+ |
+// Long comment to ensure source positions in the following code are |
+// larger than the part file. Best way to ensure that is to include |
+// the part as a comment: |
+// |
+// class Player extends LivingActor { |
+// Player (deathCallback) : super(null, deathCallback); |
+// } |
+ |
+class Percept {} |
+ |
+class Actor { |
+ final percept; |
+ Actor(this.percept); |
+} |
+ |
+class LivingActor extends Actor { |
+ // The bug occurs when inlining the node [:new Percept():] into |
+ // [Actor]'s constructor. When this inlining is being initiated |
+ // from [Player], we must take care to ensure that we know that we |
+ // are inlining from this location, and not [Player]. |
+ LivingActor () : super(new Percept()); |
+} |
+ |
+main() { |
+ Expect.isTrue(new Player().percept is Percept); |
+} |