/*
 * 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 In checked mode, 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 dynamic type error occurs if the conditional expression e 
 * is a list literal.
 * @static-warning
 * @author rodionov
 * @reviewer iefremov
 */

import "../../Utils/dynamic_check.dart";

main() {
  checkTypeError(() {
    assert([true, false]); /// static type warning
  });
}
