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

import 'package:expect/expect.dart';

// Regression test for http://dartbug.com/16967
// Tests type propagation of negation.

void main() {
  new Foo().test();
}

class Foo {
  var scale = 1;

  void test() {
    var scaleX = scale;
    var scaleY = scale;
    var flipX = true;

    if (flipX) {
      scaleX = -scaleX;
    }

    Expect.equals('X: -1, Y: 1', 'X: $scaleX, Y: $scaleY');
    Expect.equals('true', '${scaleX < 0}', '$scaleX < 0');
    Expect.equals('false', '${scaleY < 0}', '$scaleY < 0');
  }
}
