// 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 Undocumented
 * @description Checks that this constructor executes without error for various
 * sets of arguments (including null).
 * @author rodionov
 */

Symbol sym ([String s = '']) => new Symbol(s);

main() {
  new NoSuchMethodError(null, sym(), null, null);
  new NoSuchMethodError(null, sym(), [], {});
  new NoSuchMethodError(null, sym(), [null], {sym("a"): null});
  new NoSuchMethodError(null, sym("foo"), [1, 2], {sym("foo"): "bar"});
  new NoSuchMethodError("foo", sym(), [1, 2], {sym("foo"): "bar"});
  new NoSuchMethodError("foo", sym("foo"), [], {});
  String foo = "foo";
  new NoSuchMethodError(foo, sym(foo), [foo], {sym(): foo});
}
