// 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.
package inlining;

class InlineConstructor {

  int a;

  @CheckDiscarded
  InlineConstructor(int a) {
    this.a = a;
  }

  InlineConstructor(long a) {
    this((int) a);
  }

  InlineConstructor(int a, int loopy) {
    this.a = a;
    // Make this too big to inline.
    if (loopy > 10) {
      throw new RuntimeException("Too big!");
    }
    for (int i = 1; i < loopy; i++) {
      this.a = this.a * i;
    }
  }

  @CheckDiscarded
  InlineConstructor() {
    this(42, 9);
  }

  static InlineConstructor create() {
    return new InlineConstructor(10L);
  }

  static InlineConstructor createMore() {
    new InlineConstructor(0, 0);
    new InlineConstructor(0, 0);
    new InlineConstructor(0, 0);
    new InlineConstructor(0, 0);
    new InlineConstructor(0, 0);
    new InlineConstructor(0, 0);
    return new InlineConstructor();
  }
}
