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

var a_equal = 1.0 /*@target=num::==*/ == 2.0;
var a_notEqual = 1.0 /*@target=num::==*/ != 2.0;
var a_add = 1.0 /*@target=double::+*/ + 2.0;
var a_subtract = 1.0 /*@target=double::-*/ - 2.0;
var a_multiply = 1.0 /*@target=double::**/ * 2.0;
var a_divide = 1.0 /*@target=double::/ */ / 2.0;
var a_floorDivide = 1.0 /*@target=double::~/ */ ~/ 2.0;
var a_greater = 1.0 /*@target=num::>*/ > 2.0;
var a_less = 1.0 /*@target=num::<*/ < 2.0;
var a_greaterEqual = 1.0 /*@target=num::>=*/ >= 2.0;
var a_lessEqual = 1.0 /*@target=num::<=*/ <= 2.0;
var a_modulo = 1.0 /*@target=double::%*/ % 2.0;

main() {
  a_equal;
  a_notEqual;
  a_add;
  a_subtract;
  a_multiply;
  a_divide;
  a_floorDivide;
  a_greater;
  a_less;
  a_greaterEqual;
  a_lessEqual;
  a_modulo;
}
