| // Copyright (c) 2022, 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. | |
| /*member: foo1:ignore*/ | |
| @pragma('dart2js:tryInline') | |
| int foo1() => bar1(); | |
| /*member: foo2:ignore*/ | |
| @pragma('dart2js:tryInline') | |
| @pragma('dart2js:disable-inlining') | |
| int foo2() => bar2(); | |
| /*member: foo3:ignore*/ | |
| @pragma('dart2js:noInline') | |
| int foo3() => bar3(); | |
| /*member: bar1:ignore*/ | |
| int bar1() => 1; | |
| /*member: bar2:ignore*/ | |
| int bar2() => 2; | |
| /*member: bar3:ignore*/ | |
| int bar3() => 3; | |
| // All calls to `barN` are inlined because this improves size and performance. | |
| /*member: test1:function() { | |
| A.use(1, 2, 3); | |
| }*/ | |
| @pragma('dart2js:noInline') | |
| void test1() { | |
| use(bar1(), bar2(), bar3()); | |
| } | |
| // No calls to `barN` are inlined due to `disable-inlining`. | |
| /*member: test2:function() { | |
| A.use(A.bar1(), A.bar2(), A.bar3()); | |
| }*/ | |
| @pragma('dart2js:noInline') | |
| @pragma('dart2js:disable-inlining') | |
| void test2() { | |
| use(bar1(), bar2(), bar3()); | |
| } | |
| // `foo` and `bar1` are inlined. `foo2` is inlined, but the contained call to | |
| // `bar2` is not inlined due to `disable-inlining` on `foo2`. | |
| /*member: test3:function() { | |
| A.use(1, A.bar2(), A.foo3()); | |
| }*/ | |
| @pragma('dart2js:noInline') | |
| void test3() { | |
| use(foo1(), foo2(), foo3()); | |
| } | |
| // None of the `fooN` calls are inlined due to `disable-inlining`. | |
| /*member: test4:function() { | |
| A.use(A.foo1(), A.foo2(), A.foo3()); | |
| }*/ | |
| @pragma('dart2js:noInline') | |
| @pragma('dart2js:disable-inlining') | |
| void test4() { | |
| use(foo1(), foo2(), foo3()); | |
| } | |
| /*member: use:ignore*/ | |
| @pragma('dart2js:noInline') | |
| void use(int a, int b, int c) {} | |
| /*member: main:ignore*/ | |
| main() { | |
| test1(); | |
| test2(); | |
| test3(); | |
| test4(); | |
| } |