Files
sdk/pkg/compiler/test/sourcemaps/data/operators.dart
T
Nate Biggs 545ee13cd4 [dart2js] Clean up usages of 'new' keyword.
Change-Id: I193e19581d29a9c4b343ae0a681d1ff530cfce1d
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/281309
Commit-Queue: Nate Biggs <natebiggs@google.com>
Reviewed-by: Mayank Patke <fishythefish@google.com>
2023-02-14 02:36:38 +00:00

89 lines
2.2 KiB
Dart

// Copyright (c) 2015, 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.7
// Test file for testing source mappings of operations.
var counter = 0;
void record(result) {
counter++;
}
main(args) {
counter++;
operations(
args.length > 0, 0, 1.5, args[0], Complex(0, 1), Complex(1.5, 2.5));
specialized(args.length > 0, null, 2, []);
specialized(args.length > 0, 2, 2, []);
return counter;
}
void operations(cond, a, b, c, d, e) {
if (cond) record(a + a);
if (cond) record(a + b);
if (cond) record(a + c);
if (cond) record(a + d);
if (cond) record(a + e);
if (cond) record(b + a);
if (cond) record(b + b);
if (cond) record(b + c);
if (cond) record(b + d);
if (cond) record(b + e);
if (cond) record(c + a);
if (cond) record(c + b);
if (cond) record(c + c);
if (cond) record(c + d);
if (cond) record(c + e);
if (cond) record(d + a);
if (cond) record(d + b);
if (cond) record(d + c);
if (cond) record(d + d);
if (cond) record(d + e);
if (cond) record(e + a);
if (cond) record(e + b);
if (cond) record(e + c);
if (cond) record(e + d);
if (cond) record(e + e);
}
void specialized(cond, a, b, c) {
if (cond) record(a + b);
if (cond) record(a & b);
if (cond) record(~a);
if (cond) record(a | b);
if (cond) record(a ^ b);
if (cond) record(a / b);
if (cond) record(a == b);
if (cond) record(a >= b);
if (cond) record(a > b);
if (cond) record(a <= b);
if (cond) record(a < b);
if (cond) record(a % b);
if (cond) record(a * b);
if (cond) record(a << b);
if (cond) record(a >> b);
if (cond) record(a - b);
if (cond) record(a ~/ b);
if (cond) record(-a);
if (cond) record(c[a] = b);
if (cond) record(c[a]);
}
class Complex {
final num re;
final num im;
const Complex(this.re, this.im);
operator +(Complex other) => Complex(re + other.re, im + other.im);
// TODO(johnniwinther): Support implicit null check in '=='.
//operator ==(Complex other) => re == other.re && im == other.im;
int get hashCode => 13 * re.hashCode + 17 * im.hashCode;
}