// Copyright (c) 2018, 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.

// Proper nullable comparison (dartbug.com/35325).
//
// VMOptions=--deterministic --optimization_counter_threshold=10

import "package:expect/expect.dart";

bool var1;
int var2;

bar(List<int> par1, double par2) {
  if (par2 == 123.0) return 456.0;
  // fall into return null
}

bool foo(double par1) {
  return (bar(
          [81, 17],
          ((!(var1))
              ? double.maxFinite
              : (var1 ? (80).floorToDouble() : par1))) ==
      (((~(var2))).roundToDouble()).sign);
}

void main() {
  for (int i = 0; i < 20; ++i) {
    var1 = true;
    var2 = 4;
    var x = foo(0.0);
    Expect.isFalse(x);
    Expect.isTrue(var1);
    Expect.equals(4, var2);
  }
}
