library /*isNonNullableByDefault*/;
//
// Problems in library:
//
// pkg/front_end/testcases/general/constants/number_folds.dart:13:23: Error: '+' is not a prefix operator.
// Try removing '+'.
// const int unaryPlus = +2;
//                       ^
//
// pkg/front_end/testcases/general/constants/number_folds.dart:9:23: Error: A value of type 'double' can't be assigned to a variable of type 'int'.
// const int divZero = 2 / 0;
//                       ^
//
import self as self;
import "dart:core" as core;

static const field core::int shiftNegative1 = 2.{core::int::<<}(1.{core::int::unary-}());
static const field core::int shiftNegative2 = 2.{core::int::>>>}(1.{core::int::unary-}());
static const field core::int shiftNegative3 = 2.{core::int::>>}(1.{core::int::unary-}());
static const field core::int modZero = 2.{core::num::%}(0);
static const field core::int divZero = let final Never #t1 = invalid-expression "pkg/front_end/testcases/general/constants/number_folds.dart:9:23: Error: A value of type 'double' can't be assigned to a variable of type 'int'.
const int divZero = 2 / 0;
                      ^" in 2.{core::num::/}(0) as{TypeError,ForNonNullableByDefault} core::int;
static const field core::int intdivZero = 2.{core::num::~/}(0);
static const field core::int unaryMinus = 2.{core::int::unary-}();
static const field core::int unaryTilde = 2.{core::int::~}();
static const field core::int unaryPlus = invalid-expression "pkg/front_end/testcases/general/constants/number_folds.dart:13:23: Error: This couldn't be parsed.
const int unaryPlus = +2;
                      ^".+(2) as{TypeError,ForDynamic,ForNonNullableByDefault} core::int;
static const field core::int binaryPlus = 40.{core::num::+}(2);
static const field core::int binaryMinus = 44.{core::num::-}(2);
static const field core::int binaryTimes = 21.{core::num::*}(2);
static const field core::double binaryDiv = 84.{core::num::/}(2);
static const field core::int binaryTildeDiv = 84.{core::num::~/}(2);
static const field core::int binaryMod = 85.{core::num::%}(43);
static const field core::int binaryOr = 32.{core::int::|}(10);
static const field core::int binaryAnd = 63.{core::int::&}(106);
static const field core::int binaryXor = 63.{core::int::^}(21);
static const field core::int binaryShift1 = 21.{core::int::<<}(1);
static const field core::int binaryShift2 = 84.{core::int::>>>}(1);
static const field core::int binaryShift3 = 21.{core::int::>>>}(64);
static const field core::int binaryShift4 = 84.{core::int::>>}(1);
static const field core::bool binaryLess = 42.{core::num::<}(42);
static const field core::bool binaryLessEqual = 42.{core::num::<=}(42);
static const field core::bool binaryGreaterEqual = 42.{core::num::>=}(42);
static const field core::bool binaryGreater = 42.{core::num::>}(42);
static const field core::int doubleTruncateDiv = 84.2.{core::double::~/}(2);
static const field core::int doubleTruncateDivZero = 84.2.{core::double::~/}(0);
static const field dynamic nil = null;
static const field core::int doubleTruncateDivNull = 84.2.{core::double::~/}(self::nil as{TypeError,ForDynamic,ForNonNullableByDefault} core::num);
static const field core::double doubleNan = 0.{core::num::/}(0);
static const field core::int doubleTruncateDivNaN = 84.2.{core::double::~/}(self::doubleNan);
static method main() → dynamic
  ;


Extra constant evaluation status:
Evaluated: MethodInvocation @ org-dartlang-testcase:///number_folds.dart:5:33 -> IntConstant(-1)
Evaluated: MethodInvocation @ org-dartlang-testcase:///number_folds.dart:6:34 -> IntConstant(-1)
Evaluated: MethodInvocation @ org-dartlang-testcase:///number_folds.dart:7:33 -> IntConstant(-1)
Evaluated: MethodInvocation @ org-dartlang-testcase:///number_folds.dart:9:23 -> DoubleConstant(Infinity)
Evaluated: MethodInvocation @ org-dartlang-testcase:///number_folds.dart:11:24 -> IntConstant(-2)
Evaluated: MethodInvocation @ org-dartlang-testcase:///number_folds.dart:12:24 -> IntConstant(-3)
Evaluated: MethodInvocation @ org-dartlang-testcase:///number_folds.dart:15:27 -> IntConstant(42)
Evaluated: MethodInvocation @ org-dartlang-testcase:///number_folds.dart:16:28 -> IntConstant(42)
Evaluated: MethodInvocation @ org-dartlang-testcase:///number_folds.dart:17:28 -> IntConstant(42)
Evaluated: MethodInvocation @ org-dartlang-testcase:///number_folds.dart:18:29 -> DoubleConstant(42.0)
Evaluated: MethodInvocation @ org-dartlang-testcase:///number_folds.dart:19:30 -> IntConstant(42)
Evaluated: MethodInvocation @ org-dartlang-testcase:///number_folds.dart:20:26 -> IntConstant(42)
Evaluated: MethodInvocation @ org-dartlang-testcase:///number_folds.dart:21:25 -> IntConstant(42)
Evaluated: MethodInvocation @ org-dartlang-testcase:///number_folds.dart:22:26 -> IntConstant(42)
Evaluated: MethodInvocation @ org-dartlang-testcase:///number_folds.dart:23:26 -> IntConstant(42)
Evaluated: MethodInvocation @ org-dartlang-testcase:///number_folds.dart:24:29 -> IntConstant(42)
Evaluated: MethodInvocation @ org-dartlang-testcase:///number_folds.dart:26:29 -> IntConstant(42)
Evaluated: MethodInvocation @ org-dartlang-testcase:///number_folds.dart:27:29 -> IntConstant(0)
Evaluated: MethodInvocation @ org-dartlang-testcase:///number_folds.dart:29:29 -> IntConstant(42)
Evaluated: MethodInvocation @ org-dartlang-testcase:///number_folds.dart:30:28 -> BoolConstant(false)
Evaluated: MethodInvocation @ org-dartlang-testcase:///number_folds.dart:31:33 -> BoolConstant(true)
Evaluated: MethodInvocation @ org-dartlang-testcase:///number_folds.dart:32:36 -> BoolConstant(true)
Evaluated: MethodInvocation @ org-dartlang-testcase:///number_folds.dart:33:31 -> BoolConstant(false)
Evaluated: MethodInvocation @ org-dartlang-testcase:///number_folds.dart:35:36 -> IntConstant(42)
Evaluated: AsExpression @ org-dartlang-testcase:///number_folds.dart:38:43 -> NullConstant(null)
Evaluated: MethodInvocation @ org-dartlang-testcase:///number_folds.dart:39:27 -> DoubleConstant(NaN)
Evaluated: StaticGet @ org-dartlang-testcase:///number_folds.dart:40:42 -> DoubleConstant(NaN)
Extra constant evaluation: evaluated: 39, effectively constant: 27
