Index: test/codegen/lib/mirrors/get_symbol_name_no_such_method_test.dart |
diff --git a/test/codegen/lib/mirrors/get_symbol_name_no_such_method_test.dart b/test/codegen/lib/mirrors/get_symbol_name_no_such_method_test.dart |
new file mode 100644 |
index 0000000000000000000000000000000000000000..1b60ae5b23ccb416f37029bb280df29c3561827a |
--- /dev/null |
+++ b/test/codegen/lib/mirrors/get_symbol_name_no_such_method_test.dart |
@@ -0,0 +1,35 @@ |
+// 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. |
+ |
+/// 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() { |
+ var 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)); |
+} |