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

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);
}
