blob: cb5a0c2a74ea5647a27de526b069d9aa3c597e23 [file] [log] [blame]
// Copyright (c) 2017, 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.
/*@testedFeatures=inference*/
library test;
main() {
num n = 1;
int i = 1;
double d = 1.0;
// (double, double) -> double
var /*@ type=double* */ ddPlus = d /*@target=double.+*/ + d;
var /*@ type=double* */ ddMinus = d /*@target=double.-*/ - d;
var /*@ type=double* */ ddTimes = d /*@target=double.**/ * d;
var /*@ type=double* */ ddMod = d /*@target=double.%*/ % d;
// (double, int) -> double
var /*@ type=double* */ diPlus = d /*@target=double.+*/ + i;
var /*@ type=double* */ diMinus = d /*@target=double.-*/ - i;
var /*@ type=double* */ diTimes = d /*@target=double.**/ * i;
var /*@ type=double* */ diMod = d /*@target=double.%*/ % i;
// (double, num) -> double
var /*@ type=double* */ dnPlus = d /*@target=double.+*/ + n;
var /*@ type=double* */ dnMinus = d /*@target=double.-*/ - n;
var /*@ type=double* */ dnTimes = d /*@target=double.**/ * n;
var /*@ type=double* */ dnMod = d /*@target=double.%*/ % n;
// (int, double) -> double
var /*@ type=double* */ idPlus = i /*@target=num.+*/ + d;
var /*@ type=double* */ idMinus = i /*@target=num.-*/ - d;
var /*@ type=double* */ idTimes = i /*@target=num.**/ * d;
var /*@ type=double* */ idMod = i /*@target=num.%*/ % d;
// (int, int) -> int
var /*@ type=int* */ iiPlus = i /*@target=num.+*/ + i;
var /*@ type=int* */ iiMinus = i /*@target=num.-*/ - i;
var /*@ type=int* */ iiTimes = i /*@target=num.**/ * i;
var /*@ type=int* */ iiMod = i /*@target=num.%*/ % i;
// (int, num) -> num
var /*@ type=num* */ inPlus = i /*@target=num.+*/ + n;
var /*@ type=num* */ inMinus = i /*@target=num.-*/ - n;
var /*@ type=num* */ inTimes = i /*@target=num.**/ * n;
var /*@ type=num* */ inMod = i /*@target=num.%*/ % n;
// (num, double) -> num
var /*@ type=num* */ ndPlus = n /*@target=num.+*/ + d;
var /*@ type=num* */ ndMinus = n /*@target=num.-*/ - d;
var /*@ type=num* */ ndTimes = n /*@target=num.**/ * d;
var /*@ type=num* */ ndMod = n /*@target=num.%*/ % d;
// (num, int) -> num
var /*@ type=num* */ niPlus = n /*@target=num.+*/ + i;
var /*@ type=num* */ niMinus = n /*@target=num.-*/ - i;
var /*@ type=num* */ niTimes = n /*@target=num.**/ * i;
var /*@ type=num* */ niMod = n /*@target=num.%*/ % i;
// (num, num) -> num
var /*@ type=num* */ nnPlus = n /*@target=num.+*/ + n;
var /*@ type=num* */ nnMinus = n /*@target=num.-*/ - n;
var /*@ type=num* */ nnTimes = n /*@target=num.**/ * n;
var /*@ type=num* */ nnMod = n /*@target=num.%*/ % n;
}