/*
 * 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 is now short-circuit in constant and potentially
 * constant expressions. It only attempts to evaluate the second operand if the
 * first operand evaluates to [true]. This makes [false && (null as
 * String).length] a valid constant expression. The second operand expression
 * still needs to be a potentially constant expression, which is a new use of
 * potentially constant expressions outside of [const] constructor initializer
 * lists.
 * @description Checks that [&&] throws error if the first operand of [&&]
 * operation is [true] and the second one is not valid in the potentially
 * constant expression.
 * @author iarkh@unipro.ru
 */

class MyClass {
  final bool b;
  const MyClass(Object o) : b = true && ((o as int) < 23);
}

main() {
  const MyClass c1 = MyClass("testme");
//                   ^
// [analyzer] unspecified
// [cfe] unspecified

}
