| // 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. |
| // @dart=2.9 |
| /*@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; |
| } |