# Copyright (c) 2017, the R8 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.

# Keep the application entry point. Get rid of everything that is not
# reachable from there.
-keep public class inlining.Inlining {
  public static void main(...);
}

-alwaysinline class * {
  @inlining.AlwaysInline <methods>;
}
-neverinline class * {
  @inlining.NeverInline <methods>;
}
-keepconstantarguments class * {
  @inlining.KeepConstantArguments <methods>;
}
-nohorizontalclassmerging @inlining.NoHorizontalClassMerging class *
-nomethodstaticizing class * {
  @inlining.NoMethodStaticizing <methods>;
}
