Add tests for int literal as double value.
Change-Id: Ic4f76280f50f8aa82228cf9e694881eff3edcaef
Reviewed-on: https://dart-review.googlesource.com/61520
Commit-Queue: Lasse R.H. Nielsen <lrn@google.com>
Reviewed-by: Erik Ernst <eernst@google.com>
diff --git a/tests/language_2/double_literals/double_literal_coercion_error_test.dart b/tests/language_2/double_literals/double_literal_coercion_error_test.dart
new file mode 100644
index 0000000..89d873f
--- /dev/null
+++ b/tests/language_2/double_literals/double_literal_coercion_error_test.dart
@@ -0,0 +1,295 @@
+// 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.
+
+// Introduces a context with double as type.
+void notDouble([double value]) {
+ if (value != null) throw "unreachable";
+}
+
+main() {
+ notDouble(
+ // Large decimal numbers which are not representable as doubles.
+ 9007199254740993, // 2^53+2^0 //# 001: compile-time error
+ 18014398509481983, // 2^54-2^0 //# 002: compile-time error
+ 18014398509481985, // 2^54+2^0 //# 003: compile-time error
+ 18014398509481986, // 2^54+2^1 //# 004: compile-time error
+ 4611686018427387903, // 2^62-2^0 //# 005: compile-time error
+ 4611686018427387902, // 2^62-2^1 //# 006: compile-time error
+ 4611686018427387900, // 2^62-2^2 //# 007: compile-time error
+ 4611686018427387896, // 2^62-2^3 //# 008: compile-time error
+ 4611686018427387888, // 2^62-2^4 //# 009: compile-time error
+ 4611686018427387872, // 2^62-2^5 //# 010: compile-time error
+ 4611686018427387840, // 2^62-2^6 //# 011: compile-time error
+ 4611686018427387776, // 2^62-2^7 //# 012: compile-time error
+ 4611686018427387648, // 2^62-2^8 //# 013: compile-time error
+ 4611686018427387905, // 2^62+2^0 //# 014: compile-time error
+ 4611686018427387906, // 2^62+2^1 //# 015: compile-time error
+ 4611686018427387908, // 2^62+2^2 //# 016: compile-time error
+ 4611686018427387912, // 2^62+2^3 //# 017: compile-time error
+ 4611686018427387920, // 2^62+2^4 //# 018: compile-time error
+ 4611686018427387936, // 2^62+2^5 //# 019: compile-time error
+ 4611686018427387968, // 2^62+2^6 //# 020: compile-time error
+ 4611686018427388032, // 2^62+2^7 //# 021: compile-time error
+ 4611686018427388160, // 2^62+2^8 //# 022: compile-time error
+ 4611686018427388416, // 2^62+2^9 //# 023: compile-time error
+ 9223372036854775807, // 2^63-2^0 //# 024: compile-time error
+ 9223372036854775806, // 2^63-2^1 //# 025: compile-time error
+ 9223372036854775804, // 2^63-2^2 //# 026: compile-time error
+ 9223372036854775800, // 2^63-2^3 //# 027: compile-time error
+ 9223372036854775792, // 2^63-2^4 //# 028: compile-time error
+ 9223372036854775776, // 2^63-2^5 //# 029: compile-time error
+ 9223372036854775744, // 2^63-2^6 //# 030: compile-time error
+ 9223372036854775680, // 2^63-2^7 //# 031: compile-time error
+ 9223372036854775552, // 2^63-2^8 //# 032: compile-time error
+ 9223372036854775296, // 2^63-2^9 //# 033: compile-time error
+ 9223372036854775809, // 2^63+2^0 //# 034: compile-time error
+ 9223372036854775810, // 2^63+2^1 //# 035: compile-time error
+ 9223372036854775812, // 2^63+2^2 //# 036: compile-time error
+ 9223372036854775816, // 2^63+2^3 //# 037: compile-time error
+ 9223372036854775824, // 2^63+2^4 //# 038: compile-time error
+ 9223372036854775840, // 2^63+2^5 //# 039: compile-time error
+ 9223372036854775872, // 2^63+2^6 //# 040: compile-time error
+ 9223372036854775936, // 2^63+2^7 //# 041: compile-time error
+ 9223372036854776064, // 2^63+2^8 //# 042: compile-time error
+ 9223372036854776320, // 2^63+2^9 //# 043: compile-time error
+ 9223372036854776832, // 2^63+2^10 //# 044: compile-time error
+ 18446744073709551615, // 2^64-2^0 //# 045: compile-time error
+ 18446744073709551614, // 2^64-2^1 //# 046: compile-time error
+ 18446744073709551612, // 2^64-2^2 //# 047: compile-time error
+ 18446744073709551608, // 2^64-2^3 //# 048: compile-time error
+ 18446744073709551600, // 2^64-2^4 //# 049: compile-time error
+ 18446744073709551584, // 2^64-2^5 //# 050: compile-time error
+ 18446744073709551552, // 2^64-2^6 //# 051: compile-time error
+ 18446744073709551488, // 2^64-2^7 //# 052: compile-time error
+ 18446744073709551360, // 2^64-2^8 //# 053: compile-time error
+ 18446744073709551104, // 2^64-2^9 //# 054: compile-time error
+ 18446744073709550592, // 2^64-2^10 //# 055: compile-time error
+ 18446744073709551617, // 2^64+2^0 //# 056: compile-time error
+ 18446744073709551618, // 2^64+2^1 //# 057: compile-time error
+ 18446744073709551620, // 2^64+2^2 //# 058: compile-time error
+ 18446744073709551624, // 2^64+2^3 //# 059: compile-time error
+ 18446744073709551632, // 2^64+2^4 //# 060: compile-time error
+ 18446744073709551648, // 2^64+2^5 //# 061: compile-time error
+ 18446744073709551680, // 2^64+2^6 //# 062: compile-time error
+ 18446744073709551744, // 2^64+2^7 //# 063: compile-time error
+ 18446744073709551872, // 2^64+2^8 //# 064: compile-time error
+ 18446744073709552128, // 2^64+2^9 //# 065: compile-time error
+ 18446744073709552640, // 2^64+2^10 //# 066: compile-time error
+ 18446744073709553664, // 2^64+2^11 //# 067: compile-time error
+ 179769313486231570814527423731704356798070567525844996598917476803157260780028538760589558632766878171540458953514382464234321326889464182768467546703537516986049910576551282076245490090389328944075868508455133942304583236903222948165808559332123348274797826204144723168738177180919299881250404026184124858367, // maxValue - 1 //# 068 : compile-time error
+ 179769313486231570814527423731704356798070567525844996598917476803157260780028538760589558632766878171540458953514382464234321326889464182768467546703537516986049910576551282076245490090389328944075868508455133942304583236903222948165808559332123348274797826204144723168738177180919299881250404026184124858369, // maxValue + 1 //# 069 : compile-time error
+
+ // Negative numbers too.
+ -9007199254740993, // -(2^53+2^0) //# 070: compile-time error
+ -18014398509481983, // -(2^54-2^0) //# 071: compile-time error
+ -18014398509481985, // -(2^54+2^0) //# 072: compile-time error
+ -18014398509481986, // -(2^54+2^1) //# 073: compile-time error
+ -4611686018427387903, // -(2^62-2^0) //# 074: compile-time error
+ -4611686018427387902, // -(2^62-2^1) //# 075: compile-time error
+ -4611686018427387900, // -(2^62-2^2) //# 076: compile-time error
+ -4611686018427387896, // -(2^62-2^3) //# 077: compile-time error
+ -4611686018427387888, // -(2^62-2^4) //# 078: compile-time error
+ -4611686018427387872, // -(2^62-2^5) //# 079: compile-time error
+ -4611686018427387840, // -(2^62-2^6) //# 080: compile-time error
+ -4611686018427387776, // -(2^62-2^7) //# 081: compile-time error
+ -4611686018427387648, // -(2^62-2^8) //# 082: compile-time error
+ -4611686018427387905, // -(2^62+2^0) //# 083: compile-time error
+ -4611686018427387906, // -(2^62+2^1) //# 084: compile-time error
+ -4611686018427387908, // -(2^62+2^2) //# 085: compile-time error
+ -4611686018427387912, // -(2^62+2^3) //# 086: compile-time error
+ -4611686018427387920, // -(2^62+2^4) //# 087: compile-time error
+ -4611686018427387936, // -(2^62+2^5) //# 088: compile-time error
+ -4611686018427387968, // -(2^62+2^6) //# 089: compile-time error
+ -4611686018427388032, // -(2^62+2^7) //# 090: compile-time error
+ -4611686018427388160, // -(2^62+2^8) //# 091: compile-time error
+ -4611686018427388416, // -(2^62+2^9) //# 092: compile-time error
+ -9223372036854775807, // -(2^63-2^0) //# 093: compile-time error
+ -9223372036854775806, // -(2^63-2^1) //# 094: compile-time error
+ -9223372036854775804, // -(2^63-2^2) //# 095: compile-time error
+ -9223372036854775800, // -(2^63-2^3) //# 096: compile-time error
+ -9223372036854775792, // -(2^63-2^4) //# 097: compile-time error
+ -9223372036854775776, // -(2^63-2^5) //# 098: compile-time error
+ -9223372036854775744, // -(2^63-2^6) //# 099: compile-time error
+ -9223372036854775680, // -(2^63-2^7) //# 100: compile-time error
+ -9223372036854775552, // -(2^63-2^8) //# 101: compile-time error
+ -9223372036854775296, // -(2^63-2^9) //# 102: compile-time error
+ -9223372036854775809, // -(2^63+2^0) //# 103: compile-time error
+ -9223372036854775810, // -(2^63+2^1) //# 104: compile-time error
+ -9223372036854775812, // -(2^63+2^2) //# 105: compile-time error
+ -9223372036854775816, // -(2^63+2^3) //# 106: compile-time error
+ -9223372036854775824, // -(2^63+2^4) //# 107: compile-time error
+ -9223372036854775840, // -(2^63+2^5) //# 108: compile-time error
+ -9223372036854775872, // -(2^63+2^6) //# 109: compile-time error
+ -9223372036854775936, // -(2^63+2^7) //# 110: compile-time error
+ -9223372036854776064, // -(2^63+2^8) //# 111: compile-time error
+ -9223372036854776320, // -(2^63+2^9) //# 112: compile-time error
+ -9223372036854776832, // -(2^63+2^10) //# 113: compile-time error
+ -18446744073709551615, // -(2^64-2^0) //# 114: compile-time error
+ -18446744073709551614, // -(2^64-2^1) //# 115: compile-time error
+ -18446744073709551612, // -(2^64-2^2) //# 116: compile-time error
+ -18446744073709551608, // -(2^64-2^3) //# 117: compile-time error
+ -18446744073709551600, // -(2^64-2^4) //# 118: compile-time error
+ -18446744073709551584, // -(2^64-2^5) //# 119: compile-time error
+ -18446744073709551552, // -(2^64-2^6) //# 120: compile-time error
+ -18446744073709551488, // -(2^64-2^7) //# 121: compile-time error
+ -18446744073709551360, // -(2^64-2^8) //# 122: compile-time error
+ -18446744073709551104, // -(2^64-2^9) //# 123: compile-time error
+ -18446744073709550592, // -(2^64-2^10) //# 124: compile-time error
+ -18446744073709551617, // -(2^64+2^0) //# 125: compile-time error
+ -18446744073709551618, // -(2^64+2^1) //# 126: compile-time error
+ -18446744073709551620, // -(2^64+2^2) //# 127: compile-time error
+ -18446744073709551624, // -(2^64+2^3) //# 128: compile-time error
+ -18446744073709551632, // -(2^64+2^4) //# 129: compile-time error
+ -18446744073709551648, // -(2^64+2^5) //# 130: compile-time error
+ -18446744073709551680, // -(2^64+2^6) //# 131: compile-time error
+ -18446744073709551744, // -(2^64+2^7) //# 132: compile-time error
+ -18446744073709551872, // -(2^64+2^8) //# 133: compile-time error
+ -18446744073709552128, // -(2^64+2^9) //# 134: compile-time error
+ -18446744073709552640, // -(2^64+2^10) //# 135: compile-time error
+ -18446744073709553664, // -(2^64+2^11) //# 136: compile-time error
+ -179769313486231570814527423731704356798070567525844996598917476803157260780028538760589558632766878171540458953514382464234321326889464182768467546703537516986049910576551282076245490090389328944075868508455133942304583236903222948165808559332123348274797826204144723168738177180919299881250404026184124858367, // -(maxValue - 1) //# 137 : compile-time error
+ -179769313486231570814527423731704356798070567525844996598917476803157260780028538760589558632766878171540458953514382464234321326889464182768467546703537516986049910576551282076245490090389328944075868508455133942304583236903222948165808559332123348274797826204144723168738177180919299881250404026184124858369, // -(maxValue + 1) //# 138 : compile-time error
+
+ // Same numbers as hexadecimal literals.
+ 0x20000000000001, // 2^53+2^0 //# 139: compile-time error
+ 0x3fffffffffffff, // 2^54-2^0 //# 140: compile-time error
+ 0x40000000000001, // 2^54+2^0 //# 141: compile-time error
+ 0x40000000000002, // 2^54+2^1 //# 142: compile-time error
+ 0x3fffffffffffffff, // 2^62-2^0 //# 143: compile-time error
+ 0x3ffffffffffffffe, // 2^62-2^1 //# 144: compile-time error
+ 0x3ffffffffffffffc, // 2^62-2^2 //# 145: compile-time error
+ 0x3ffffffffffffff8, // 2^62-2^3 //# 146: compile-time error
+ 0x3ffffffffffffff0, // 2^62-2^4 //# 147: compile-time error
+ 0x3fffffffffffffe0, // 2^62-2^5 //# 148: compile-time error
+ 0x3fffffffffffffc0, // 2^62-2^6 //# 149: compile-time error
+ 0x3fffffffffffff80, // 2^62-2^7 //# 150: compile-time error
+ 0x3fffffffffffff00, // 2^62-2^8 //# 151: compile-time error
+ 0x4000000000000001, // 2^62+2^0 //# 152: compile-time error
+ 0x4000000000000002, // 2^62+2^1 //# 153: compile-time error
+ 0x4000000000000004, // 2^62+2^2 //# 154: compile-time error
+ 0x4000000000000008, // 2^62+2^3 //# 155: compile-time error
+ 0x4000000000000010, // 2^62+2^4 //# 156: compile-time error
+ 0x4000000000000020, // 2^62+2^5 //# 157: compile-time error
+ 0x4000000000000040, // 2^62+2^6 //# 158: compile-time error
+ 0x4000000000000080, // 2^62+2^7 //# 159: compile-time error
+ 0x4000000000000100, // 2^62+2^8 //# 160: compile-time error
+ 0x4000000000000200, // 2^62+2^9 //# 161: compile-time error
+ 0x7fffffffffffffff, // 2^63-2^0 //# 162: compile-time error
+ 0x7ffffffffffffffe, // 2^63-2^1 //# 163: compile-time error
+ 0x7ffffffffffffffc, // 2^63-2^2 //# 164: compile-time error
+ 0x7ffffffffffffff8, // 2^63-2^3 //# 165: compile-time error
+ 0x7ffffffffffffff0, // 2^63-2^4 //# 166: compile-time error
+ 0x7fffffffffffffe0, // 2^63-2^5 //# 167: compile-time error
+ 0x7fffffffffffffc0, // 2^63-2^6 //# 168: compile-time error
+ 0x7fffffffffffff80, // 2^63-2^7 //# 169: compile-time error
+ 0x7fffffffffffff00, // 2^63-2^8 //# 170: compile-time error
+ 0x7ffffffffffffe00, // 2^63-2^9 //# 171: compile-time error
+ 0x8000000000000001, // 2^63+2^0 //# 172: compile-time error
+ 0x8000000000000002, // 2^63+2^1 //# 173: compile-time error
+ 0x8000000000000004, // 2^63+2^2 //# 174: compile-time error
+ 0x8000000000000008, // 2^63+2^3 //# 175: compile-time error
+ 0x8000000000000010, // 2^63+2^4 //# 176: compile-time error
+ 0x8000000000000020, // 2^63+2^5 //# 177: compile-time error
+ 0x8000000000000040, // 2^63+2^6 //# 178: compile-time error
+ 0x8000000000000080, // 2^63+2^7 //# 179: compile-time error
+ 0x8000000000000100, // 2^63+2^8 //# 180: compile-time error
+ 0x8000000000000200, // 2^63+2^9 //# 181: compile-time error
+ 0x8000000000000400, // 2^63+2^10 //# 182: compile-time error
+ 0xffffffffffffffff, // 2^64-2^0 //# 183: compile-time error
+ 0xfffffffffffffffe, // 2^64-2^1 //# 184: compile-time error
+ 0xfffffffffffffffc, // 2^64-2^2 //# 185: compile-time error
+ 0xfffffffffffffff8, // 2^64-2^3 //# 186: compile-time error
+ 0xfffffffffffffff0, // 2^64-2^4 //# 187: compile-time error
+ 0xffffffffffffffe0, // 2^64-2^5 //# 188: compile-time error
+ 0xffffffffffffffc0, // 2^64-2^6 //# 189: compile-time error
+ 0xffffffffffffff80, // 2^64-2^7 //# 190: compile-time error
+ 0xffffffffffffff00, // 2^64-2^8 //# 191: compile-time error
+ 0xfffffffffffffe00, // 2^64-2^9 //# 192: compile-time error
+ 0xfffffffffffffc00, // 2^64-2^10 //# 193: compile-time error
+ 0x10000000000000001, // 2^64+2^0 //# 194: compile-time error
+ 0x10000000000000002, // 2^64+2^1 //# 195: compile-time error
+ 0x10000000000000004, // 2^64+2^2 //# 196: compile-time error
+ 0x10000000000000008, // 2^64+2^3 //# 197: compile-time error
+ 0x10000000000000010, // 2^64+2^4 //# 198: compile-time error
+ 0x10000000000000020, // 2^64+2^5 //# 199: compile-time error
+ 0x10000000000000040, // 2^64+2^6 //# 200: compile-time error
+ 0x10000000000000080, // 2^64+2^7 //# 201: compile-time error
+ 0x10000000000000100, // 2^64+2^8 //# 202: compile-time error
+ 0x10000000000000200, // 2^64+2^9 //# 203: compile-time error
+ 0x10000000000000400, // 2^64+2^10 //# 204: compile-time error
+ 0x10000000000000800, // 2^64+2^11 //# 205: compile-time error
+ 0xfffffffffffff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff, // maxValue - 1 //# 206 : compile-time error
+ 0xfffffffffffff800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001, // maxValue + 1 //# 207 : compile-time error
+
+ -0x20000000000001, // -(2^53+2^0) //# 208: compile-time error
+ -0x3fffffffffffff, // -(2^54-2^0) //# 209: compile-time error
+ -0x40000000000001, // -(2^54+2^0) //# 210: compile-time error
+ -0x40000000000002, // -(2^54+2^1) //# 211: compile-time error
+ -0x3fffffffffffffff, // -(2^62-2^0) //# 212: compile-time error
+ -0x3ffffffffffffffe, // -(2^62-2^1) //# 213: compile-time error
+ -0x3ffffffffffffffc, // -(2^62-2^2) //# 214: compile-time error
+ -0x3ffffffffffffff8, // -(2^62-2^3) //# 215: compile-time error
+ -0x3ffffffffffffff0, // -(2^62-2^4) //# 216: compile-time error
+ -0x3fffffffffffffe0, // -(2^62-2^5) //# 217: compile-time error
+ -0x3fffffffffffffc0, // -(2^62-2^6) //# 218: compile-time error
+ -0x3fffffffffffff80, // -(2^62-2^7) //# 219: compile-time error
+ -0x3fffffffffffff00, // -(2^62-2^8) //# 220: compile-time error
+ -0x4000000000000001, // -(2^62+2^0) //# 221: compile-time error
+ -0x4000000000000002, // -(2^62+2^1) //# 222: compile-time error
+ -0x4000000000000004, // -(2^62+2^2) //# 223: compile-time error
+ -0x4000000000000008, // -(2^62+2^3) //# 224: compile-time error
+ -0x4000000000000010, // -(2^62+2^4) //# 225: compile-time error
+ -0x4000000000000020, // -(2^62+2^5) //# 226: compile-time error
+ -0x4000000000000040, // -(2^62+2^6) //# 227: compile-time error
+ -0x4000000000000080, // -(2^62+2^7) //# 228: compile-time error
+ -0x4000000000000100, // -(2^62+2^8) //# 229: compile-time error
+ -0x4000000000000200, // -(2^62+2^9) //# 230: compile-time error
+ -0x7fffffffffffffff, // -(2^63-2^0) //# 231: compile-time error
+ -0x7ffffffffffffffe, // -(2^63-2^1) //# 232: compile-time error
+ -0x7ffffffffffffffc, // -(2^63-2^2) //# 233: compile-time error
+ -0x7ffffffffffffff8, // -(2^63-2^3) //# 234: compile-time error
+ -0x7ffffffffffffff0, // -(2^63-2^4) //# 235: compile-time error
+ -0x7fffffffffffffe0, // -(2^63-2^5) //# 236: compile-time error
+ -0x7fffffffffffffc0, // -(2^63-2^6) //# 237: compile-time error
+ -0x7fffffffffffff80, // -(2^63-2^7) //# 238: compile-time error
+ -0x7fffffffffffff00, // -(2^63-2^8) //# 239: compile-time error
+ -0x7ffffffffffffe00, // -(2^63-2^9) //# 240: compile-time error
+ -0x8000000000000001, // -(2^63+2^0) //# 241: compile-time error
+ -0x8000000000000002, // -(2^63+2^1) //# 242: compile-time error
+ -0x8000000000000004, // -(2^63+2^2) //# 243: compile-time error
+ -0x8000000000000008, // -(2^63+2^3) //# 244: compile-time error
+ -0x8000000000000010, // -(2^63+2^4) //# 245: compile-time error
+ -0x8000000000000020, // -(2^63+2^5) //# 246: compile-time error
+ -0x8000000000000040, // -(2^63+2^6) //# 247: compile-time error
+ -0x8000000000000080, // -(2^63+2^7) //# 248: compile-time error
+ -0x8000000000000100, // -(2^63+2^8) //# 249: compile-time error
+ -0x8000000000000200, // -(2^63+2^9) //# 250: compile-time error
+ -0x8000000000000400, // -(2^63+2^10) //# 251: compile-time error
+ -0xffffffffffffffff, // -(2^64-2^0) //# 252: compile-time error
+ -0xfffffffffffffffe, // -(2^64-2^1) //# 253: compile-time error
+ -0xfffffffffffffffc, // -(2^64-2^2) //# 254: compile-time error
+ -0xfffffffffffffff8, // -(2^64-2^3) //# 255: compile-time error
+ -0xfffffffffffffff0, // -(2^64-2^4) //# 256: compile-time error
+ -0xffffffffffffffe0, // -(2^64-2^5) //# 257: compile-time error
+ -0xffffffffffffffc0, // -(2^64-2^6) //# 258: compile-time error
+ -0xffffffffffffff80, // -(2^64-2^7) //# 259: compile-time error
+ -0xffffffffffffff00, // -(2^64-2^8) //# 260: compile-time error
+ -0xfffffffffffffe00, // -(2^64-2^9) //# 261: compile-time error
+ -0xfffffffffffffc00, // -(2^64-2^10) //# 262: compile-time error
+ -0x10000000000000001, // -(2^64+2^0) //# 263: compile-time error
+ -0x10000000000000002, // -(2^64+2^1) //# 264: compile-time error
+ -0x10000000000000004, // -(2^64+2^2) //# 265: compile-time error
+ -0x10000000000000008, // -(2^64+2^3) //# 266: compile-time error
+ -0x10000000000000010, // -(2^64+2^4) //# 267: compile-time error
+ -0x10000000000000020, // -(2^64+2^5) //# 268: compile-time error
+ -0x10000000000000040, // -(2^64+2^6) //# 269: compile-time error
+ -0x10000000000000080, // -(2^64+2^7) //# 270: compile-time error
+ -0x10000000000000100, // -(2^64+2^8) //# 271: compile-time error
+ -0x10000000000000200, // -(2^64+2^9) //# 272: compile-time error
+ -0x10000000000000400, // -(2^64+2^10) //# 273: compile-time error
+ -0x10000000000000800, // -(2^64+2^11) //# 274: compile-time error
+ -0xfffffffffffff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff, // -(maxValue - 1) //# 275 : compile-time error
+ -0xfffffffffffff800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001, // -(maxValue + 1) //# 276 : compile-time error
+ );
+}
diff --git a/tests/language_2/double_literals/double_literal_coercion_test.dart b/tests/language_2/double_literals/double_literal_coercion_test.dart
new file mode 100644
index 0000000..9c2cc91
--- /dev/null
+++ b/tests/language_2/double_literals/double_literal_coercion_test.dart
@@ -0,0 +1,142 @@
+// 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.
+
+import "package:expect/expect.dart";
+
+// Pass expected value and then decimal literal value in a double context.
+void expectDouble(double expectedValue, double actualValue) {
+ if (expectedValue == null) return;
+ Expect.identical(expectedValue, actualValue);
+}
+
+// Some exact powers of two as double values.
+double p2_8 = 256.0;
+double p2_30 = 1073741824.0;
+double p2_31 = 2147483648.0;
+double p2_32 = 4294967296.0;
+double p2_52 = 4503599627370496.0;
+double p2_53 = 9007199254740992.0;
+double p2_54 = 18014398509481984.0;
+double p2_62 = 4611686018427387904.0;
+double p2_63 = 9223372036854775808.0;
+double p2_64 = 18446744073709551616.0;
+double maxValue = 1.7976931348623157e+308;
+
+main() {
+ expectDouble(0.0, 0);
+ expectDouble(1.0, 1);
+ expectDouble(p2_8 - 1, 255);
+ expectDouble(p2_8, 256);
+ expectDouble(p2_8 + 1, 257);
+ expectDouble(p2_30 - 1, 1073741823);
+ expectDouble(p2_30, 1073741824);
+ expectDouble(p2_30 + 1, 1073741825);
+ expectDouble(p2_31 - 1, 2147483647);
+ expectDouble(p2_31, 2147483648);
+ expectDouble(p2_31 + 1, 2147483649);
+ expectDouble(p2_32 - 1, 4294967295);
+ expectDouble(p2_32, 4294967296);
+ expectDouble(p2_32 + 1, 4294967297);
+ expectDouble(p2_52 - 1, 4503599627370495);
+ expectDouble(p2_52, 4503599627370496);
+ expectDouble(p2_52 + 1, 4503599627370497);
+ expectDouble(p2_53 - 1, 9007199254740991);
+ expectDouble(p2_53, 9007199254740992);
+ expectDouble(p2_53 + 2, 9007199254740994);
+ expectDouble(p2_54 - 2, 18014398509481982);
+ expectDouble(p2_54, 18014398509481984);
+ expectDouble(p2_54 + 4, 18014398509481988);
+ expectDouble(p2_62, 4611686018427387904);
+ expectDouble(p2_63, 9223372036854775808);
+ expectDouble(p2_64, 18446744073709551616);
+ expectDouble(maxValue,
+ 179769313486231570814527423731704356798070567525844996598917476803157260780028538760589558632766878171540458953514382464234321326889464182768467546703537516986049910576551282076245490090389328944075868508455133942304583236903222948165808559332123348274797826204144723168738177180919299881250404026184124858368);
+
+ expectDouble(-0.0, -0);
+ expectDouble(-1.0, -1);
+ expectDouble(-(p2_8 - 1), -255);
+ expectDouble(-(p2_8), -256);
+ expectDouble(-(p2_8 + 1), -257);
+ expectDouble(-(p2_30 - 1), -1073741823);
+ expectDouble(-(p2_30), -1073741824);
+ expectDouble(-(p2_30 + 1), -1073741825);
+ expectDouble(-(p2_31 - 1), -2147483647);
+ expectDouble(-(p2_31), -2147483648);
+ expectDouble(-(p2_31 + 1), -2147483649);
+ expectDouble(-(p2_32 - 1), -4294967295);
+ expectDouble(-(p2_32), -4294967296);
+ expectDouble(-(p2_32 + 1), -4294967297);
+ expectDouble(-(p2_52 - 1), -4503599627370495);
+ expectDouble(-(p2_52), -4503599627370496);
+ expectDouble(-(p2_52 + 1), -4503599627370497);
+ expectDouble(-(p2_53 - 1), -9007199254740991);
+ expectDouble(-(p2_53), -9007199254740992);
+ expectDouble(-(p2_53 + 2), -9007199254740994);
+ expectDouble(-(p2_54 - 2), -18014398509481982);
+ expectDouble(-(p2_54), -18014398509481984);
+ expectDouble(-(p2_54 + 4), -18014398509481988);
+ expectDouble(-(p2_62), -4611686018427387904);
+ expectDouble(-(p2_63), -9223372036854775808);
+ expectDouble(-(p2_64), -18446744073709551616);
+ expectDouble(-maxValue,
+ -179769313486231570814527423731704356798070567525844996598917476803157260780028538760589558632766878171540458953514382464234321326889464182768467546703537516986049910576551282076245490090389328944075868508455133942304583236903222948165808559332123348274797826204144723168738177180919299881250404026184124858368);
+
+ expectDouble(0.0, 0x0);
+ expectDouble(1.0, 0x1);
+ expectDouble(p2_8 - 1, 0xff);
+ expectDouble(p2_8, 0x100);
+ expectDouble(p2_8 + 1, 0x101);
+ expectDouble(p2_30 - 1, 0x3fffffff);
+ expectDouble(p2_30, 0x40000000);
+ expectDouble(p2_30 + 1, 0x40000001);
+ expectDouble(p2_31 - 1, 0x7fffffff);
+ expectDouble(p2_31, 0x80000000);
+ expectDouble(p2_31 + 1, 0x80000001);
+ expectDouble(p2_32 - 1, 0xffffffff);
+ expectDouble(p2_32, 0x100000000);
+ expectDouble(p2_32 + 1, 0x100000001);
+ expectDouble(p2_52 - 1, 0xfffffffffffff);
+ expectDouble(p2_52, 0x10000000000000);
+ expectDouble(p2_52 + 1, 0x10000000000001);
+ expectDouble(p2_53 - 1, 0x1fffffffffffff);
+ expectDouble(p2_53, 0x20000000000000);
+ expectDouble(p2_53 + 2, 0x20000000000002);
+ expectDouble(p2_54 - 2, 0x3ffffffffffffe);
+ expectDouble(p2_54, 0x40000000000000);
+ expectDouble(p2_54 + 4, 0x40000000000004);
+ expectDouble(p2_62, 0x4000000000000000);
+ expectDouble(p2_63, 0x8000000000000000);
+ expectDouble(p2_64, 0x10000000000000000);
+ expectDouble(maxValue,
+ 0xfffffffffffff80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000);
+
+ expectDouble(-0.0, -0x0);
+ expectDouble(-1.0, -0x1);
+ expectDouble(-(p2_8 - 1), -0xff);
+ expectDouble(-(p2_8), -0x100);
+ expectDouble(-(p2_8 + 1), -0x101);
+ expectDouble(-(p2_30 - 1), -0x3fffffff);
+ expectDouble(-(p2_30), -0x40000000);
+ expectDouble(-(p2_30 + 1), -0x40000001);
+ expectDouble(-(p2_31 - 1), -0x7fffffff);
+ expectDouble(-(p2_31), -0x80000000);
+ expectDouble(-(p2_31 + 1), -0x80000001);
+ expectDouble(-(p2_32 - 1), -0xffffffff);
+ expectDouble(-(p2_32), -0x100000000);
+ expectDouble(-(p2_32 + 1), -0x100000001);
+ expectDouble(-(p2_52 - 1), -0xfffffffffffff);
+ expectDouble(-(p2_52), -0x10000000000000);
+ expectDouble(-(p2_52 + 1), -0x10000000000001);
+ expectDouble(-(p2_53 - 1), -0x1fffffffffffff);
+ expectDouble(-(p2_53), -0x20000000000000);
+ expectDouble(-(p2_53 + 2), -0x20000000000002);
+ expectDouble(-(p2_54 - 2), -0x3ffffffffffffe);
+ expectDouble(-(p2_54), -0x40000000000000);
+ expectDouble(-(p2_54 + 4), -0x40000000000004);
+ expectDouble(-(p2_62), -0x4000000000000000);
+ expectDouble(-(p2_63), -0x8000000000000000);
+ expectDouble(-(p2_64), -0x10000000000000000);
+ expectDouble(-maxValue,
+ -0xfffffffffffff80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000);
+}
diff --git a/tests/language_2/language_2.status b/tests/language_2/language_2.status
index 6a491e4..f4293613 100644
--- a/tests/language_2/language_2.status
+++ b/tests/language_2/language_2.status
@@ -11,14 +11,22 @@
[ $compiler == app_jit ]
deferred_inheritance_constraints_test/redirecting_constructor: Crash
+[ $compiler == dart2analyzer ]
+double_literals/*: Skip # https://github.com/dart-lang/sdk/issues/34360
+
[ $compiler != dart2analyzer ]
switch_case_warn_test: Skip # Analyzer only, see language_analyzer2.status
[ $compiler == dart2js ]
+double_literals/*: Skip # https://github.com/dart-lang/sdk/issues/34356
invalid_returns/*: Skip # https://github.com/dart-lang/sdk/issues/34011
void/*: Skip # https://github.com/dart-lang/sdk/issues/34011
+[ $compiler == fasta ]
+double_literals/*: Skip # https://github.com/dart-lang/sdk/issues/34357
+
[ $compiler == spec_parser ]
+double_literals/*: Skip # https://github.com/dart-lang/sdk/issues/34355
invalid_returns/*: Skip # https://github.com/dart-lang/sdk/issues/34015
void/*: Skip # https://github.com/dart-lang/sdk/issues/34015
@@ -207,11 +215,17 @@
[ $checked && !$strong ]
type_parameter_test/05: Pass
+[ $compiler == app_jit || $compiler == app_jitk || $compiler == dartk || $compiler == dartkb || $compiler == dartkp || $compiler == none || $compiler == precompiler ]
+double_literals/*: Skip # https://github.com/dart-lang/sdk/issues/34358
+
[ $compiler == app_jit || $compiler == none ]
invalid_returns/*: Skip # https://github.com/dart-lang/sdk/issues/34013
library_env_test/has_no_mirror_support: RuntimeError, OK
void/*: Skip # https://github.com/dart-lang/sdk/issues/34013
+[ $compiler == dartdevc || $compiler == dartdevk ]
+double_literals/*: Skip # https://github.com/dart-lang/sdk/issues/34359
+
[ $hot_reload || $hot_reload_rollback ]
cha_deopt1_test: Crash # Requires deferred libraries
cha_deopt2_test: Crash # Requires deferred libraries