Index: tests/lib/mirrors/metadata_constructor_arguments_test.dart |
diff --git a/tests/lib/mirrors/metadata_constructor_arguments_test.dart b/tests/lib/mirrors/metadata_constructor_arguments_test.dart |
new file mode 100644 |
index 0000000000000000000000000000000000000000..59066fa3a9de8db87a77d89ae4631326dacd297d |
--- /dev/null |
+++ b/tests/lib/mirrors/metadata_constructor_arguments_test.dart |
@@ -0,0 +1,60 @@ |
+// 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. |
+ |
+// Regression test for Issue 13817. |
+ |
+library test.metadata_constructor_arguments; |
+ |
+import 'dart:mirrors'; |
+import 'package:expect/expect.dart'; |
+ |
+class Tag { |
+ final name; |
+ const Tag({named}) : this.name = named; |
+} |
+ |
+@Tag(named: undefined) /// 01: compile-time error |
+class A {} |
+ |
+@Tag(named: 'valid') |
+class B {} |
+ |
+@Tag(named: C.STATIC_FIELD) |
+class C { |
+ static const STATIC_FIELD = 3; |
+} |
+ |
+@Tag(named: D.instanceMethod()) /// 02: compile-time error |
+class D { |
+ instanceMethod() {} |
+} |
+ |
+@Tag(named: instanceField) /// 03: compile-time error |
+class E { |
+ var instanceField; |
+} |
+ |
+@Tag(named: F.nonConstStaticField) /// 04: compile-time error |
+class F { |
+ static var nonConstStaticField = 6; |
+} |
+ |
+@Tag(named: instanceMethod) /// 05: compile-time error |
+class G { |
+ instanceMethod() {} |
+} |
+ |
+checkMetadata(DeclarationMirror mirror, List expectedMetadata) { |
+ Expect.listEquals(expectedMetadata.map(reflect).toList(), mirror.metadata); |
+} |
+ |
+main() { |
+ reflectClass(A).metadata; |
+ checkMetadata(reflectClass(B), [const Tag(named: 'valid')]); |
+ checkMetadata(reflectClass(C), [const Tag(named: C.STATIC_FIELD)]); |
+ reflectClass(D).metadata; |
+ reflectClass(E).metadata; |
+ reflectClass(F).metadata; |
+ reflectClass(G).metadata; |
+} |