/*
 * Copyright (c) 2019, 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.
 */
/**
 * @assertion The [==] operator in constant expressions was defined such that
 * [e1 != null] was only allowed if [e1] had one of the "primitive" system
 * types. Users had to rewrite their code to [!identical(e1, null)]. This was
 * changed so that the [==] expression is always allowed as long as one of the
 * operands is [null].
 * @description Checks that [!=] operator is allowed if one of the operands is
 * [null].
 * @author iarkh@unipro.ru
 */
// SharedOptions=--enable-experiment=constant-update-2018
import "../../Utils/expect.dart";

const str1 = "test";
const str2 = null;

class MyClass {
  final String option;
  const MyClass(String str) : assert(str != null), option = str;
}

main() {
  const bool res1 = (str1 != null);
  Expect.isTrue(res1);

  const bool res2 = (str2 != null);
  Expect.isFalse(res2);

  const MyClass c = MyClass("test");
  Expect.equals("test", c.option);
}
