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

// @dart = 2.9

/// @assertion Likewise the [||] operator only evaluates its second operand if
/// the first evaluates to [false], and the second operand must be a potentially
/// constant expression.
/// @description Checks that compiler does not attempt to calculate the
/// second operand of [||] operation if the first one is [true] in the constant
/// expression.
/// @author iarkh@unipro.ru

import "../../Utils/expect.dart";

const int i = 25;

class MyClass {
  final bool b;
  const MyClass() : b = true || (null as String).length > 14;
}

main() {
  const bool a1 = (i > 0) || ((null as String).length > 14);
  Expect.isTrue(a1);

  const bool a2 = true || ((null as String).length > 14);
  Expect.isTrue(a2);

  const MyClass c1 = MyClass();
  Expect.isTrue(c1.b);
}
