library /*isNonNullableByDefault*/;
//
// Problems in library:
//
// pkg/front_end/testcases/general/constant_truncate.dart:5:14: Error: Constant evaluation error:
// const a0 = 0 ~/ 0; // error
//              ^
// pkg/front_end/testcases/general/constant_truncate.dart:5:14: Context: Binary operator '~/' on '0' requires non-zero divisor, but divisor was '0'.
// const a0 = 0 ~/ 0; // error
//              ^
// pkg/front_end/testcases/general/constant_truncate.dart:5:7: Context: While analyzing:
// const a0 = 0 ~/ 0; // error
//       ^
//
// pkg/front_end/testcases/general/constant_truncate.dart:6:16: Error: Constant evaluation error:
// const a1 = 0.0 ~/ 0; // error
//                ^
// pkg/front_end/testcases/general/constant_truncate.dart:6:16: Context: Binary operator '~/' on '0.0' requires non-zero divisor, but divisor was '0'.
// const a1 = 0.0 ~/ 0; // error
//                ^
// pkg/front_end/testcases/general/constant_truncate.dart:6:7: Context: While analyzing:
// const a1 = 0.0 ~/ 0; // error
//       ^
//
// pkg/front_end/testcases/general/constant_truncate.dart:7:17: Error: Constant evaluation error:
// const a2 = -0.0 ~/ 0; // error
//                 ^
// pkg/front_end/testcases/general/constant_truncate.dart:7:17: Context: Binary operator '~/' on '-0.0' requires non-zero divisor, but divisor was '0'.
// const a2 = -0.0 ~/ 0; // error
//                 ^
// pkg/front_end/testcases/general/constant_truncate.dart:7:7: Context: While analyzing:
// const a2 = -0.0 ~/ 0; // error
//       ^
//
// pkg/front_end/testcases/general/constant_truncate.dart:8:23: Error: Constant evaluation error:
// const a3 = double.nan ~/ 0; // error
//                       ^
// pkg/front_end/testcases/general/constant_truncate.dart:8:23: Context: Binary operator '~/' on 'NaN' requires non-zero divisor, but divisor was '0'.
// const a3 = double.nan ~/ 0; // error
//                       ^
// pkg/front_end/testcases/general/constant_truncate.dart:8:7: Context: While analyzing:
// const a3 = double.nan ~/ 0; // error
//       ^
//
// pkg/front_end/testcases/general/constant_truncate.dart:9:28: Error: Constant evaluation error:
// const a4 = double.infinity ~/ 0; // error
//                            ^
// pkg/front_end/testcases/general/constant_truncate.dart:9:28: Context: Binary operator '~/' on 'Infinity' requires non-zero divisor, but divisor was '0'.
// const a4 = double.infinity ~/ 0; // error
//                            ^
// pkg/front_end/testcases/general/constant_truncate.dart:9:7: Context: While analyzing:
// const a4 = double.infinity ~/ 0; // error
//       ^
//
// pkg/front_end/testcases/general/constant_truncate.dart:10:36: Error: Constant evaluation error:
// const a5 = double.negativeInfinity ~/ 0; // error
//                                    ^
// pkg/front_end/testcases/general/constant_truncate.dart:10:36: Context: Binary operator '~/' on '-Infinity' requires non-zero divisor, but divisor was '0'.
// const a5 = double.negativeInfinity ~/ 0; // error
//                                    ^
// pkg/front_end/testcases/general/constant_truncate.dart:10:7: Context: While analyzing:
// const a5 = double.negativeInfinity ~/ 0; // error
//       ^
//
// pkg/front_end/testcases/general/constant_truncate.dart:12:14: Error: Constant evaluation error:
// const b0 = 0 ~/ 0.0; // error
//              ^
// pkg/front_end/testcases/general/constant_truncate.dart:12:14: Context: Binary operator '~/' on '0' requires non-zero divisor, but divisor was '0'.
// const b0 = 0 ~/ 0.0; // error
//              ^
// pkg/front_end/testcases/general/constant_truncate.dart:12:7: Context: While analyzing:
// const b0 = 0 ~/ 0.0; // error
//       ^
//
// pkg/front_end/testcases/general/constant_truncate.dart:13:16: Error: Constant evaluation error:
// const b1 = 0.0 ~/ 0.0; // error
//                ^
// pkg/front_end/testcases/general/constant_truncate.dart:13:16: Context: Binary operator '~/' on '0.0' requires non-zero divisor, but divisor was '0'.
// const b1 = 0.0 ~/ 0.0; // error
//                ^
// pkg/front_end/testcases/general/constant_truncate.dart:13:7: Context: While analyzing:
// const b1 = 0.0 ~/ 0.0; // error
//       ^
//
// pkg/front_end/testcases/general/constant_truncate.dart:14:17: Error: Constant evaluation error:
// const b2 = -0.0 ~/ 0.0; // error
//                 ^
// pkg/front_end/testcases/general/constant_truncate.dart:14:17: Context: Binary operator '~/' on '-0.0' requires non-zero divisor, but divisor was '0'.
// const b2 = -0.0 ~/ 0.0; // error
//                 ^
// pkg/front_end/testcases/general/constant_truncate.dart:14:7: Context: While analyzing:
// const b2 = -0.0 ~/ 0.0; // error
//       ^
//
// pkg/front_end/testcases/general/constant_truncate.dart:15:23: Error: Constant evaluation error:
// const b3 = double.nan ~/ 0.0; // error
//                       ^
// pkg/front_end/testcases/general/constant_truncate.dart:15:23: Context: Binary operator '~/' on 'NaN' requires non-zero divisor, but divisor was '0'.
// const b3 = double.nan ~/ 0.0; // error
//                       ^
// pkg/front_end/testcases/general/constant_truncate.dart:15:7: Context: While analyzing:
// const b3 = double.nan ~/ 0.0; // error
//       ^
//
// pkg/front_end/testcases/general/constant_truncate.dart:16:28: Error: Constant evaluation error:
// const b4 = double.infinity ~/ 0.0; // error
//                            ^
// pkg/front_end/testcases/general/constant_truncate.dart:16:28: Context: Binary operator '~/' on 'Infinity' requires non-zero divisor, but divisor was '0'.
// const b4 = double.infinity ~/ 0.0; // error
//                            ^
// pkg/front_end/testcases/general/constant_truncate.dart:16:7: Context: While analyzing:
// const b4 = double.infinity ~/ 0.0; // error
//       ^
//
// pkg/front_end/testcases/general/constant_truncate.dart:17:36: Error: Constant evaluation error:
// const b5 = double.negativeInfinity ~/ 0.0; // error
//                                    ^
// pkg/front_end/testcases/general/constant_truncate.dart:17:36: Context: Binary operator '~/' on '-Infinity' requires non-zero divisor, but divisor was '0'.
// const b5 = double.negativeInfinity ~/ 0.0; // error
//                                    ^
// pkg/front_end/testcases/general/constant_truncate.dart:17:7: Context: While analyzing:
// const b5 = double.negativeInfinity ~/ 0.0; // error
//       ^
//
// pkg/front_end/testcases/general/constant_truncate.dart:19:14: Error: Constant evaluation error:
// const c0 = 0 ~/ -0.0; // error
//              ^
// pkg/front_end/testcases/general/constant_truncate.dart:19:14: Context: Binary operator '~/' on '0' requires non-zero divisor, but divisor was '0'.
// const c0 = 0 ~/ -0.0; // error
//              ^
// pkg/front_end/testcases/general/constant_truncate.dart:19:7: Context: While analyzing:
// const c0 = 0 ~/ -0.0; // error
//       ^
//
// pkg/front_end/testcases/general/constant_truncate.dart:20:16: Error: Constant evaluation error:
// const c1 = 0.0 ~/ -0.0; // error
//                ^
// pkg/front_end/testcases/general/constant_truncate.dart:20:16: Context: Binary operator '~/' on '0.0' requires non-zero divisor, but divisor was '0'.
// const c1 = 0.0 ~/ -0.0; // error
//                ^
// pkg/front_end/testcases/general/constant_truncate.dart:20:7: Context: While analyzing:
// const c1 = 0.0 ~/ -0.0; // error
//       ^
//
// pkg/front_end/testcases/general/constant_truncate.dart:21:17: Error: Constant evaluation error:
// const c2 = -0.0 ~/ -0.0; // error
//                 ^
// pkg/front_end/testcases/general/constant_truncate.dart:21:17: Context: Binary operator '~/' on '-0.0' requires non-zero divisor, but divisor was '0'.
// const c2 = -0.0 ~/ -0.0; // error
//                 ^
// pkg/front_end/testcases/general/constant_truncate.dart:21:7: Context: While analyzing:
// const c2 = -0.0 ~/ -0.0; // error
//       ^
//
// pkg/front_end/testcases/general/constant_truncate.dart:22:23: Error: Constant evaluation error:
// const c3 = double.nan ~/ -0.0; // error
//                       ^
// pkg/front_end/testcases/general/constant_truncate.dart:22:23: Context: Binary operator '~/' on 'NaN' requires non-zero divisor, but divisor was '0'.
// const c3 = double.nan ~/ -0.0; // error
//                       ^
// pkg/front_end/testcases/general/constant_truncate.dart:22:7: Context: While analyzing:
// const c3 = double.nan ~/ -0.0; // error
//       ^
//
// pkg/front_end/testcases/general/constant_truncate.dart:23:28: Error: Constant evaluation error:
// const c4 = double.infinity ~/ -0.0; // error
//                            ^
// pkg/front_end/testcases/general/constant_truncate.dart:23:28: Context: Binary operator '~/' on 'Infinity' requires non-zero divisor, but divisor was '0'.
// const c4 = double.infinity ~/ -0.0; // error
//                            ^
// pkg/front_end/testcases/general/constant_truncate.dart:23:7: Context: While analyzing:
// const c4 = double.infinity ~/ -0.0; // error
//       ^
//
// pkg/front_end/testcases/general/constant_truncate.dart:24:36: Error: Constant evaluation error:
// const c5 = double.negativeInfinity ~/ -0.0; // error
//                                    ^
// pkg/front_end/testcases/general/constant_truncate.dart:24:36: Context: Binary operator '~/' on '-Infinity' requires non-zero divisor, but divisor was '0'.
// const c5 = double.negativeInfinity ~/ -0.0; // error
//                                    ^
// pkg/front_end/testcases/general/constant_truncate.dart:24:7: Context: While analyzing:
// const c5 = double.negativeInfinity ~/ -0.0; // error
//       ^
//
// pkg/front_end/testcases/general/constant_truncate.dart:26:14: Error: Constant evaluation error:
// const d0 = 0 ~/ double.nan; // error
//              ^
// pkg/front_end/testcases/general/constant_truncate.dart:26:14: Context: Binary operator '0 ~/ NaN' results is Infinity or NaN.
// const d0 = 0 ~/ double.nan; // error
//              ^
// pkg/front_end/testcases/general/constant_truncate.dart:26:7: Context: While analyzing:
// const d0 = 0 ~/ double.nan; // error
//       ^
//
// pkg/front_end/testcases/general/constant_truncate.dart:27:16: Error: Constant evaluation error:
// const d1 = 0.0 ~/ double.nan; // error
//                ^
// pkg/front_end/testcases/general/constant_truncate.dart:27:16: Context: Binary operator '0.0 ~/ NaN' results is Infinity or NaN.
// const d1 = 0.0 ~/ double.nan; // error
//                ^
// pkg/front_end/testcases/general/constant_truncate.dart:27:7: Context: While analyzing:
// const d1 = 0.0 ~/ double.nan; // error
//       ^
//
// pkg/front_end/testcases/general/constant_truncate.dart:28:17: Error: Constant evaluation error:
// const d2 = -0.0 ~/ double.nan; // error
//                 ^
// pkg/front_end/testcases/general/constant_truncate.dart:28:17: Context: Binary operator '-0.0 ~/ NaN' results is Infinity or NaN.
// const d2 = -0.0 ~/ double.nan; // error
//                 ^
// pkg/front_end/testcases/general/constant_truncate.dart:28:7: Context: While analyzing:
// const d2 = -0.0 ~/ double.nan; // error
//       ^
//
// pkg/front_end/testcases/general/constant_truncate.dart:29:23: Error: Constant evaluation error:
// const d3 = double.nan ~/ double.nan; // error
//                       ^
// pkg/front_end/testcases/general/constant_truncate.dart:29:23: Context: Binary operator 'NaN ~/ NaN' results is Infinity or NaN.
// const d3 = double.nan ~/ double.nan; // error
//                       ^
// pkg/front_end/testcases/general/constant_truncate.dart:29:7: Context: While analyzing:
// const d3 = double.nan ~/ double.nan; // error
//       ^
//
// pkg/front_end/testcases/general/constant_truncate.dart:30:28: Error: Constant evaluation error:
// const d4 = double.infinity ~/ double.nan; // error
//                            ^
// pkg/front_end/testcases/general/constant_truncate.dart:30:28: Context: Binary operator 'Infinity ~/ NaN' results is Infinity or NaN.
// const d4 = double.infinity ~/ double.nan; // error
//                            ^
// pkg/front_end/testcases/general/constant_truncate.dart:30:7: Context: While analyzing:
// const d4 = double.infinity ~/ double.nan; // error
//       ^
//
// pkg/front_end/testcases/general/constant_truncate.dart:31:36: Error: Constant evaluation error:
// const d5 = double.negativeInfinity ~/ double.nan; // error
//                                    ^
// pkg/front_end/testcases/general/constant_truncate.dart:31:36: Context: Binary operator '-Infinity ~/ NaN' results is Infinity or NaN.
// const d5 = double.negativeInfinity ~/ double.nan; // error
//                                    ^
// pkg/front_end/testcases/general/constant_truncate.dart:31:7: Context: While analyzing:
// const d5 = double.negativeInfinity ~/ double.nan; // error
//       ^
//
// pkg/front_end/testcases/general/constant_truncate.dart:36:23: Error: Constant evaluation error:
// const e3 = double.nan ~/ double.infinity; // error
//                       ^
// pkg/front_end/testcases/general/constant_truncate.dart:36:23: Context: Binary operator 'NaN ~/ Infinity' results is Infinity or NaN.
// const e3 = double.nan ~/ double.infinity; // error
//                       ^
// pkg/front_end/testcases/general/constant_truncate.dart:36:7: Context: While analyzing:
// const e3 = double.nan ~/ double.infinity; // error
//       ^
//
// pkg/front_end/testcases/general/constant_truncate.dart:37:28: Error: Constant evaluation error:
// const e4 = double.infinity ~/ double.infinity; // error
//                            ^
// pkg/front_end/testcases/general/constant_truncate.dart:37:28: Context: Binary operator 'Infinity ~/ Infinity' results is Infinity or NaN.
// const e4 = double.infinity ~/ double.infinity; // error
//                            ^
// pkg/front_end/testcases/general/constant_truncate.dart:37:7: Context: While analyzing:
// const e4 = double.infinity ~/ double.infinity; // error
//       ^
//
// pkg/front_end/testcases/general/constant_truncate.dart:38:36: Error: Constant evaluation error:
// const e5 = double.negativeInfinity ~/ double.infinity; // error
//                                    ^
// pkg/front_end/testcases/general/constant_truncate.dart:38:36: Context: Binary operator '-Infinity ~/ Infinity' results is Infinity or NaN.
// const e5 = double.negativeInfinity ~/ double.infinity; // error
//                                    ^
// pkg/front_end/testcases/general/constant_truncate.dart:38:7: Context: While analyzing:
// const e5 = double.negativeInfinity ~/ double.infinity; // error
//       ^
//
// pkg/front_end/testcases/general/constant_truncate.dart:43:23: Error: Constant evaluation error:
// const f3 = double.nan ~/ double.negativeInfinity; // error
//                       ^
// pkg/front_end/testcases/general/constant_truncate.dart:43:23: Context: Binary operator 'NaN ~/ -Infinity' results is Infinity or NaN.
// const f3 = double.nan ~/ double.negativeInfinity; // error
//                       ^
// pkg/front_end/testcases/general/constant_truncate.dart:43:7: Context: While analyzing:
// const f3 = double.nan ~/ double.negativeInfinity; // error
//       ^
//
// pkg/front_end/testcases/general/constant_truncate.dart:44:28: Error: Constant evaluation error:
// const f4 = double.infinity ~/ double.negativeInfinity; // error
//                            ^
// pkg/front_end/testcases/general/constant_truncate.dart:44:28: Context: Binary operator 'Infinity ~/ -Infinity' results is Infinity or NaN.
// const f4 = double.infinity ~/ double.negativeInfinity; // error
//                            ^
// pkg/front_end/testcases/general/constant_truncate.dart:44:7: Context: While analyzing:
// const f4 = double.infinity ~/ double.negativeInfinity; // error
//       ^
//
// pkg/front_end/testcases/general/constant_truncate.dart:45:36: Error: Constant evaluation error:
// const f5 = double.negativeInfinity ~/ double.negativeInfinity; // error
//                                    ^
// pkg/front_end/testcases/general/constant_truncate.dart:45:36: Context: Binary operator '-Infinity ~/ -Infinity' results is Infinity or NaN.
// const f5 = double.negativeInfinity ~/ double.negativeInfinity; // error
//                                    ^
// pkg/front_end/testcases/general/constant_truncate.dart:45:7: Context: While analyzing:
// const f5 = double.negativeInfinity ~/ double.negativeInfinity; // error
//       ^
//
import self as self;
import "dart:core" as core;

