  // Copyright (c) 2016, 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 int parse(String source, {int radix, int onError(String source)})
/// Parse source as a, possibly signed, integer literal and return its value.
/// ...
/// If the source is not a valid integer literal, optionally prefixed by a sign,
/// the onError is called with the source as argument, and its return value is
/// used instead. If no onError is provided, a FormatException is thrown.
///
/// The onError handler can be chosen to return null. This is preferable to to
/// throwing and then immediately catching the FormatException. Example:
///
/// var value = int.parse(text, onError: (source) => null);
/// if (value == null) ... handle the problem
/// The onError function is only invoked if source is a String. It is not invoked
/// if the source is, for example, null.
/// @description Checks that the onError function is only invoked if source is
/// a String. It is not invoked if the source is, for example, null
/// @author sgrekhov@unipro.ru

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

dynamic getNull() => null;

main() {
  Expect.throws(() => int.parse(getNull()));

  dynamic val = 5;
  Expect.throws(() => int.parse(val));
}
