mirror of
https://github.com/dart-lang/sdk
synced 2024-11-05 18:22:09 +00:00
b101a7d002
Change-Id: Ib33169c3e0ffc870915c189404074a1dea472546 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/196548 Reviewed-by: Bob Nystrom <rnystrom@google.com> Commit-Queue: Leaf Petersen <leafp@google.com>
119 lines
4.9 KiB
Dart
119 lines
4.9 KiB
Dart
// Copyright (c) 2020, 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
|
|
|
|
const a0 = 0 ~/ 0; //# a0: compile-time error
|
|
const a1 = 0.0 ~/ 0; //# a1: compile-time error
|
|
const a2 = -0.0 ~/ 0; //# a2: compile-time error
|
|
const a3 = double.nan ~/ 0; //# a3: compile-time error
|
|
const a4 = double.infinity ~/ 0; //# a4: compile-time error
|
|
const a5 = double.negativeInfinity ~/ 0; //# a5: compile-time error
|
|
|
|
const b0 = 0 ~/ 0.0; //# b0: compile-time error
|
|
const b1 = 0.0 ~/ 0.0; //# b1: compile-time error
|
|
const b2 = -0.0 ~/ 0.0; //# b2: compile-time error
|
|
const b3 = double.nan ~/ 0.0; //# b3: compile-time error
|
|
const b4 = double.infinity ~/ 0.0; //# b4: compile-time error
|
|
const b5 = double.negativeInfinity ~/ 0.0; //# b5: compile-time error
|
|
|
|
const c0 = 0 ~/ -0.0; //# c0: compile-time error
|
|
const c1 = 0.0 ~/ -0.0; //# c1: compile-time error
|
|
const c2 = -0.0 ~/ -0.0; //# c2: compile-time error
|
|
const c3 = double.nan ~/ -0.0; //# c3: compile-time error
|
|
const c4 = double.infinity ~/ -0.0; //# c4: compile-time error
|
|
const c5 = double.negativeInfinity ~/ -0.0; //# c5: compile-time error
|
|
|
|
const d0 = 0 ~/ double.nan; //# d0: compile-time error
|
|
const d1 = 0.0 ~/ double.nan; //# d1: compile-time error
|
|
const d2 = -0.0 ~/ double.nan; //# d2: compile-time error
|
|
const d3 = double.nan ~/ double.nan; //# d3: compile-time error
|
|
const d4 = double.infinity ~/ double.nan; //# d4: compile-time error
|
|
const d5 = double.negativeInfinity ~/ double.nan; //# d5: compile-time error
|
|
|
|
const e0 = 0 ~/ double.infinity; //# e0: ok
|
|
const e1 = 0.0 ~/ double.infinity; //# e1: ok
|
|
const e2 = -0.0 ~/ double.infinity; //# e2: ok
|
|
const e3 = double.nan ~/ double.infinity; //# e3: compile-time error
|
|
const e4 = double.infinity ~/ double.infinity; //# e4: compile-time error
|
|
const e5 = double.negativeInfinity ~/ double.infinity; //# e5: compile-time error
|
|
|
|
const f0 = 0 ~/ double.negativeInfinity; //# f0: ok
|
|
const f1 = 0.0 ~/ double.negativeInfinity; //# f1: ok
|
|
const f2 = -0.0 ~/ double.negativeInfinity; //# f2: ok
|
|
const f3 = double.nan ~/ double.negativeInfinity; //# f3: compile-time error
|
|
const f4 = double.infinity ~/ double.negativeInfinity; //# f4: compile-time error
|
|
const f5 = double.negativeInfinity ~/ double.negativeInfinity; //# f5: compile-time error
|
|
|
|
main() {
|
|
test(0, 0, () => a0); //# a0: continued
|
|
test(0.0, 0, () => a1); //# a1: continued
|
|
test(-0.0, 0, () => a2); //# a2: continued
|
|
test(double.nan, 0, () => a3); //# a3: continued
|
|
test(double.infinity, 0, () => a4); //# a4: continued
|
|
test(double.negativeInfinity, 0, () => a5); //# a5: continued
|
|
|
|
test(0, 0.0, () => b0); //# b0: continued
|
|
test(0.0, 0.0, () => b1); //# b1: continued
|
|
test(-0.0, 0.0, () => b2); //# b2: continued
|
|
test(double.nan, 0.0, () => b3); //# b3: continued
|
|
test(double.infinity, 0.0, () => b4); //# b4: continued
|
|
test(double.negativeInfinity, 0.0, () => b5); //# b5: continued
|
|
|
|
test(0, -0.0, () => c0); //# c0: continued
|
|
test(0.0, -0.0, () => c1); //# c1: continued
|
|
test(-0.0, -0.0, () => c2); //# c2: continued
|
|
test(double.nan, -0.0, () => c3); //# c3: continued
|
|
test(double.infinity, -0.0, () => c4); //# c4: continued
|
|
test(double.negativeInfinity, -0.0, () => c5); //# c5: continued
|
|
|
|
test(0, double.nan, () => d0); //# d0: continued
|
|
test(0.0, double.nan, () => d1); //# d1: continued
|
|
test(-0.0, double.nan, () => d2); //# d2: continued
|
|
test(double.nan, double.nan, () => d3); //# d3: continued
|
|
test(double.infinity, double.nan, () => d4); //# d4: continued
|
|
test(double.negativeInfinity, double.nan, () => d5); //# d5: continued
|
|
|
|
test(0, double.infinity, () => e0); //# e0: continued
|
|
test(0.0, double.infinity, () => e1); //# e1: continued
|
|
test(-0.0, double.infinity, () => e2); //# e2: continued
|
|
test(double.nan, double.infinity, () => e3); //# e3: continued
|
|
test(double.infinity, double.infinity, () => e4); //# e4: continued
|
|
test(double.negativeInfinity, double.infinity, () => e5); //# e5: continued
|
|
|
|
test(0, double.negativeInfinity, () => f0); //# f0: continued
|
|
test(0.0, double.negativeInfinity, () => f1); //# f1: continued
|
|
test(-0.0, double.negativeInfinity, () => f2); //# f2: continued
|
|
test(double.nan, double.negativeInfinity, () => f3); //# f3: continued
|
|
test(double.infinity, double.negativeInfinity, () => f4); //# f4: continued
|
|
test(double.negativeInfinity, double.negativeInfinity, () => f5); //# f5: continued
|
|
}
|
|
|
|
void test(num a, num b, num Function() f) {
|
|
num result;
|
|
try {
|
|
result = a ~/ b;
|
|
print('$a ~/ $b = $result');
|
|
} catch (e) {
|
|
print('$a ~/ $b throws $e');
|
|
throws(f);
|
|
return;
|
|
}
|
|
expect(f(), result);
|
|
}
|
|
|
|
void expect(expected, actual) {
|
|
if (expected != actual) {
|
|
throw 'Expected $expected, actual $actual';
|
|
}
|
|
}
|
|
|
|
void throws(num Function() f) {
|
|
try {
|
|
f();
|
|
} catch (e) {
|
|
return;
|
|
}
|
|
throw 'Expected exception';
|
|
}
|