blob: 913dfc5c2c0cbac44116c02b0d16ce7f948546c5 [file] [log] [blame]
// This test illustrates an opportunity to remove redundant code by
// propagating inforamtion after inlining.
//
// The code below inlines `foo` twice, but we don't propagate that we already
// know from the first `foo` that `a` is an int, so the second check can be
// removed entirely.
import 'package:expect/expect.dart';
main() {
var a = nextNumber();
action(foo(a));
action(foo(a));
}
foo(x) {
if (x is! int) throw "error 1";
return x + 5 % 100;
}
@NoInline() @AssumeDynamic()
nextNumber() => int.parse('33');
@NoInline()
action(v) => print(v);