// Copyright (c) 2018, 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.

// @dart = 2.9

import 'package:expect/expect.dart';

const String realMaxInt64Value = '9223372036854775807';
const String realMinInt64Value = '-9223372036854775808';

const int i21 = 2097152;

main() {
  int minInt64Value = -1 * i21 * i21 * i21;
  minInt64Value = -9223372036854775807 - 1;
  minInt64Value = -9223372036854775808;
  minInt64Value = -(9223372036854775808);
  //                ^^^^^^^^^^^^^^^^^^^
  // [analyzer] COMPILE_TIME_ERROR.INTEGER_LITERAL_OUT_OF_RANGE
  // [cfe] The integer literal 9223372036854775808 can't be represented in 64 bits.
  minInt64Value = -(0x8000000000000000);
  minInt64Value = 0x8000000000000000;
  minInt64Value = -0x8000000000000000;

  Expect.equals('$minInt64Value', realMinInt64Value);
  Expect.equals('${minInt64Value - 1}', realMaxInt64Value);

  int maxInt64Value = 1 * i21 * i21 * i21 - 1;
  maxInt64Value = 9223372036854775807;
  maxInt64Value = 9223372036854775807;
  maxInt64Value = 9223372036854775808 - 1;
  //              ^^^^^^^^^^^^^^^^^^^
  // [analyzer] COMPILE_TIME_ERROR.INTEGER_LITERAL_OUT_OF_RANGE
  // [cfe] The integer literal 9223372036854775808 can't be represented in 64 bits.
  maxInt64Value = -9223372036854775808 - 1;
  maxInt64Value = -9223372036854775809;
  //               ^^^^^^^^^^^^^^^^^^^
  // [analyzer] COMPILE_TIME_ERROR.INTEGER_LITERAL_OUT_OF_RANGE
  // [cfe] The integer literal 9223372036854775809 can't be represented in 64 bits.
  maxInt64Value = 0x8000000000000000 - 1;
  maxInt64Value = -0x8000000000000000 - 1;
  maxInt64Value = -0x8000000000000001;
  //               ^^^^^^^^^^^^^^^^^^
  // [analyzer] COMPILE_TIME_ERROR.INTEGER_LITERAL_OUT_OF_RANGE
  // [cfe] The integer literal 0x8000000000000001 can't be represented in 64 bits.
  maxInt64Value = -(0x8000000000000001);

  Expect.equals('$maxInt64Value', realMaxInt64Value);
  Expect.equals('${maxInt64Value + 1}', realMinInt64Value);
}
