blob: 8e0735b2b060b571e3da035d89acc440e49870a0 [file] [log] [blame]
/*
* 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 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);
}