static const field core::int a0 = invalid-expression "Binary operator '~/' on '0' requires non-zero divisor, but divisor was '0'.";
static const field core::int a1 = invalid-expression "Binary operator '~/' on '0.0' requires non-zero divisor, but divisor was '0'.";
static const field core::int a2 = invalid-expression "Binary operator '~/' on '-0.0' requires non-zero divisor, but divisor was '0'.";
static const field core::int a3 = invalid-expression "Binary operator '~/' on 'NaN' requires non-zero divisor, but divisor was '0'.";
static const field core::int a4 = invalid-expression "Binary operator '~/' on 'Infinity' requires non-zero divisor, but divisor was '0'.";
static const field core::int a5 = invalid-expression "Binary operator '~/' on '-Infinity' requires non-zero divisor, but divisor was '0'.";
static const field core::int b0 = invalid-expression "Binary operator '~/' on '0' requires non-zero divisor, but divisor was '0'.";
static const field core::int b1 = invalid-expression "Binary operator '~/' on '0.0' requires non-zero divisor, but divisor was '0'.";
static const field core::int b2 = invalid-expression "Binary operator '~/' on '-0.0' requires non-zero divisor, but divisor was '0'.";
static const field core::int b3 = invalid-expression "Binary operator '~/' on 'NaN' requires non-zero divisor, but divisor was '0'.";
static const field core::int b4 = invalid-expression "Binary operator '~/' on 'Infinity' requires non-zero divisor, but divisor was '0'.";
static const field core::int b5 = invalid-expression "Binary operator '~/' on '-Infinity' requires non-zero divisor, but divisor was '0'.";
static const field core::int c0 = invalid-expression "Binary operator '~/' on '0' requires non-zero divisor, but divisor was '0'.";
static const field core::int c1 = invalid-expression "Binary operator '~/' on '0.0' requires non-zero divisor, but divisor was '0'.";
static const field core::int c2 = invalid-expression "Binary operator '~/' on '-0.0' requires non-zero divisor, but divisor was '0'.";
static const field core::int c3 = invalid-expression "Binary operator '~/' on 'NaN' requires non-zero divisor, but divisor was '0'.";
static const field core::int c4 = invalid-expression "Binary operator '~/' on 'Infinity' requires non-zero divisor, but divisor was '0'.";
static const field core::int c5 = invalid-expression "Binary operator '~/' on '-Infinity' requires non-zero divisor, but divisor was '0'.";
static const field core::int d0 = invalid-expression "Binary operator '0 ~/ NaN' results is Infinity or NaN.";
static const field core::int d1 = invalid-expression "Binary operator '0.0 ~/ NaN' results is Infinity or NaN.";
static const field core::int d2 = invalid-expression "Binary operator '-0.0 ~/ NaN' results is Infinity or NaN.";
static const field core::int d3 = invalid-expression "Binary operator 'NaN ~/ NaN' results is Infinity or NaN.";
static const field core::int d4 = invalid-expression "Binary operator 'Infinity ~/ NaN' results is Infinity or NaN.";
static const field core::int d5 = invalid-expression "Binary operator '-Infinity ~/ NaN' results is Infinity or NaN.";
static const field core::int e0 = #C1;
static const field core::int e1 = #C1;
static const field core::int e2 = #C1;
static const field core::int e3 = invalid-expression "Binary operator 'NaN ~/ Infinity' results is Infinity or NaN.";
static const field core::int e4 = invalid-expression "Binary operator 'Infinity ~/ Infinity' results is Infinity or NaN.";
static const field core::int e5 = invalid-expression "Binary operator '-Infinity ~/ Infinity' results is Infinity or NaN.";
static const field core::int f0 = #C1;
static const field core::int f1 = #C1;
static const field core::int f2 = #C1;
static const field core::int f3 = invalid-expression "Binary operator 'NaN ~/ -Infinity' results is Infinity or NaN.";
static const field core::int f4 = invalid-expression "Binary operator 'Infinity ~/ -Infinity' results is Infinity or NaN.";
static const field core::int f5 = invalid-expression "Binary operator '-Infinity ~/ -Infinity' results is Infinity or NaN.";
static method main() → dynamic {
  self::test(0, 0, () → core::int => invalid-expression "Binary operator '~/' on '0' requires non-zero divisor, but divisor was '0'.");
  self::test(0.0, 0, () → core::int => invalid-expression "Binary operator '~/' on '0.0' requires non-zero divisor, but divisor was '0'.");
  self::test(0.0.{core::double::unary-}(){() → core::double}, 0, () → core::int => invalid-expression "Binary operator '~/' on '-0.0' requires non-zero divisor, but divisor was '0'.");
  self::test(#C2, 0, () → core::int => invalid-expression "Binary operator '~/' on 'NaN' requires non-zero divisor, but divisor was '0'.");
  self::test(#C3, 0, () → core::int => invalid-expression "Binary operator '~/' on 'Infinity' requires non-zero divisor, but divisor was '0'.");
  self::test(#C4, 0, () → core::int => invalid-expression "Binary operator '~/' on '-Infinity' requires non-zero divisor, but divisor was '0'.");
  self::test(0, 0.0, () → core::int => invalid-expression "Binary operator '~/' on '0' requires non-zero divisor, but divisor was '0'.");
  self::test(0.0, 0.0, () → core::int => invalid-expression "Binary operator '~/' on '0.0' requires non-zero divisor, but divisor was '0'.");
  self::test(0.0.{core::double::unary-}(){() → core::double}, 0.0, () → core::int => invalid-expression "Binary operator '~/' on '-0.0' requires non-zero divisor, but divisor was '0'.");
  self::test(#C2, 0.0, () → core::int => invalid-expression "Binary operator '~/' on 'NaN' requires non-zero divisor, but divisor was '0'.");
  self::test(#C3, 0.0, () → core::int => invalid-expression "Binary operator '~/' on 'Infinity' requires non-zero divisor, but divisor was '0'.");
  self::test(#C4, 0.0, () → core::int => invalid-expression "Binary operator '~/' on '-Infinity' requires non-zero divisor, but divisor was '0'.");
  self::test(0, 0.0.{core::double::unary-}(){() → core::double}, () → core::int => invalid-expression "Binary operator '~/' on '0' requires non-zero divisor, but divisor was '0'.");
  self::test(0.0, 0.0.{core::double::unary-}(){() → core::double}, () → core::int => invalid-expression "Binary operator '~/' on '0.0' requires non-zero divisor, but divisor was '0'.");
  self::test(0.0.{core::double::unary-}(){() → core::double}, 0.0.{core::double::unary-}(){() → core::double}, () → core::int => invalid-expression "Binary operator '~/' on '-0.0' requires non-zero divisor, but divisor was '0'.");
  self::test(#C2, 0.0.{core::double::unary-}(){() → core::double}, () → core::int => invalid-expression "Binary operator '~/' on 'NaN' requires non-zero divisor, but divisor was '0'.");
  self::test(#C3, 0.0.{core::double::unary-}(){() → core::double}, () → core::int => invalid-expression "Binary operator '~/' on 'Infinity' requires non-zero divisor, but divisor was '0'.");
  self::test(#C4, 0.0.{core::double::unary-}(){() → core::double}, () → core::int => invalid-expression "Binary operator '~/' on '-Infinity' requires non-zero divisor, but divisor was '0'.");
  self::test(0, #C2, () → core::int => invalid-expression "Binary operator '0 ~/ NaN' results is Infinity or NaN.");
  self::test(0.0, #C2, () → core::int => invalid-expression "Binary operator '0.0 ~/ NaN' results is Infinity or NaN.");
  self::test(0.0.{core::double::unary-}(){() → core::double}, #C2, () → core::int => invalid-expression "Binary operator '-0.0 ~/ NaN' results is Infinity or NaN.");
  self::test(#C2, #C2, () → core::int => invalid-expression "Binary operator 'NaN ~/ NaN' results is Infinity or NaN.");
  self::test(#C3, #C2, () → core::int => invalid-expression "Binary operator 'Infinity ~/ NaN' results is Infinity or NaN.");
  self::test(#C4, #C2, () → core::int => invalid-expression "Binary operator '-Infinity ~/ NaN' results is Infinity or NaN.");
  self::test(0, #C3, () → core::int => #C1);
  self::test(0.0, #C3, () → core::int => #C1);
  self::test(0.0.{core::double::unary-}(){() → core::double}, #C3, () → core::int => #C1);
  self::test(#C2, #C3, () → core::int => invalid-expression "Binary operator 'NaN ~/ Infinity' results is Infinity or NaN.");
  self::test(#C3, #C3, () → core::int => invalid-expression "Binary operator 'Infinity ~/ Infinity' results is Infinity or NaN.");
  self::test(#C4, #C3, () → core::int => invalid-expression "Binary operator '-Infinity ~/ Infinity' results is Infinity or NaN.");
  self::test(0, #C4, () → core::int => #C1);
  self::test(0.0, #C4, () → core::int => #C1);
  self::test(0.0.{core::double::unary-}(){() → core::double}, #C4, () → core::int => #C1);
  self::test(#C2, #C4, () → core::int => invalid-expression "Binary operator 'NaN ~/ -Infinity' results is Infinity or NaN.");
  self::test(#C3, #C4, () → core::int => invalid-expression "Binary operator 'Infinity ~/ -Infinity' results is Infinity or NaN.");
  self::test(#C4, #C4, () → core::int => invalid-expression "Binary operator '-Infinity ~/ -Infinity' results is Infinity or NaN.");
}
static method test(core::num a, core::num b, () → core::num f) → void {
  core::num result;
  try {
    result = a.{core::num::~/}(b){(core::num) → core::int};
    core::print("${a} ~/ ${b} = ${result}");
  }
  on core::Object catch(final core::Object e) {
    core::print("${a} ~/ ${b} throws ${e}");
    self::throws(f);
    return;
  }
  self::expect(f(){() → core::num}, result);
}
static method expect(dynamic expected, dynamic actual) → void {
  if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual)) {
    throw "Expected ${expected}, actual ${actual}";
  }
}
static method throws(() → core::num f) → void {
  try {
    f(){() → core::num};
  }
  on core::Object catch(final core::Object e) {
    return;
  }
  throw "Expected exception";
}

constants  {
  #C1 = 0
  #C2 = NaN
  #C3 = Infinity
  #C4 = -Infinity
}

Extra constant evaluation status:
Evaluated: InstanceInvocation @ org-dartlang-testcase:///constant_truncate.dart:50:8 -> DoubleConstant(-0.0)
Evaluated: InstanceInvocation @ org-dartlang-testcase:///constant_truncate.dart:57:8 -> DoubleConstant(-0.0)
Evaluated: InstanceInvocation @ org-dartlang-testcase:///constant_truncate.dart:62:11 -> DoubleConstant(-0.0)
Evaluated: InstanceInvocation @ org-dartlang-testcase:///constant_truncate.dart:63:13 -> DoubleConstant(-0.0)
Evaluated: InstanceInvocation @ org-dartlang-testcase:///constant_truncate.dart:64:8 -> DoubleConstant(-0.0)
Evaluated: InstanceInvocation @ org-dartlang-testcase:///constant_truncate.dart:64:14 -> DoubleConstant(-0.0)
Evaluated: InstanceInvocation @ org-dartlang-testcase:///constant_truncate.dart:65:20 -> DoubleConstant(-0.0)
Evaluated: InstanceInvocation @ org-dartlang-testcase:///constant_truncate.dart:66:25 -> DoubleConstant(-0.0)
Evaluated: InstanceInvocation @ org-dartlang-testcase:///constant_truncate.dart:67:33 -> DoubleConstant(-0.0)
Evaluated: InstanceInvocation @ org-dartlang-testcase:///constant_truncate.dart:71:8 -> DoubleConstant(-0.0)
Evaluated: InstanceInvocation @ org-dartlang-testcase:///constant_truncate.dart:78:8 -> DoubleConstant(-0.0)
Evaluated: InstanceInvocation @ org-dartlang-testcase:///constant_truncate.dart:85:8 -> DoubleConstant(-0.0)
Extra constant evaluation: evaluated: 115, effectively constant: 12
