| // 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. |
| |
| // @dart = 2.9 |
| |
| // Regression test for dart2js issue 6639. |
| |
| library inline_super_test; |
| |
| import "package:expect/expect.dart"; |
| |
| 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); |
| } |