blob: cab90d8fc04d2ad975d1109350241ea67fad4c15 [file] [log] [blame]
// Copyright (c) 2025, 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.
void constantFoldInt() {
var x = 100;
var y = 24;
print(x + y);
print(x - y);
print(x * y);
print(x ~/ y);
print(x % y);
print(x.remainder(y));
print(x / y);
print(x | y);
print(x & y);
print(x ^ y);
print(x == y);
print(x > y);
print(x >= y);
print(x < y);
print(x <= y);
print(x << y);
print(x >> y);
print((-x) >>> y);
print(-x);
print(~x);
print(x.toDouble());
print((-x).abs());
print(x.sign);
}
void constantFoldDouble() {
var x = 4.0;
var y = 0.5;
var z = double.nan;
print(x + y);
print(x + z);
print(x - y);
print(x * y);
print(x ~/ y);
print(x % y);
print(x.remainder(y));
print(x / y);
print(x == y);
print(x == z);
print(x > y);
print(x > z);
print(x >= y);
print(x < y);
print(x <= y);
print(-x);
print(x.ceil());
print(y.ceilToDouble());
print(y.round());
print(x.roundToDouble());
print((-x).truncate());
print((-y).truncateToDouble());
}
void moveConstantToRight(int x, double y, Object? obj) {
print(2 + x);
print(3 * x);
print(4 == x);
print(5 > x);
print(6 >= x);
print(7 < x);
print(8 <= x);
print(2 + y);
print(3 * y);
print(4 == y);
print(5 > y);
print(6 >= y);
print(7 < y);
print(8 <= y);
print(null == obj);
}
void arithmeticPatterns(int x, double y) {
print(0 + x);
print(0 - x);
print(1 * x);
print(x * 0);
print(x * 16);
print(x ~/ 32);
print(x * (-1));
print(x << 65);
print(x >> 65);
print(x >>> 65);
print(x | 0);
print(x | (-1));
print(x | x);
print(x & 0);
print(x & (-1));
print(x & x);
print(x ^ 0);
print(x ^ (-1));
print(x ^ x);
print(y * 1.0);
print(y * y);
}
void redundantPhi(int x) {
if (x > 0) {
x = x + 0;
}
print(x);
}
void main() {}