| // Copyright (c) 2019, 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. |
| |
| // Illustrates inlining heuristic issue of |
| // https://github.com/dart-lang/sdk/issues/37126 |
| // (mixins introduce one extra depth of inlining). |
| |
| // VMOptions=--deterministic |
| |
| import "package:expect/expect.dart"; |
| |
| class X { |
| const X(); |
| int foo() { |
| return 1; |
| } |
| } |
| |
| mixin YMixin { |
| int bar() { |
| return 2; |
| } |
| } |
| |
| class Y with YMixin { |
| const Y(); |
| } |
| |
| @pragma("vm:never-inline") |
| int foobar() { |
| return new X().foo() + new Y().bar(); |
| } |
| |
| main() { |
| Expect.equals(3, foobar()); |
| } |