// Copyright (c) 2013, 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.

// @dart = 2.9

/// Test that MirrorSystem.getName works correctly on symbols returned from
/// Invocation.memberName.  This is especially relevant when minifying.

import 'dart:mirrors' show MirrorSystem;

class Foo {
  String noSuchMethod(Invocation invocation) {
    return MirrorSystem.getName(invocation.memberName);
  }
}

expect(expected, actual) {
  if (expected != actual) {
    throw 'Expected: "$expected", but got "$actual"';
  }
}

main() {
  dynamic foo = new Foo();
  expect('foo', foo.foo);
  expect('foo', foo.foo());
  expect('foo', foo.foo(null));
  expect('foo', foo.foo(null, null));
  expect('foo', foo.foo(a: null, b: null));

  expect('baz', foo.baz);
  expect('baz', foo.baz());
  expect('baz', foo.baz(null));
  expect('baz', foo.baz(null, null));
  expect('baz', foo.baz(a: null, b: null));
}
