blob: 199d3961e7fbfe8d21ddc42478d92dfe40ab44d9 [file] [log] [blame]
// Copyright (c) 2011, 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 Execution of an assert statement assert(e);
/// proceeds as follows:
/// The conditional expression e is evaluated to an object o. If the class of o
/// is a subtype of Function then let r be the result of invoking o with no
/// arguments. Otherwise, let r be o. It is a dynamic type error if o is not of
/// type bool or of type Function, or if r is not of type bool. If r is false,
/// we say that the assertion failed. If r is true, we say that the assertion
/// succeeded. If the assertion succeeded, execution of the assert statement is
/// complete. If the assertion failed, an AssertionError is thrown.
/// @description Checks that a compile error occurs if the conditional
/// expression e evaluates to a function that returns a function that returns a
/// value of type bool.
/// @author rodionov
typedef bool boolfunc();
boolfunc foo() {
return (() => true);
main() {
assert (foo);
// ^
// [analyzer] unspecified
// [cfe] unspecified