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-}(){() → core::int}){(core::int) → core::int};
static const field core::int shiftNegative2 = 2.{core::int::>>>}(1.{core::int::unary-}(){() → core::int}){(core::int) → core::int};
static const field core::int shiftNegative3 = 2.{core::int::>>}(1.{core::int::unary-}(){() → core::int}){(core::int) → core::int};
static const field core::int modZero = 2.{core::num::%}(0){(core::num) → core::int};
static const field core::int divZero = 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){(core::num) → core::double} as{TypeError,ForNonNullableByDefault} core::int;
static const field core::int intdivZero = 2.{core::num::~/}(0){(core::num) → core::int};
static const field core::int unaryMinus = 2.{core::int::unary-}(){() → core::int};
static const field core::int unaryTilde = 2.{core::int::~}(){() → 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;
                      ^"{<invalid>}.+(2);
static const field core::int binaryPlus = 40.{core::num::+}(2){(core::num) → core::int};
static const field core::int binaryMinus = 44.{core::num::-}(2){(core::num) → core::int};
static const field core::int binaryTimes = 21.{core::num::*}(2){(core::num) → core::int};
static const field core::double binaryDiv = 84.{core::num::/}(2){(core::num) → core::double};
static const field core::int binaryTildeDiv = 84.{core::num::~/}(2){(core::num) → core::int};
static const field core::int binaryMod = 85.{core::num::%}(43){(core::num) → core::int};
static const field core::int binaryOr = 32.{core::int::|}(10){(core::int) → core::int};
static const field core::int binaryAnd = 63.{core::int::&}(106){(core::int) → core::int};
static const field core::int binaryXor = 63.{core::int::^}(21){(core::int) → core::int};
static const field core::int binaryShift1 = 21.{core::int::<<}(1){(core::int) → core::int};
static const field core::int binaryShift2 = 84.{core::int::>>>}(1){(core::int) → core::int};
static const field core::int binaryShift3 = 21.{core::int::>>>}(64){(core::int) → core::int};
static const field core::int binaryShift4 = 84.{core::int::>>}(1){(core::int) → core::int};
static const field core::bool binaryLess = 42.{core::num::<}(42){(core::num) → core::bool};
static const field core::bool binaryLessEqual = 42.{core::num::<=}(42){(core::num) → core::bool};
static const field core::bool binaryGreaterEqual = 42.{core::num::>=}(42){(core::num) → core::bool};
static const field core::bool binaryGreater = 42.{core::num::>}(42){(core::num) → core::bool};
static const field core::int doubleTruncateDiv = 84.2.{core::double::~/}(2){(core::num) → core::int};
static const field core::int doubleTruncateDivZero = 84.2.{core::double::~/}(0){(core::num) → core::int};
static const field dynamic nil = null;
static const field core::int doubleTruncateDivNull = 84.2.{core::double::~/}(self::nil as{TypeError,ForDynamic,ForNonNullableByDefault} core::num){(core::num) → core::int};
static const field core::double doubleNan = 0.{core::num::/}(0){(core::num) → core::double};
static const field core::int doubleTruncateDivNaN = 84.2.{core::double::~/}(self::doubleNan){(core::num) → core::int};
static method main() → dynamic
  ;


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