// 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. // 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; }