| // Copyright (c) 2023, 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. |
| |
| // Tests that dart2wasm doesn't recursively inline. |
| |
| import 'package:expect/expect.dart'; |
| |
| class Widget { |
| final List<Widget> _children; |
| |
| @pragma("wasm:prefer-inline") |
| Widget(int numChildren) |
| : _children = [ |
| for (var i = 0; i < numChildren; i++) Widget(0), |
| ]; |
| } |
| |
| @pragma("wasm:prefer-inline") |
| int fib(int n) { |
| if (n == 0) { |
| return 0; |
| } else if (n == 1) { |
| return 1; |
| } else { |
| return fib(n - 1) + fib(n - 2); |
| } |
| } |
| |
| void main() { |
| final widget = Widget(10); |
| Expect.equals(widget._children.length, 10); |
| Expect.equals(fib(5), 5); |
| } |